20. Методы поиска в пространстве состояний: метод перебора в глубину.
Пространство
состояний – это граф, вершины которого
соответствуют ситуациям, встречающимся
в задаче («проблемные ситуации»), а
решение задачи сводится к поиску путей
на этом графе. На самом деле, задача
поиска пути на графе и задача о N
ферзях
- это задачи, использующие одну из
стратегий перебора альтернатив в
пространстве состояний, а именно –с
тратегию поиска в глубину. Со всеми
задачами такого рода связано два типа
понятий: проблемные ситуации; разрешенные
ходы или действия, преобразующие одни
проблемные ситуации в другие. Проблемные
ситуации вместе с возможными ходами
образуют направленный граф, называемый
пространством состояний. Пространство
состояний некоторой задачи определяет
«правила игры»: вершины пространства
состояний соответствуют ситуациям, а
дуги – разрешенным ходам или действиям,
или шагам решения задачи. Конкретная
задача определяется: пространством
состояний; стартовой вершиной; целевым
условием или целевой вершиной. Каждому
разрешенному ходу или действию можно
приписать его стоимость. Под термином
«поиск в глубину» имеется в виду тот
порядок, в котором рассматриваются
альтернативы в пространстве состояний.
Всегда, когда алгоритму поиска в глубину
надлежит выбрать из нескольких вершин
ту, в которую следует перейти для
продолжения поиска, он предпочитает
самую «глубокую» из них. Самая глубокая
вершина – это вершина, расположенная
дальше других от стартовой вершины.
Поиск в глубину наиболее адекватен
рекурсивному стилю программирования,
принятому в Прологе. Причина этого
состоит в том, что обрабатывая цели,
Пролог сам просматривает альтернативы
именно в глубину.