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 с.