УДК 004.021
ПРОБЛЕМА АВТОМАТИЗАЦИИ ПОСТРОЕНИЯ СХЕМ МАРШРУТОВ ПЕШЕГО ТУРИЗМА В ГОРНЫХ МАССИВАХ КРАСНОЯРСКОГО КРАЯ
Д. А. Крутько Научный руководитель - В. В. Тынченко
Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
E-mail: krutko.d00@gmail.com
Рассматриваются проблематика и подходы к автоматизированному построению схем маршрутов пешего туризма в горных массивах Красноярского края с использованием данных GPS-навигации.
Ключевые слова: алгоритмы поиска, кратчайший путь, графы, построение маршрутов.
THE PROBLEM OF AUTOMATING THE HIKING ROUTES CONSTRUCTION IN THE KRASNOYARSK TERRITORY MOUNTAIN RANGES
D. A. Krutko Scientific supervisor - V. V. Tynchenko
Reshetnev Siberian State University of Science and Technology 31, Krasnoyarskii rabochii prospekt, Krasnoyarsk, 660037, Russian Federation E-mail: krutko.d00@gmail.com
The problems and approaches to the automated construction of hiking routes in the mountain ranges of the Krasnoyarsk Territory using GPS navigation data are considered.
Keyword: search algorithms, shortest path, graphs, route building.
На сегодняшний день тема поддержания здорового образа жизни является достаточно актуальной. Люди стремятся следить за своим здоровьем, занимаются спортом, а также путешествуют. Среди путешественников сейчас очень популярен пеший туризм в природоохранных зонах Сибирского региона. С целью эффективной организации пеших туров по горным массивам Красноярского края необходимо автоматизировать процесс формирования оптимальных маршрутов в соответствии с заданными критериями отбора. Для разработки такого программного средства, которое позволит в автоматизированном режиме строить свои собственные маршруты по выбранным объектам посещения с использованием данных GPS-навигации, необходимо выполнить анализ существующих алгоритмов, пригодных для решения такой задачи.
Заметим, что задача поиска кратчайшего пути к месту разрыва сводится к задаче поиска кратчайшего пути от одной вершины графа до другой. Данная задача является одной из важнейших задач в теории графов, следовательно, на сегодняшний день существует большое количество алгоритмов по ее решению. Рассмотрим несколько наиболее популярных алгоритмов поиска кратчайшего пути в графе.
Поиск в глубину (DFS) - самый простой алгоритм получения кратчайшего пути. Стратегия поиска в глубину состоит в том, чтобы идти «вглубь» графа, несколько это возможно. Алгоритм описывается рекурсивно: перебираем все исходящие из
Секция «Программные средства и информационные технологии»
рассматриваемой вершины ребра [5]. Если ребро ведет в вершину, которая не была рассмотрена ранее, то запускаем алгоритм от этой нерассмотренной вершины, а после возвращаемся и продолжаем перебирать ребра. Возврат происходит в том случае, если в рассматриваемой вершине не осталось ребер, которые ведут в нерассмотренную вершину. Если после завершения алгоритма не все вершины были рассмотрены, то необходимо запустить алгоритм от одной из нерассмотренных вершин. Причина, по которой нельзя использовать алгоритм для циклических графов, заключается в том, что, когда мы находим путь, мы не можем быть уверены, что это кратчайший путь. ОББ не дает такой гарантии.
Поиск в ширину (ВБ8) - очень полезный алгоритм для поиска кратчайшего пути. Он работает путем последовательного просмотра отдельных уровней графа, начиная с узла-источника. К рассмотрению берутся все ребра (и, у), выходящие из узла и [5]. Если очередной узел у является целевым узлом, то поиск завершается; в противном случае узел у добавляется в очередь. После того, как будут проверены все ребра, выходящие из узла и, из очереди извлекается следующий узел и, и процесс повторяется. Этот алгоритм прост и применим ко всем графам без весов ребер.
Двунаправленный поиск - этот алгоритм применим к неориентированным графам и без весов ребер [4]. Нахождение искомого пути сводится к определению путей от начальной к какой-то промежуточной, а от нее - к конечной вершине. Реализуется с проверкой в одном или обоих процессах, когда лист одного дерева поиска совпадет с листом другого, после чего выделяются пути до этого элемента. Соединив пути, получаем искомый путь. Если два поиска осуществляются параллельно - это еще больше экономит время на получение искомого пути по сравнению с однонаправленным поиском. Основным недостатком алгоритма является необходимость выделения памяти для хранения дерева поиска, чтобы выполнить проверку принадлежности.
Алгоритм Дейкстры - один из самых известных алгоритмов для поиска кратчайшего пути [3]. Его преимущество перед ОББ, ВББ и двунаправленным поиском состоит в том, что его можно использовать во всех графах с положительными весами ребер. Реализация заключается в том, что алгоритм на каждом шаге «посещает» одну вершину и пытается уменьшить метки. Работа алгоритма завершается, когда все вершины посещены. У алгоритма Дейкстры имеется ряд достоинств, таких, как высокая скорость работы, просчет ребер с отрицательным весом и высокая точность результата. Однако есть и недостаток - это сложность в понимании.
Алгоритм Беллмана-Форда, в отличие от алгоритма Дейкстры, может иметь дело с отрицательными весами ребер [2]. Есть только одно ограничение: график не должен содержать отрицательных циклов. Отрицательный цикл - это цикл, сумма граней которого равна отрицательному значению. Однако алгоритм способен обнаруживать отрицательные циклы и поэтому прекращает работу, хотя и без кратчайшего пути. Алгоритм очень похож на алгоритм Дейкстры, но не использует очередь с приоритетами. Вместо этого он многократно проходит по всем ребрам, обновляя расстояния до начального узла аналогично алгоритму Дейкстры. После многократного обхода всех ребер алгоритм снова перебирает все ребра. Если одно из расстояний все еще не оптимально, это значит, что на графике должен быть отрицательный цикл. Недостаток алгоритма в использовании полного перебора всех вершин графа, что приводит к большой потери времени и занимает большой объем памяти.
Алгоритм Флойда-Уоршелла более общий, чем алгоритм Дейкстры. Это динамический алгоритм для нахождения кратчайших расстояний между всеми вершинами взвешенного ориентированного графа. Тем не менее, алгоритм определяет только кратчайшее расстояние между всеми парами вершин, но не сохраняет информации о кратчайших путях, что является существенным недостатком применительно к задачам построения маршрута.
Алгоритм Левита позволяет найти кратчайшие пути от заданной вершины до всех остальных вершин [1]. В сравнении с методом Дейкстры метод Левита проигрывает в том,
что некоторые вершины приходится обрабатывать повторно, а выигрывает на более простых алгоритмах включения и исключения вершин из множества М1 (М1 - вершины, расстояние до которых вычисляется на текущем шаге алгоритма). Установлено, что для графов с «геометрическим» происхождением, т.е. для графов, построенных на основе транспортных сетей и реальных расстояний, метод Левита оказывается наиболее быстрым. Он выигрывает и по размеру программы.
По рассмотрению наиболее важных алгоритмов для получения кратчайшего пути в графе, а также анализу их преимуществ и недостатков в таблице 1 приведен обзор, который поможет решить, какой алгоритм использовать в нужной ситуации, где п - количество узлов, е - количество ребер, g - наибольшее количество соседних узлов для любого узла и ё -длина кратчайшего пути.
Таблица 1
Результаты сравнения алгоритмов поиска кратчайшего пути_
Алгоритм Работа с ребрами Работа с ребрами Ненаправленные Время выполнения
отрицательного положительного циклы
веса веса
Поиск в глубину (ОББ) + + - 0fe + s)
Поиск в ширину (БББ) - - + ßitt 4 «ï ar Ois*")
Двунаправленный поиск - - + ОЫ + ei) nr
Алгоритм Дейкстры - + + ff(p f ÎI xfajî fs£ Ы
Алгоритм Беллмана-Форда + + +
Алгоритм Флойда-Уоршелла + + - сЮ
Алгоритм Левита + + + Î?ÎT1 *
Проведенный анализ показал, что для эффективного решения задачи построения маршрутов пешего туризма в горных массивах Красноярского края целесообразно использовать алгоритм Левита, так как он учитывает ряд особенностей рассматриваемого процесса. В качестве приоритетных направлений решения задачи построения маршрута следует отметить разработку алгоритма выделения актуального подграфа на предварительном этапе, разработку решающих правил, учитывающих координаты GPS-треков, расчет широты и долготы желаемых объектов посещения, а также перепады высот горных массивов.
Библиографические ссылки
1. Алгоритм Левита - алгоритмы поиска на графах [Электронный ресурс]. URL: https://amp.ww.google-info.Org/3957083/1/algoritm-levita.html (дата обращения: 22.03.2021).
2. Алгоритмы. Построение и анализ. /Кормен Т. Х., Лейзерсон Ч. И., Ривест Р. Л., Штайн К./ MIT Press, «Вильямс» (2005) (дата обращения 15.02.2021).
3. Базовые алгоритмы нахождения кратчайших путей во взвешенных графах [Электронный ресурс]. URL: https://habr.com/ru/post/119158/ (дата обращения: 14.03.2021).
4. Двунаправленный поиск [Электронный ресурс]. URL: http://www.rriai.org.ru/dvunapravlennyiy-poisk.html (дата обращения: 27.03.2021).
5. Обход графа: поиск в глубину и поиск в ширину на примере JavaScript [Электронный ресурс]. URL: https://habr.com/ru/post/504374/ (дата обращения: 25.03.2021).
© Крутько Д. А., 2021