
- •Разработка программного модуля реализация волнового алгоритма для поиска пути в лабиренте
- •Http://ru.Wikipedia.Org/wiki/%d0%92%d0%be%d0%bb%d0%bd%d0%be%d0%b2%d0%be%d0%b9_%d0%b0%d0%bb%d0%b3%d0%be%d1%80%d0%b8%d1%82%d0%bc - Волновой алгоритм
- •Волновой алгоритм. Нахождение пути в лабиринте
- •Как работает волновой алгоритм?
- •Алгоритм поиска пути в лабиринте - волновой алгоритм
- •Волновой алгоритм
- •Суть алгоритма
- •Разновидности
- •Практическое применение
- •2.1. Волновой алгоритм (Алгоритм Ли)
- •2.2. Маршрутный алгоритм
- •2.2.1. Маршрутный алгоритм основанный на вычислении расстояния между точками.
- •2.2.2. Маршрутный алгоритм основанный на рекуррентном соотношении.
- •3. Алгоритм нахождения пути на карте
- •Маршрутный алгоритм
- •Маршрутный алгоритм, основанный на вычислении расстояния между точками
- •Маршрутный алгоритм, основанный на рекуррентном соотношении
2.1. Волновой алгоритм (Алгоритм Ли)
Волновой алгоритм является одним из самых уникальных алгоритмов трассировки. Он позволяет построить трассу(путь) между двумя элементами в любом лабиринте.
Рис 1. |
Из начального элемента распространяется в 4-х направлениях волна (рис1.). Элемент в который пришла волна образует фронт волны.На рисунках цифрами обозначены номера фронтов волны. |
||||
|
Каждый элемент первого фронта волны является источником вторичной волны (рис 2.). Элементы второго фронта волны генерируют волну третьего фронта и т.д. Процесс продолжается до тех пор пока не будет достигнут конечный элемент. На втором этапе строится сама трасса. Её построение осуществляется в соответствии со следующими правилами:
|
Приоритеты направления движения выбираются на стадии разработки. В зависимости от того какими задаются эти приоритеты получаются разные трассы, НО длина трассы в любом случае остается одной и той же.
Преимущества волнового алгоритма в том, что с его помощью можно найти трассу в любом лабиринте и с любым количеством запретных элементов (стен). Единственным недостатком этого алгоритма является, то что при построении трассы требуется большой объем памяти.
2.2. Маршрутный алгоритм
Маршрутный алгоритм имеет две разновидности:
|
Основанный на вычислении расстояния между точками; |
|
Основанный на рекуррентном соотношении. |
Маршрутный алгоритм получил свое название, потому что осуществляет одновременно и формирование фронта и прокладывание трассы. Источником волны на каждом шаге является конечный элемент участка трассы проложенной на предыдущих шагах.
2.2.1. Маршрутный алгоритм основанный на вычислении расстояния между точками.
Работа алгоритма начинается от начального элемента. При этом вокруг начального элемента рассматривается 8-ми элементная окрестность. От каждого элемента окрестности до конечного элемента оценивается длина пути. При этом расстояние между точками вычисляется по формуле:
D=|Xi-XB|+|Yi-YB|,
где (Xi, Yi) – Координаты точки окрестности. (XВ, YВ)- Координаты конечного элемента.
Таким образом, вычисляется восемь значений, из которых выбирается минимальное. Элемент, от которого расстояние оказалось минимальным, выбирается в качестве элемента трассы. Вокруг него снова рассматривается 8-ми элементная окрестность. Процесс продолжается до тех пор пока не будет достигнут конечный элемент. Если на пути встречается препятствие в виде запрещенного элемента, то обход препятствия осуществляется исходя из интуиции разработчика. При этом задаются направления обхода препятствия.