Материал: 2426

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Методики и алгоритмы поиска кратчайшего пути на графах можно разделить на две группы: методики и алгоритмы неинформированного (слепого) поиска и методики и алгоритмы информированного (эвристического) поиска.

К первой группе относятся: поиск в ширину (BFS, Breadth-first search, волновой алгоритм); поиск в глубину (DFS, Depth-first search);

поиск с ограничением глубины; поиск в глубину с итеративным углублением; двунаправленный поиск [74, 175, 234].

В методах неинформированного поиска узлы графа или состояния делятся на две группы: целевое (в рассматриваемой задаче одно) и нецелевые (т.е. все прочие). Нецелевые узлы/состояния при этом не различаются между собой по степени их «перспективности» с точки зрения нахождения оптимального решения. Расположение цели не влияет на порядок, в котором раскрываются вершины, т.е. поиск идет во всех возможных направлениях одновременно.

Поиск в ширину – наиболее простая неинформированная стратегия. Развертывается начальный узел, затем все преемники начального узла, после этого развертываются преемники этих преемников и т.д. При поиске в ширину, прежде чем происходит развертывание какихлибо узлов на следующем уровне, развертываются все узлы на текущей глубине.

При поиске в ширину необходим большой объем памяти (значительная пространственная сложность). Это может представлять гораздо большую проблему, чем временная сложность метода.

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

При поиске в глубину (DFS – Depth First Search, бэктрекинг, поиск с возвращением) всегда развертывается самый глубокий узел в текущей периферии дерева поиска. Суть этого метода – продвижение вперед в неисследованную область, пока это возможно. Если вокруг все уже исследовано, необходимо отступить на шаг назад и искать новые пути для продвижения вперед. Главное отличие от поиска в ширину состоит в том, что при поиске в глубину в качестве активной выбирается та из открытых вершин (вершина, у которой не все инцидентные ребра уже исследованы), которая была посещена последней. Достоинством поиска в глубину является малая пространственная сложность.

40

Двунаправленный поиск заключается в том, что запускаются два одновременных поиска в ширину из начального и конечного узлов. Остановка происходит, когда узел из одного фронта поиска находит узел из другого фронта (рис. 1.11, а). Это позволяет сократить как время вычислений, так и объем используемой памяти. Площадь двух небольших кругов (см. рис. 1.11, а) меньше площади одного большого круга с центром в начальном узле, который охватывает конечный узел поиска (рис. 1.11, б).

1

2

1

2

а)

б)

Рис. 1.11. Схематическое представление двунаправленного (а) и однонаправленного (б) поиска в ширину: 1 – начальный узел; 2 – конечный узел

Поиск с ограничением глубины – это поиск в глубину с заранее определенным пределом глубины l. Т.е. узлы на глубине l рассматриваются как не имеющие преемников. Применение предела глубины позволяет не рассматривать бесконечные или слишком длинные пути.

Поиск в глубину с итеративным углублением заключается в постепенном увеличении глубины поиска (который сначала принимается равным 0 шагов, затем 1, 2 и т.д. шагов) до тех пор, пока не будет найдена цель. При этом сочетаются преимущества поиска в глубину и поиска в ширину. Как и поиск в глубину, он характеризуется малой пространственной сложностью. Как и поиск в ширину, он является полным, если коэффициент ветвления (максимальное количество преемников любого узла) конечен, и оптимальным, если стоимость пути представляет собой неубывающую функцию глубины узла [137, 175].

В табл. 1.1 приведено сравнение стратегий неинформированного поиска по четырем показателям эффективности, приведенным выше (полнота, оптимальность, временная сложность, пространственная сложность) согласно [175]. Используются следующие обозначения: b

41

коэффициент ветвления; d – глубина самого глубокого решения; m – максимальная глубина дерева поиска; l – предел глубины; c* – стоимость оптимального решения для метода поиска по критерию стоимо-

сти. Ограничения, обозначенные верхними индексами, означают следующее: а – метод полный, если коэффициент ветвления b конечен; б

метод полный, если стоимость каждого этапа ≥ε при некотором положительном значении ε; в – метод оптимальный, если стоимости всех этапов являются одинаковыми; г – метод применим, если в обоих направлениях осуществляется поиск в ширину.

Таблица 1.1. Сравнение методов неинформированного поиска на графах

Характе-

Поиск

Поиск по кри-

Поиск

Поиск с

Поиск

с

Двунаправ-

ограни-

итератив-

ленный по-

ристика

в ши-

терию стои-

в глу-

чением

ным

уг-

иск (если он

 

рину

мости

бину

глубины

лублением

применим)

 

 

 

 

Полнота

Даа

Даа, б

Нет

Нет

Даа

 

Даа, г

Временная

O(bd+l)

O(bl+ ëс* / ε û)

O(bm)

O(bl)

O(bd)

 

O(bd/2)

