Вход/Регистрация
Prolog
вернуться

Неизвестно

Шрифт:

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

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

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

Ответ1 = нет.

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

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

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

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

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

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

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

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

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

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

Ответ1 = нет.

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

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

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

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

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

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

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

read( Вопрос).

Рис. 14. 13. Оболочка экспертной системы: драйвер. Обращение

к оболочке из Пролога при помощи процедуры эксперт.

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

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

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

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

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

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

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

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

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

?- эксперт.

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

не ( X ест мясо).

Есть (еще) решения для : Животное

да.

Животное = тигр.

В этот момент система даст ответ:

не ( тигр ест мясо) это ложь

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

не ( X ест мясо)

В действительности мы хотим спросить: "Существует ли такой X, что X не ест мяса?" Однако процедура рассмотреть (так как мы ее определили) проинтерпретирует этот вопрос следующим образом:

(1) Существует ли такой X, что X ест мясо?

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

Итак,

(3) не (тигр ест мясо) это ложь.

Короче говоря, интерпретация такова - "Правда ли, что никакой X не ест мясо?" Положительный ответ мы получим, только если никто не ест мяса. Можно также сказать, что процедура рассмотреть отвечает на вопрос так, как будто X находится под знаком квантора всеобщности:

для всех X: не (X ест мясо)?

  • Читать дальше
  • 1
  • ...
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: