Двунаправленный поиск - Bidirectional search

Двунаправленный поиск это алгоритм поиска по графу что находит кратчайший путь с начального вершина в вершину цели в ориентированный граф. Он выполняет два одновременных поиска: один вперед от начального состояния и один назад от цели, останавливаясь, когда они встречаются. Причина этого подхода в том, что во многих случаях он быстрее: например, в упрощенной модели сложности задачи поиска, в которой оба поиска расширяют дерево с фактор ветвления б, а расстояние от старта до цели равно d, каждый из двух поисков имеет сложность О(бd/2) (в Обозначение Big O ), а сумма этих двух времен поиска намного меньше, чем О(бd) сложность, которая возникла бы в результате одного поиска от начала до цели.

Эндрю Голдберг и другие объяснили правильные условия завершения для двунаправленной версии Алгоритм Дейкстры.[1]

Как в А * поиск, двунаправленный поиск может управляться эвристический оценка оставшегося расстояния до цели (в прямом дереве) или от начала (в обратном дереве).

Ира Поль (1971 ) был первым, кто разработал и реализовал алгоритм двунаправленного эвристического поиска. Деревья поиска, исходящие из начального и целевого узлов, не смогли встретиться в середине пространства решений. Алгоритм BHFFA исправил этот недостаток Champeaux (1977).

Решение, найденное однонаправленным алгоритмом A * с использованием допустимой эвристики, имеет кратчайший путь; то же свойство имеет место и для двунаправленной эвристической версии BHFFA2, описанной в de Champeaux (1983). BHFFA2 имеет, среди прочего, более осторожные условия завершения, чем BHFFA.

Описание

Двунаправленный эвристический поиск - это поиск в пространстве состояний из какого-то государства в другое государство , поиск из к и из к одновременно. Он возвращает действительный список операторов, которые, если они применяются к даст нам .

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

Точно так же для тех ребер, которые имеют обратные дуги (т. Е. Дуги, идущие в обоих направлениях), не обязательно, чтобы каждое направление имело равную стоимость. При обратном поиске всегда будет использоваться обратная стоимость (то есть стоимость дуги в прямом направлении). Более формально, если это узел с родителем , тогда , определяемая как стоимость от к . (Ауэр Кайндль 2004).

Терминология и обозначения

то фактор ветвления дерева поиска
стоимость перехода с узла узел
стоимость от корня до узла
эвристическая оценка расстояния между узлами и цель
начальное состояние
состояние цели (иногда , не путать с функцией)
текущее направление поиска. Условно, равно 1 для прямого направления и 2 для обратного направления (Kwa 1989)
противоположное направление поиска (т.е. )
дерево поиска в направлении d. Если , корень , если , корень
листья (иногда называемый ). Именно из этого набора выбирается узел для расширения. В двунаправленном поиске их иногда называют «границами» или «фронтами волн», имея в виду то, как они выглядят при графическом представлении поиска. В этой метафоре «столкновение» происходит, когда во время фазы расширения обнаруживается, что узел из одного волнового фронта имеет последователей в противоположном волновом фронте.
нелистовые узлы . Этот набор содержит узлы, уже посещенные поиском

Подходы к двунаправленному эвристическому поиску

Двунаправленные алгоритмы можно в общих чертах разделить на три категории: Front-to-Front, Front-to-Back (или Front-to-End) и поиск по периметру (Kaindl Kainz 1997). Они различаются функцией, используемой для вычисления эвристики.

Спереди назад

Алгоритмы Front-to-Back рассчитывают значение узла используя эвристическую оценку между и корень противоположного дерева поиска, или же .

Front-to-Back - наиболее активно исследуемая из трех категорий. Текущий лучший алгоритм (по крайней мере, в Пятнадцать пазлов domain) - это алгоритм BiMAX-BS * F, созданный Ауэром и Каиндлом (Auer, Kaindl 2004).

Спереди на передний план

Алгоритмы Front-to-Front вычисляют час значение узла п используя эвристическую оценку между п и некоторое подмножество . Канонический пример - это BHFFA (Двунаправленный эвристический алгоритм прямого доступа ),[2] где час Функция определяется как минимум всех эвристических оценок между текущим узлом и узлами на противоположном фронте. Или формально:

куда возвращает допустимую (т.е. не завышающую) эвристическую оценку расстояния между узлами п и о.

Front-to-Front страдает от чрезмерных вычислительных затрат. Каждый раз, когда узел п помещается в открытый список, его значение должно быть рассчитано. Это включает вычисление эвристической оценки из п к каждому узлу в противостоящей ОТКРЫТО установить, как описано выше. В ОТКРЫТО устанавливает экспоненциально увеличивающийся размер для всех доменов с б > 1.

Рекомендации

  • де Шампо, Деннис; Синт, Лени (1977), "Улучшенный алгоритм двунаправленного эвристического поиска", Журнал ACM, 24 (2): 177–191, Дои:10.1145/322003.322004.
  • де Шампо, Деннис (1983), «Снова двунаправленный эвристический поиск», Журнал ACM, 30 (1): 22–32, Дои:10.1145/322358.322360.
  • Поль, Ира (1971), «Двунаправленный поиск», у Мельцера, Бернарда; Мичи, Дональд (ред.), Машинный интеллект, 6, Edinburgh University Press, стр. 127–140..
  • Рассел, Стюарт Дж.; Норвиг, Питер (2002), "3.4 Стратегии неинформированного поиска", Искусственный интеллект: современный подход (2-е изд.), Прентис Холл.