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




Программа, управляемая образцами, для получения наибольшего общего делителя множества чисел.



  Программа, управляемая образцами, для получения
наибольшего общего делителя множества чисел.

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

        assert ( Объект)                                                     retract( Объект)

Заменить один объект на другой также просто:

        заменить( Объект1, Объект2) :-
                retract( Объект1),  !,
                assert( Объект2).

Здесь задача оператора отсечения - не допустить, чтобы оператор retract удалил из базы данных более чем один объект (при возвратах).

line();

% Простой интерпретатор для программ, управляемых образцами
% Работа с базой данных производится при помощи процедур
% assert и retract

        :- ор( 800, xfx, --->).

        пуск :-
                Условие ---> Действие,
                                % правило
                проверить( Условие),                                     % Условие выполнено?
                выполнить( Действие).

        проверить( [ ]).                                                        % Пустое условие

        проверить( [Усл | Остальные]) :-                         % проверить конъюнкцию
                call( Усл),                                                          % условий
                проверить( Остальные).

        выполнить( [ стоп] ) :-   !.                                       % Прекратить выполнение

        выполнить( [ ]) :-                                             % Пустое действие (цикл завершен)
                пуск.                                                          % Перейти к следующему циклу

        выполнить [Д | Остальные] ) :-
                саll( Д),
                выполнить( Остальные).

        заменить( А, В) :-                                             % Заменить в базе данных А на В
                retract( A),  !,
                assert( В).

line();









Начало  Назад  Вперед