Практическое сравнение алгоритма а* с алгоритмом волновой трассировки (алгоритмом ли) по быстродействию

3. Шнайер Б. Алгоритмы с открытыми ключами // Прикладная криптография. М. Триумф. 2002. 610 с.

4. Коутинхо С. Введение в теорию чисел. Алгоритм RSA. М.: Постмаркет. 2001. 328 с.

Практическое сравнение алгоритма А* с алгоритмом волновой трассировки (алгоритмом Ли) по быстродействию Михайлов И. Е.

Михайлов Илья Евгеньевич /Mikhailov 11уа Yevgenyevich - студент, кафедра компьютерных технологий и систем, факультет прикладной математики - процессов управления, Санкт-Петербургский государственный университет, г. Санкт-Петербург

Аннотация: в данной работе рассматриваются алгоритм А* и алгоритм волновой трассировки. Проводится сравнение эффективности этих алгоритмов по быстродействию на практике.

Ключевые слова: алгоритм А*, алгоритм волновой трассировки, алгоритм Ли, эффективность алгоритма, сравнение алгоритмов по быстродействию.

Существуют различные способы нахождения кратчайшего пути на графах. Среди них рассмотрим алгоритм А* и алгоритм волновой трассировки (алгоритм Ли).

Алгоритм А* - алгоритм поиска по первом наилучшему совпадению на графе, использующий эвристическую функцию, оценивающую длину кратчайшего пути из любой вершины графа в целевую вершину [1, с. 238]. Для построения этой функции была использована метрика Манхэттена [2, с. 276].

Алгоритм волновой трассировки, в отличие от алгоритма А*, является не информированным алгоритмом поиска, поскольку он не использует никакой информации о целевой вершине графа (алгоритм А* в качестве источника такой информации использует эвристическую функцию), за исключением того, что этот алгоритм способен определить, является ли рассматриваемая на очередном шаге вершина целевой. Алгоритм использует метод поиска в ширину [3, с. 631].

Алгоритмы были реализованы на языке программирования С++. Все эксперименты проводились на графе в виде равномерной сетки размером 90 на 90.

Результат первого эксперимента изображен на рис. 1. Оба алгоритма успешно справились с задачей нахождения кратчайшего пути между двумя заданными вершинами графа. Время работы алгоритма А* - 4 мс. Время работы алгоритма волновой трассировки - 3 мс.

Во втором эксперименте алгоритмы также нашли кратчайший путь между вершинами. Время работы алгоритма А* - 5 мс. Время работы алгоритма волновой трассировки - 3 мс. Эксперимент представлен на рис. 2.

Рис. 2. Второй эксперимент

Третий эксперимент характеризуется большим количеством ловушек, которые мешают алгоритмам найти кратчайший путь от начальной вершины к целевой. Результат проиллюстрирован на рис. 3. В этом эксперименте оба алгоритма нашли кратчайший путь, однако время их работы существенно отличается: 56 мс - время работы алгоритма А*, 3 мс - время работы алгоритма волновой трассировки.

- путь Щ - препятствие

Рис. 3. Третий эксперимент

Таким образом, опытным путем было установлено, что алгоритм волновой трассировки справляется со своей задачей быстрее, чем алгоритм А*.

Литература

1. ЛорьерЖ.-Л. Системы искусственного интеллекта. М.: Мир, 1991. 568 с.

2. ДезаЕ., ДезаМ.-М. Энциклопедический словарь расстояний. М.: Наука, 2008. 444 с.

3. Кормен Т. Х., Лейзерсон Ч. И., Ривест Р. Л., Штайн К. Алгоритмы: построение и анализ. 3-е изд. М.: «Вильямс», 2013. 1328 с.