Логическое программирование на языке Visual Prolog. Солдатова О.П - 64 стр.

UptoLike

64
3.2 Основные стратегии поиска решений в пространстве
состояний
3.2.1 Поиск в глубину
Программа решения задачи о N ферзях реализует стратегию поиска в
глубину. Под термином «в глубину» имеется в виду тот порядок, в котором
рассматриваются альтернативы в пространстве состояний. Всегда, когда
алгоритму поиска в глубину надлежит выбрать из нескольких вершин ту, в
которую следует перейти для продолжения поиска, он предпочитает самую
«глубокую» из них. Самая глубокая вершинаэто вершина, расположенная
дальше других от стартовой вершины. На следующем рисунке показан
пример, который иллюстрирует работу алгоритма поиска в глубину. Этот
порядок в точности соответствует результату трассировки процесса
вычислений при поиске решения.
Порядок
обхода вершин указан пунктирными стрелками, a – начальная
вершина, j и f – целевые вершины.
Поиск в глубину наиболее адекватен рекурсивному стилю
программирования, принятому в Прологе. Причина этого состоит в том, что
обрабатывая цели, Пролог сам просматривает альтернативы именно в
глубину.
На Прологе переход от одной проблемной ситуации к другой может
быть представлен при помощи
предиката after (X, Y, C), который истинен
тогда, когда в пространстве состояний существует разрешенный ход из
вершины X в вершину Y, стоимость которого равна C. Предикат after может
быть задан в программе явным образом в виде фактов, однако такой принцип
a
b
c
d
e f
g
h i
j
k