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

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

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

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

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

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

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

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

                Ответ1 = нет.

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

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

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

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

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

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

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

                read( Вопрос).

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

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

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

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

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

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

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

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

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

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

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

        ?-  эксперт.

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

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

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

        да.

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

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

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

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

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

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

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

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

    Итак,

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату