Для формирования объяснений в системах на основе правил предусмотрены некоторые стандартные способы. Два широко применяемых типа объяснений получили название объяснения последовательности рассуждений и объяснения предпосылок, при которых система отвечает на вопросы "как" ("How?") и "для чего" ("Why?"). Вначале рассмотрим объяснение последовательности рассуждений. После того как система вырабатывает некоторый ответ, пользователь может задать вопрос о том, как был получен этот ответ. Типичное объяснение заключается в том, что пользователю предоставляется трассировка процесса формирования данного ответа. Предположим, что система только что обнаружила, что утечка в кухне и пользователь задает вопрос "How?". Объяснение может формироваться в соответствии с приведенным ниже примером.
Поскольку:
1) неисправность находится в кухне, а вывод об этом сделан на основании того, что в гостиной есть водаг а в ванной сухо; и
2) вода не поступает снаружи, и это следует из того факта, что окно закрыто.
Такое объяснение по сути представляет собой дерево доказательства того, что окончательный вывод следует из правил и фактов в базе знаний. Допустим, что знак "<=" определен как инфиксный оператор. В таком случае можно представить дерево доказательства высказывания Р в одной из описанных ниже форм, в зависимости от конкретной ситуации.
1. Если Р — факт, то дерево доказательства — Р.
2. Если факт Р получен с использованием правила
if Cond then P
то дерево доказательства является следующим:
Р <= ProofCond
где ProofCond — дерево доказательства условия Cond.
3. Допустим, что Р1 и Р2 — высказывания, деревьями доказательства которых
являются Proofl и Proof2. Если истинно выражение? is Fl and P2, то де
рево доказательства представляет собой конъюнкцию деревьев доказательства
Proofl и Proof2. Если истинно выражение Р is?1 or P2, то дерево доказа
тельства является дизъюнкцией деревьев доказательства Proof 1 и Proof2.
Задача формирования деревьев доказательства в программе на языке Prolog решается просто и может быть осуществлена путем модификации предиката i st rue (см. листинг 15.4), в соответствии с тремя описанными выше ситуациями. Такой модифицированный предикат istrue приведен в листинге 15.6. Обратите внимание на то, что деревья доказательства такого рода по существу аналогичны деревьям решения для задач, представленных с помощью графов AND/OR. Процедуру представления деревьев доказательства в некотором удобном для пользователя формате можно реализовать в программе по аналогии с процедурой отображения деревьев решения AND/OR. А процедура, предусматривающая более сложное форматирование вывода деревьев доказательства, входит в состав программы командного интерпретатора, приведенной в главе 16.
В отличие от этого, объяснение предпосылок требуется в течение процесса формирования рассуждений, а не в его конце. Для этого необходимо взаимодействие пользователя с процессом формирования рассуждений. Система запрашивает у пользова-
Часть II. Применение языка Prolog в области искусственного интеллекта
теля информацию в тот момент, когда ей потребуется данная информация. Получив соответствующий запрос, пользователь может спросить "Why?", активизировав тем самым подготовку объяснения, для чего нужно данное конкретное действие. Такой характер взаимодействия и способ формирования объяснений в ответ на вопросы "для чего" реализованы в программе, которая входит состав командного интерпретатора, описанного s главе 16.