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




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


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

line();

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

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

        вширину( [ [В | Путь] | Пути], Решение ) :-
                bagof( [B1, В | Путь ],
                ( после( В, В1), not  принадлежит( В1, [В | Путь])),
                НовПути),

                        % НовПути - ациклические продолжения пути [В | Путь]
                конк( Пути, НовПути, Пути1),  !,
                вширину( Путь1, Решение);
                вширину( Пути, Решение).

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

line();

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

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


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