Кратчайший путь в матрице
От: vovik777  
Дата: 14.01.05 16:05
Оценка:
На Pascal'е:

Помогите пожалуйста решить такую задачу:
Дана квадратная матрица NxN.

A11 A12 … A1n
A21 A22 … A2n
…………
An1 An2 … Ann

Нужно найти кратчайший путь из A11 в Ann при условии, что переходить можно только на элемент, который больше или равен настоящему. Двигаться можно во всех направлениях (в т.ч. и по диагонали).

Никак не могу придумать сам алгоритм поиска пути. Хотя бы в какую сторону копать?
Буду очень признателен…
Re: Кратчайший путь в матрице
От: Nev0 Россия  
Дата: 14.01.05 16:10
Оценка:
Здравствуйте, vovik777, Вы писали:

V>На Pascal'е:


V>Помогите пожалуйста решить такую задачу:

V>Дана квадратная матрица NxN.

V>A11 A12 … A1n

V>A21 A22 … A2n
V>…………
V>An1 An2 … Ann

V>Нужно найти кратчайший путь из A11 в Ann при условии, что переходить можно только на элемент, который больше или равен настоящему. Двигаться можно во всех направлениях (в т.ч. и по диагонали).


V>Никак не могу придумать сам алгоритм поиска пути. Хотя бы в какую сторону копать?

V>Буду очень признателен…

Обход в ширину.
Re: Кратчайший путь в матрице
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 16:17
Оценка:
Здравствуйте, vovik777, Вы писали:

Динамическое программирование.

Вкратце:
Если кратчайший путь до вершины a[i,j] обозначить как path(i,j) а расстояние между верщинами a[i,j] и a[k,l] как dist(i,j,k,l)

то

path(i,j) = min(path(i - 1,j) + dist(i - 1, j, i, j), path(i,j - 1) + dist(i, j - 1, i, j), path(i - 1, j - 1) + dist(i - 1, j - 1, i, j))


Теперь надо из вершины 1,1 пустить волну и просчитывать кратчайшие пути до вершин 1,2 2,1 2,2 и т.д.
Надо запоминать получившиеся значение, а не считать их каждый раз заново.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Кратчайший путь в матрице
От: AMogil Россия  
Дата: 15.01.05 07:04
Оценка:
Здравствуйте, vovik777, Вы писали:

V>На Pascal'е:


V>Помогите пожалуйста решить такую задачу:

V>Дана квадратная матрица NxN.

V>A11 A12 … A1n

V>A21 A22 … A2n
V>…………
V>An1 An2 … Ann

V>Нужно найти кратчайший путь из A11 в Ann при условии, что переходить можно только на элемент, который больше или равен настоящему. Двигаться можно во всех направлениях (в т.ч. и по диагонали).


V>Никак не могу придумать сам алгоритм поиска пути. Хотя бы в какую сторону копать?

V>Буду очень признателен…

Например, здесь

Необходимо будет модифицировать.

Алексей.
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.