сложность

 

 

 

 

 

 

 

Простран-

O(bd+l)

O(bl+ ëс* / ε û)

O(bm)

O(bl)

O(bd)

 

O(bd/2)

ственная

 

сложность

 

 

 

 

 

 

 

Оптималь-

Дав

Да

Нет

Нет

Дав

 

Дав, г

ность

 

 

 

 

 

 

 

Алгоритмы неинформированного поиска целесообразно использовать, когда заранее неизвестно расположение цели (переменное положение) либо целей несколько. В настоящей монографии в предположении организованности пространства более целесообразным представляется использование методов информированного поиска.

К группе методов информированного поиска относятся: «жадный» поиск «по первому наилучшему совпадению», или best-first search (алгоритмы Дейкстры, Беллмана-Форда); алгоритм Аcтар (альтернативные названия: A*, «А-звездочка», направленный волновой алгоритм); алгоритм A* с итеративным углублением (IDA*); рекурсивный поиск по первому наилучшему совпадению (Recursive BestFirst Search – RBFS); упрощенный поиск A* с ограничением памяти

(SMA* – Simplified Memory-bounded А*); алгоритмы роевого интел-

лекта (муравьиных колоний, роя частиц и др.).

Методики и алгоритмы информированного поиска перечислены в порядке возрастания их эффективности [137, 175, 241].

Охарактеризовать временную и пространственную сложности алгоритмов информированного поиска довольно трудно, т.к. она зави-

42

сит и от точности эвристической функции, и от вычислительной реализации алгоритма, и от того, насколько часто происходит смена наилучшего пути по мере развертывания узлов, и т.п.

A* является более эффективным алгоритмом, чем поиск в ширину (волновой алгоритм) [224, 234]. Алгоритмы RBFS и SMA* представляют собой надежные, оптимальные алгоритмы поиска, в которых используются ограниченные объемы памяти. При наличии достаточного количества времени эти алгоритмы могут решать такие задачи, которые не позволяет решать алгоритм А*, поскольку исчерпыва-

ет доступную память [74, 175, 224, 232, 241].

Методики эвристического поиска используют известные знания, специфические для конкретной задачи. Информированные методики поиска находят решения более эффективно, чем слепые, при этом расходуется меньший объем памяти. Эвристическая информация о глобальном характере графа и общем расположении цели поиска может быть использована для направления поиска в сторону цели, раскрывая в первую очередь наиболее «перспективные» узлы графа. Общее обозначение методов информированного поиска, связанных с выбором наилучшего варианта, – BFS (best-first search). Ключевой компонентой информированных методов является эвристическая функция h(n), которая оценивает наименьшую стоимость пути от узла n до целевого узла. Эвристику можно рассматривать в качестве некоторого правила влияния, которое, хотя и не гарантирует успеха, в большинстве случаев оказывается весьма полезным [74, 175, 224, 232, 234, 241].

Основной проблемой эвристических методов является правильный подбор эвристической функции, которая, с одной стороны, позволяет сократить временную и пространственную сложность алгоритма, с другой стороны, должна обеспечивать оптимальность поиска. Если h близка к истинной стоимости оставшегося пути, то эффективность будет высокой. С другой стороны, если h будет слишком низким, это отразится на эффективности в худшую сторону. Подбор зачастую осуществляется опытным путем и представляет собой поиск компромисса между временной и пространственной сложностью алгоритма и его оптимальностью. В случае неправильного подбора эвристической функции не гарантируется оптимальность найденной траектории [175].

Способы дискретизации непрерывного пространства с препят-

ствиями при поиске на графах. Исходя из специфики рассматриваемой задачи, существенное, а в некоторых случаях определяющее, влияние на эффективность поиска оптимальной траектории на графе

43

может оказывать способ описания (дискретизации) непрерывного пространства с препятствиями. Можно выделить три способа определения вершин графа для описания пространства с препятствиями

[175, 212, 221, 234]:

1) нанесение сетки на пространство, не занятое препятствиями, либо рандомизация свободного пространства (рис. 1.12, а, б, в, рис. 1.13); 2) скелетирование свободного пространства (рис. 1.14); 3) рассмотрение точек только на поверхности препятствий (рис. 1.15).

Начальный узел

Препятствия

Конечный узел

а)

Начальный узел

Препятствия

Конечный узел

б)

в)

Рис. 1.12. Способы дискретизации пространства, двухмерный пример: а – способ C-Cells; б – способ квадрантных деревьев; в – треугольная, квадратная и шестигранная (гексагональная) сетки

Каждый подход имеет свои достоинства и недостатки. Сетка может быть нанесена равномерно (способ C-Cells, см. рис. 1.12, а, в) либо неравномерно (квадрантные деревья, см. рис. 1.12, б). C-Cells – наиболее простой способ, при котором возможно неявное описание графа с помощью начального состояния и функции определения преемников.

44