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




Списковое представление множества кандидатов


В нашей первой реализации этой идеи мы будем использовать следующее представление для множества

line();

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

                вширину( [ [Старт] ], Решение).

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

                цель( Верш).

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

                bagof( [B1, В | Путь ],

                ( после( В, В1), not  принадлежит( В1, [В | Путь])),

                НовПути),

                        % НовПути - ациклические продолжения пути [В | Путь]

                конк( Пути, НовПути, Пути1),  !,

                вширину( Путь1, Решение);

                вширину( Пути, Решение).

                                % Случай, когда у В нет преемника

line();

Рис. 11. 10.  Реализации поиска в ширину.

путей-кандидатов. Само множество будет списком путей, а каждый путь - списком вершин, перечисленных в обратном порядке, т. е. головой списка будет самая последняя из порожденных вершин, а последним элементом списка будет стартовая вершина.


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