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

6ec30db9

Правило уточнения плана из системы AL3 для решения шахматных задач (Bratko 1982)



Рисунок 14. 4.  Правило уточнения плана из системы  AL3
для решения шахматных задач  (Bratko  1982).

Условие - это набор простых утверждений, соединенных между собой операторами  и  и  или.   Мы также разрешим в части условия использовать оператор  не,  хотя и с некоторыми оговорками. При надлежащем прологовском определении этих операторов (как это сделано на Рисунок 14.5) правила станут синтаксически верными предложениями Пролога. Заметим, что оператор  и  связывает операнды сильнее, чем  или,  что соответствует обычным соглашениям.

line();

% Небольшая база знаний для идентификации животных

:- ор( 100, xfx, [имеет, 'кормит детенышей',
                                'не может', ест, откладывает, это]).

:- ор( 100, xf, [плавает, летает, хорошо]).

прав1:        если
                        Животное имеет шерсть
                        или
                        Животное 'кормит детенышей' молоком
                   то


                        Животное это млекопитающее.
прав2:        если
                        Животное имеет перья
                        или
                        Животное летает и
                        Животное откладывает яйца
                   то
                        Животное это птица.
прав3:        если
                        Животное это млекопитающее и
                        ( Животное ест мясо
                        или
                        Животное имеет 'острые зубы' и
                        Животное имеет когти и
                        Животное имеет
                            'глаза, направленные вперед' )
                   то
                        Животное это хищник.
прав4:        если
                        Животное это хищник и
                        Животное имеет
                                'рыжевато-коричневый цвет' и
                        Животное имеет 'темные пятна'
                   то
                        Животное это гепард.
прав5:        если
                        Животное это хищник и
                        Животное имеет
                                'рыжевато-коричневый цвет' и
                        Животное имеет 'черные полосы'
                   то
                        Животное это тигр,
прав6:        если
                        Животное это птица и
                        Животное 'не может' летать и
                        Животное плавает
                   то
                        Животное это пингвин,
прав7:        если
                        Животное это птица и
                        Животное летает хорошо
                   то
                        Животное это альбатрос.

факт:  X это животное :-
        принадлежит( X, [гепард, тигр, пингвин, альбатрос]).

можно_спросить( _ 'кормит детенышей'_,
        'Животное' 'кормит детенышей' 'Чем').

можно_спросить( _ летает, 'Животное' летает).

можно_спросить( _ откладывает яйца,
        'Животное' откладывает яйца).

можно_спросить( _ ест _, 'Животное' ест 'Что').

можно_спросить( _ имеет _,'Животное' имеет 'Нечто').

можно_спросить( _ 'не может' _,
        'Животное' 'не может' 'Что делать').

можно_спросить( _ плавает, 'Животное' плавает).

можно_спросить( _ летает хорошо,
        'Животное' летает хорошо).

line();

Содержание раздела