![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 189
|
Вот этот то момент и не ясен. (((
Мы возвращаемся по своим следам, но как мы спрямляем путь? |
|
|||||
|
Цитата:
|
|
|||||
|
На практике на картах 200 на 200 быстрее использовать алгоритм "заливки цветом" (или волновой, кому как приятнее), работает так: есть карта, где 0x000000 - не проходимое поле, 0xFFFFFF - проходимое. Заливаем точку начала 0x000000 +1 цветом, все соседние 0x000000 + 2, если цвет численно меньше лежащего там. Доходим до точки конца, идём обратно по уменьшению значения цвета.
Преимущества: 1) не создаётся лишних экземпляров объектов (весь процесс можно свести к перемещению индекса в отклонированном ByteArray проходимости карты и стеку волны в массиве), что на практике, как ни странно гораздо быстрее (по тестам 150мс double A* против 5 мс - заливкой цветом). 2) Ищется идеальный путь.
__________________
if (love is true) break my.heart; Последний раз редактировалось Rzer; 08.02.2011 в 18:56. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|