Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Отрицаемые цели




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

explorer not Goal, Trace, Answer):-!,

explore (Goal, Trace, Answer.!),

invert (answer!. Answer). % Операция отрицания: истинностного значения

invert (Goal is true was Found, (not Goal) is false was Found). invert (Goal is false was Found, (not Goal) is true was Pound).

Такая попытка завершается успехом, только если цель Goal конкретизирована, а в ином случае возникают проблемы. Рассмотрим, в частности, следующий пример:?- expert.

Question, please:

not (X eats meat).

Any (more) solution to: Animal eats meat?

378 Часть II. Применение языка Prolog в области искусственного интеллекта


 

yes.

Animal = tiger.

После этого система выдает следующий ответ:
not [tiger cats meat) is false % высказывание not (tiger eats meat) ложно

Этот ответ не является удовлетворительным. Проблема заключается в том, что под рассматриваемым вопросом пользователи часто подразумевают совсем иное: not (X eats meat) * Найти такой объект х, который не питается мясом

Пользователь фактически хочет спросить: "Есть ли сведения о таком объекте X, что X не питается мясом?" Но способ, с помощью которого этот вопрос интерпретиру­ется процедурой explore {в соответствии с ее определением), состоит в следующем.

1. Есть ли сведения о некотором объекте X, таком, что X питается мясом?

2. Да, мясом питается тигр.

3. Поэтому высказывание not (tiger eats meat) является ложным.

Короче говоря, в системе применяется следующая интерпретация этого вопроса: "Является ли истинным, что ни один объект X не ест мяса?" Поэтому система даст положительный ответ на этот вопрос лишь в том случае, если никто из известных ей объектов не питается мясом. Эту мысль можно выразить иначе: процедура explore отвечает на вопрос с отрицанием таким образом, как если бы к объекту X был при­менен квантор всеобщности:

для всех X является ли истинным высказывание not (X eats meat)? а не так, как если бы к объекту х был применен квантор существования, в чем со­стояло намерение пользователя, задающего вопрос с отрицанием: для некоторого X есть ли такой X, что истинно высказывание not (X eats meat)?

Если рассматриваемый вопрос является конкретизированным, то проблемы при его обработке не возникают. В противном случае правильная трактовка вопросов с отрицанием становится более сложной. Некоторые возможные варианты анализа этой проблемы описаны ниже.

Чтобы проверить истинность цели not Goal, выполнить проверку Goal, а затем:

• если Goal является ложной, топот. Goal истинна;

• если Goal' — решение Goal

 

• и Goal' является столь же общей, что и Goal,

• то not Goal ложна;

• если Goal' — решение Goal и

• Goal' является более конкретной, чем Goal,

• то мы не можем сказать ничего определенного о not Goal.

Этих сложностей можно избежать, разрешив использовать только конкретизиро­ванные отрицаемые цели. Такое требование часто можно осуществить с применением более правильных формулировок правил в базе знаний. В листинге 16.2 подобная за­дача решена с помощью следующей модификации правила определения неисправного прибора broken_rule:

broken_rule:: if on(Device) and

device (Device) and % Конкретизировать переменную Device not working." Device) and connected(Device, Fuse) and proved(intactf Fuse)) then proved! broken (Device)).

Условие


Глава 16. Командный интерпретатор экспертной системы



 


device(Device)

"защищает" стоящее за ним условие

not working; Device)

от использования в неконкретизированном виде.

Упражнение

16.1. База знаний может содержать циклы, как показано ниже.

rulel:.: if bottle empty then john drunk. 'i Если бутылка пуста, то Джон пьян гц1е2:: if Dohn_drunk then bottlejanpty. 'i Если Джон пьян, то бутылка пуста

При использовании такой базы знаний процедура explore может начать пере­ходить по циклу между одними и теми же целями. Модифицируйте процедуру explore, чтобы предотвратить подобное зацикливание. Для этого можно при­менить трассировку Trace. Но необходимо соблюдать осторожность: если те­кущая цель согласуется с предыдущей целью, такую ситуацию нельзя рас­сматривать как цикл, при условии, что текущая цель является более общей, чем предыдущая.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 390 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2205 - | 2096 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.