Моя страничка...)
Добро пожаловать...
Готовые алгоритмы

Если вы заметили на сайте какие либо неточности (ошибки, неработающие ссылки), просьба сообщить об этом на E-mail: max-programma@yandex.ru Этим вы поможете не только мне, но и тем, кто посетит сайт после вас.

По вопросам получения исходных кодов писать туда же,
на max-programma@yandex.ru.

      07.10.2012
   Волновой алгоритм

Волновой алгоритм — алгоритм, позволяющий найти минимальный путь в графе с рёбрами единичной длины. Основан на алгоритме поиска в ширину. Применяется для нахождения кратчайшего пути в графе, в общем случае находит лишь его длину.
Волновой алгоритм — один из основных при автоматизированной трассировке (разводке) печатных плат. Также одно из характерных применений волнового алгоритма — поиск кратчайшего расстояния на карте в стратегических играх.

Суть алгоритма
На двумерной клетчатой карте (матрице), состоящей из «проходимых» и «непроходимых» клеток, обозначена клетка старта и клетка финиша. Цель алгоритма — проложить кратчайший путь от клетки старта к клетке финиша, если это, конечно, возможно. От старта во все направления распространяется волна, причем каждая пройденная волной клетка помечается как «пройденная». Волна, в свою очередь, не может проходить через клетки, помеченные как «пройденные» или «непроходимые». Волна движется, пока не достигнет точки финиша или пока не останется непройденных клеток. Если волна прошла все доступные клетки, но так и не достигла клетки финиша, значит, путь от старта до финиша проложить невозможно. После достижения волной финиша, от финиша прокладывается путь до старта и сохраняется в массиве.

Разновидности
Заполнение по матрице в 4 направления, он же алгоритм Ли — более точный, но менее быстрый метод.
Заполнение по матрице в 8 направлений — более быстрый, но менее точный метод. Путь по диагонали приблизительно в 1.4 раза больше, чем по горизонтали и вертикали, именно поэтому клетки, расположенные по диагонали, имеют коэффициент +3, а по горизонтали и вертикали - коэффициент +2.
Существует так же алгоритм A* (A-star) — направленный волновой алгоритм.

Реализация
Среда разработки: Borland C++ Builder
Интерфейс: графический
Разновидность: по матрице в 4 направления
Содержимое проекта:
            Img\
            Project_Trass.bpr
            Project_Trass.cpp
            Project_Trass.res
            Unit_DataIn.cpp
            Unit_DataIn.ddp
            Unit_DataIn.dfm
            Unit_DataIn.h
            Unit_Trass.cpp
            Unit_Trass.ddp
            Unit_Trass.dfm
            Unit_Trass.h
Демка: ЕСТЬ

Оплатить с помощью Яндекс-Денег:



 
Главная | Программирование для PC | Готовые алгоритмы | Ссылки

Hosted by uCoz