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

Процедура выдать



Процедура

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

приведенная на рис. 14.12, показывает пользователю окончательный результат консультационного сеанса и дает объяснения типа "как". Ответ включает в себя как ответ на вопрос пользователя, так и дерево вывода, демонстрирующее как система пришла к такому заключению. Сначала процедура выдать представляет пользователю свое заключение. Затем, если пользователь пожелает узнать, как это заключение достигнуто, то печатается дерево вывода в некоторой удобной для восприятия форме - это и есть объяснение типа "как". Форма объяснения показана в примере разд. 14.4.3.

Драйвер верхнего уровня

И наконец, для того, чтобы иметь удобный доступ к оболочке из интерпретатора Пролога, нам необходима процедура, выполняющая функцию "драйвера". На рис. 14.13 показано, как могла бы выглядеть предназначенная для этой цели процедура эксперт. Драйвер эксперт производит запуск трех основных модулей оболочки (рис. 14.10–14.12) и координирует их работу. Например:

?- эксперт.

Пожалуйста, спрашивайте: % Приглашение пользователю

X это животное и голиаф это X. % Вопрос пользователя

Это правда: голиаф имеет шерсть?

...

% Выдача заключения консультационного сеанса и

% объяснения типа "как"

выдать(Ответ):-

nl, заключение(Ответ),

nl, write('Хотите узнать, как?'),

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

(Ответ1 = да,!, отобр(Ответ);

true). % Показ решающего дерева

заключение(Ответ1 и Ответ2):-!,

заключение(Ответ1), write('и'),

заключение(Ответ2).

заключение(Заключение было Найдено):-

write(Заключение).

% "отобр" отображает полное решающее дерево

отобр(Решение):-

nl, отобр(Решение, 0),!. % Отступ 0

отобр(Ответ1 и Ответ2, H):-!, % Отступ H

отобр(Ответ1, H),

tab(H), write('и'), nl,

отобр(Ответ2, H).

отобр(Ответ был Найден, H):- % Отступ H

tab(H), печответ(Ответ), % Показ заключения

nl, tab(H),

write('было'),

отобр1(Найден, H). % Показ доказательства

отобр1(Выведено из Ответ, H):-!,

write(Выведено), write('из'), % Показ имени правила

nl, H1 is H + 4,

отобр(Ответ, H1). % Показ "предшественника"

отобр1(Найдено, _):-

% Найдено = 'сказано' или 'найдено как факт'

write(Найдено), nl.

печответ(Цель это правда):-!,

write(Цель). % На выходе 'это правда' опускается

печответ(Ответ):- % Отрицательный ответ

write(Ответ).

Рис. 14.12. Оболочка экспертной системы: Отображение окончательного результата и объяснение типа "как".





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



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