Почему IDA $ ^ * $ быстрее, чем $ ^ * $?Почему IDA $ ^ * $ посещает больше узлов, чем $ ^ * $?

cs.stackexchange https://cs.stackexchange.com/questions/118121

Вопрос

Я использовал IDA $ ^ * $ для оптимального решения 8-головоломки, и мои друзья использовали $ ^ * $ для него тоже (с же эвристичным расстоянием Манхэттена).

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

Я знаю, IDA $ ^ * $ посещает каждый узел более одного раза, но почему это быстрее, чем $ ^ * $ ?

Это было полезно?

Решение

Поскольку вы уже реализовали IDA $ ^ * $ Вы, безусловно, понимаете, почему он расширяет больше узлов, чем $ ^ * $ , т.е. начинается с начального состояния с новой глубиной прохождения в каждой итерации. Сначала обратите внимание, что общее количество узлов, посетивших IDA $ ^ * $ , при этом обязательно больше, чем $ ^ * $ не так намного больше. Причина в том, что количество узлов с каждой глубиной прогрессирует в соответствии с геометрическими рядами с фактором $ B $ , фактор ветвления. В результате количество узлов на глубине $ d $ , $ b ^ d $ , много Больше, чем сумма всех узлов, расширенных на предыдущих итерациях, т. Е. $ b ^ d> \ sum_ {i= 0} ^ {d-1} b ^ i $ Из этого разницы получается, что IDA $ ^ * $ требует $ \ frac {b} {b-1} $ Дополнительные экспансии, которые асимптотически оптимально, как предел для большого $ B $ 1. Заключение, для любого алгоритма , посетив все узлы На глубине $ d $ гораздо сложнее, чем посещение всех узлов на предыдущих глубинах.

В случае, если вы хотите, чтобы вы хотели бы влюбиться в эту проблему, я настоятельно рекомендую вам читать оригинальную бумагу: korf, Richard E. Deep-First Iterative-Deeping: оптимальный допустимый поиск деревьев. Искусственный интеллект (27), 97-109, 1985. См. В частности, теорема 4.2:

Глубина - первое итеративное углубление асимптотически оптимально брутичные блюдовые ищеты с точки зрения времени, пространства и длины решение.

Конечно, он доставляет оптимальные решения, чтобы допустимо и, следовательно, асимптотически оптимально. Это только практикует первые обходы глубины, и поэтому он асимптотически оптимально с точки зрения пространства (требуется только с хорошей реализацией только $ O (D) $ ).

Как на то время, я уже изложил основную теоретическую причину, но дайте мне знать, выделить три основных причины, по которым это так быстро на практике:

  1. Прежде всего, для почти во всех целях общее время работы любого алгоритма преобладают время, необходимое для расширения узлов (другие операции довольно простые и атомные). Это действительно при расширении узлов, которые IDA $ ^ * $ могут быть чрезвычайно быстрыми, потому что:

    1.1. IDA $ ^ * $ рекурсивно реализован, чтобы все, что вам нужно, это взять состояние, данное в качестве аргумента, и для генерации ребенка за один раз (для вашего конкретного случая это Просто означает обмен пустыми с соседней плитой, это только одно утверждение!). Однако для $ ^ * $ Эксплуатация расширения требует: сначала, выскакивая состояние из очереди, затем генерируя все его дети (то есть, перемещая пустую плитку во всех возможные направления).

    1.2. Хотя предыдущая операция имеет некоторую разницу, действительно важный - это то, что $ ^ * $ требует сортировки узлов в открытом воздухе. Даже если вы сделаете это с 1-ведром (который потребуется $ O (1) $ ), обратите внимание, что IDA $ ^ * $ не требует сортировки узлов вообще, чтобы во время $ ^ * $ требует времени, которое является линейным в количестве расширенных узлов, IDA $ ^ * $ вообще не принимает.

  2. В-третьих, один из вкладов лучших алгоритмов поиска (например, $ ^ * $ ) заключается в том, что они избегают повторного расширения узлов Используя закрытый список (который, несмотря на его имя, обычно реализуется как набор !!). IDA $ ^ * $ не имеет dextate-detection механизмов и, следовательно, опять же, $ ^ * $ выполняет дополнительную операцию, которая вообще не выполняется по IDA $ ^ * $ . Если вы хотите узнать больше о двух экземплярах Duplicate-Detection в IDA $ ^ * $ См.: Reinefeld, A.; Marsland, T. Улучшенный итеративно-углубленный поиск. Операции IEE на анализ шаблона и интеллекта машин (16) 7, 701-710, 1994.

  3. Последняя точка действительно актуальна. В случае головоломки скользящей плиты действительно не так много транспозиций, и самый короткий цикл состоит из 12 ходов, так что количество повторных расширений не так много. Вмещает все это вместе, IDA $ ^ * $ - это убийственная машина для всех размеров головоломки скольжения.

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

С ограниченным успехом см. Например:

Доу, П. Алекс;Корф, Ричард Э. Дублируйте избегание в первом поименных условиях с приложениями к TreeWidth.Международная совместная конференция по искусственному интеллекту, 480-485, 2009 г.

Надеюсь, это поможет,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top