Re: Поиск пути [Delphi 6] [Win98]
[23.07.2004 13:32] Обнаружено письмо от Lakmus
[23.07.2004 13:32] Тема "Поиск пути [Delphi 6] [Win98]"
L> Hello all!
L> Нужен алгоритм поиска пути.
L> Допустим дан двухмерный массив map[0..100,0..200]: boolean;
L> Если map[x,y]=false тогда точка пуста
L> Если map[x,y]=true тогда в точке стена, которую следует обойти.
L> нужно определить кратчайший путь из точки
L> map[x_nachalo,y_nachalo] в точку
L> map[x_konec,y_konec]
L> при этом нельзя ходить по диагонали(!) можно только вправо, влево, вверх и
L> вниз.
L> Также нужно, чтобы была функция "расстояние в шагах между
L> map[x_nachalo,y_nachalo] и [x_konec,y_konec]".
Вообще все зависит от свойств стен :)
Вообще если задачу нужно выполнить точно, то можно воспользоваться
волновым алгоритмом:
Строим двумерный массив в каждом элементе - направление, и расстояние
по этому направлению до конечного пункта.
Затем пробегаем массив. Можно оптимизировать добавив еще один член
в элемент массива - булевую переменную (нужно мерить или нет). Для
каждого элемента смотрим вокруг элемент с минимальным расстоянием, и
на него указываем направление. После прохода когда не изменился ни
один элемент - карта готова. Берем стартовую точку и по направлениям
рисуем путь. Значение расстояния если нужно, оно есть :)
Способ требует много времени, поэтому если конечная точка неподвижна,
карту можно не перестраивать.
С пожеланием доброго времени суток,
Олень Элмо
JabberID: da.el***@j*****.ru
gpg --keyserver pgp.mit.edu --search-keys da.el***@m*****.ru
Key fingerprint = 273C 4245 7209 240B E880 81E0 B22E 4291 77DB FB8C
Номер выпуска : 3434
Возраст листа : 305 (дней)
Количество подписчиков : 446
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/196748
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru