Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Цели с отрицанием



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

рассмотреть(не Цель, Трасса, Ответ):-!,

рассмотреть(Цель, Трасса, Ответ1),

обратить(Ответ1, Ответ).

% Получить обратное истинностное значение

обратить(Цель это правда было Найдено,

(не Цель) это ложь было Найдено).

обратить(Цель это ложь было Найдено,

(не Цель) это правда было Найдено).

% Процедура-драйвер верхнего уровня

эксперт:-

принять_вопрос(Вопрос),

% Ввести вопрос пользователя

(ответ_да(Вопрос);

% Попытка найти положительный ответ

ответ_нет(Вопрос)).

% Если нет положительного ответа, то найти отрицательный

ответ_да(Вопрос):-

% Искать положительный ответ на Вопрос

статус(отрицательный),

% Пока еще нет положительного ответа

рассмотреть(Вопрос, [], Ответ), % Трасса пуста

положительный(Ответ), % Искать положительный ответ

статус(положительный),

% Найден положительный ответ

выдать(Ответ), nl,

write('Нужны еще решения?'),

принять(Ответ1), % Прочесть ответ пользователя

Ответ1 = нет.

% В противном случае возврат к "рассмотреть"

ответ_нет(Вопрос):-

% Искать отрицательный ответ на Вопрос

retract(пока_нет_положительного_решения),!,

% Не было положительного решения?

рассмотреть(Вопрос, [], Ответ),

отрицательный(Ответ),

выдать(Ответ), nl,

write('Нужны еще решения?'),

принять(Ответ1),

Ответ1 = нет.

% В противном случае - возврат к "рассмотреть"

статус(отрицательный):-

assert(пока_нет_положительного_решения).

статус(положительный):-

retract(пока_нет_положительного_решения),!; true.

принять_вопрос(Вопрос):-

nl, write('Пожалуйста, спрашивайте:'), nl,

read(Вопрос).

Рис. 14.13. Оболочка экспертной системы: драйвер. Обращение к оболочке из Пролога при помощи процедуры эксперт.

Если Цель конкретизирована, то все в порядке, если же нет, то возникают трудности. Рассмотрим, например, такой диалог:

?- эксперт.

Пожалуйста, спрашивайте:





Дата публикования: 2015-10-09; Прочитано: 202 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...