Программирование на языке Пролог для искусственного интеллекта


         

Ни одну из вершин, уже


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

        вглубину( Путь, Верш, Решение)

Как видно из рис. 11.6, Верш - это состояние, из которого необходимо найти путь до цели; Путь - путь (список вершин) между стартовой вершиной и Верш; Решение

- Путь, продолженный до целевой вершины.



Рис. 11. 6.  Отношение вглубину( Путь, В, Решение).

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

нужен для того,

(1)        чтобы не рассматривать тех преемников вершины Верш, которые уже встречались раньше (обнаружение циклов);

(2)        чтобы облегчить построение решающего пути Решение. Соответствующая программа поиска в глубину показана на рис. 11.7.

line();

        решить( Верш, Решение) :-

                вглубину( [ ], Верш, Решение).


        вглубину( Путь, Верш, [Верш | Путь] ) :-

                цель( Верш).


        вглубину( Путь, Верш, Реш) :-

                после( Верш, Верш1),

                not принадлежит( Верш1, Путь),


                                        % Цикл ?

                вглубину( [Верш | Путь], Верш1, Реш).


Содержание  Назад  Вперед





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