Заметки и краткие ответы на экзаменационные вопросы по дисциплине "Представление знаний в интеллектуальных системах", страница 6

Через отсечение невозможно совершить откат. При отсечении выполняются следующие действия:

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

2)когда процесс проходит через отсечение, то удовлетворяется обращение к cut и выполняется обращение к очередной подцели (если она имеется).

3)пройдя однажды через отсечение невозможно произвести откат к подцелям, расположенным перед отсечением. Также невозможно возвратиться к предикату, содержащему такое отсечение.

Существует два основных случая применения отсечения:

-  если заранее известно, что посылки не приведут к осмысленным решениям и поиск будет бессмысленной тратой времени. Такое отсечение называется зелёным.

-  если сама логика программы требует исключения из рассмотрения альтернативных подцелей. Такое отсечение называется красным.

Вопрос №22.

Предотвращение поиска с возвратом

Решение:

a,b,           Эта запись означает:

!,             а) Что нас удовлетворяет 1 решение, найденное Прологом для подцели а и b

c             б) Имея возможность найти множественные решения при обращении к с, Пролог

не может произвести откат через отсечение и найти альтернативные решения для обращений а и b.

в) Пролог не может возвратиться к другому предложению определяемому, как Предикат решения.

Пример:

Найти машину подходящего цвета и стоимости

Predicates

              авто (symbol, symbol)            %   модель, цвет

              цвет (symbol, symbol)            %   колор, характеристика

              мобиль (symbol, symbol)       %   марка, цвет, цена

Clauses

             авто (модель, цвет):-

                      мобиль (Модель, Цвет, Цена),

                      цвет (Цвет, sex),    

                      !,

                      цена < 2500.

Мобиль (Москвич, зеленый, 2500).

Мобиль (Жигули, черный, 2400).

Мобиль (Жигули, красный, 2600).

Мобиль (Ока, желтый, 2700).

цвет (красный, sex).    

цвет (черный, деловой).    

цвет (зеленый, трава).    

цвет (желтый, такси).   

Goal

Авто (Жигули, Y).

После сопоставления марки и цвета автомобиля происходит переход к следующий подцели, т.е. к !. Отсечение выполняется, при этом запоминаются все переменные, связанные с этим предложением. Производиться переход к следующей подцели, т.е. <2500/ Проверка неудачна. Далее Пролог пытается совершить поиск с возвратом, но отсечение предотвращает попытку решить последнюю подцель и следовательно целевое утверждение завершается неудачно.

Вопрос №23.

Предотвращение поиска с возвратом

К следующему предложению.

Решение (1):- !, a ,b, c.        

Решение (2):-  !, d.

Решение (3):- !, c.            

Решение (_):- write (“все решения”).

Решение (x):- x=1,

!, a ,b, c.    

……….

При такой конструкции отсечение делает предикат детерминированным. Пройдя через отсечение ! исключается возможность возвращения к другому предложению решение.

Пример:

Кто является другом Бори?

Predicates

             друг (symbol, symbol)

                любит (symbol, symbol)

                девочка (symbol, symbol)

Clauses

                друг (боря, яна):- девочка (яна), любит (боря, яна), !.

                друг (боря, маша):- любит (маша, спорт), !.

                друг (боря, лена):- девочка (лена).

                девочка (маша).

                девочка (яна).

                девочка (лена).

                любит (маша, спорт).

                любит (боря, яна).

Goal

                друг (боря, Кто).

Ответ: друг (маша)

Вопрос №24.

Факты и правила в качестве процедур.

А) Любит (вася, что-нибудь):-

     Любит (лена, что-нибудь).

Б) скажи_привет:-     write (“привет”), nl

Использование правил для условного ветвления.

Пролог позволяет задавать множество альтернативных решений.

Пример:

Если сказать нажать 1, машина напишет 1, если 2, то 2, если какую-нибудь другую цифру, то машина скажет “нет”.

Решение:

Predicates

             действие (integer)

Clauses

            действие(1):-ne,

                                   Write (“нажата 1”), ne.

            действие(2):-ne,

                                   Write (“нажата 2”), ne.

            действие (N):-ne, N<>1, N<>2

                                   Write (“нет”), ne.

Goal

                                   Write (“жми 1 или 2”),

            Readint (Nom),

            действие (Nom).

Вопрос №25.

Отсечение! как Go To.

Пример:

Если сказать нажать 1, машина напишет 1, если 2, то 2, если какую-нибудь другую цифру, то машина скажет “нет”.

Красное отсечение:

Predicates

действие (integer)

Clauses

действие(1):- !, ne,

Write (“нажата 1”), ne.

действие(2):-!,

Write (“нажата 2”), ne.

действие(N):-!,

Write (“нет”), ne.

Goal

Write (“жми 1 или 2”),

Readint (Nom),

действие (Nom).

Зеленое осечение:

Predicates

действие (integer)

Clauses

действие(1):- !, ne,

Write (“нажата 1”), ne.

действие(2):-!,

Write (“нажата 2”), ne.

действие(N):-!, N<>1, N<>2,

Write (“нет”), ne.

Goal

Write (“жми 1 или 2”),

Readint (Nom),

действие (Nom).

Возврат вычисленного значения.

Пример:

Если значение 0, то возврат “zero”, если значение <0, то “-“, если >0, то “+“.

Решение:

Predicates

         Система (integer, symbol)

Clauses

         Система (0, zero).

         Система (Х, отрицание):- x<0.

         Система (Х, плюс):- x>0.

Goal

         Система (5, Y).

Ответ: Y=плюс.