Иллюстрированный самоучитель по введению в экспертные системы

Обратное прослеживание и множество контекстов

Если обнаружено противоречие между объектами world M и N и объект М создан ранее объекта N, причем анализ М в предположении о лживости соответствующего высказывания не был выполнен, ТО вернуться к анализу объекта М.

(defrule directed-falsity
(world (tag?N) (scope falsity)
(task contra) (prior?M&"0))
?W ← (world (tag?M) (scope truth) (task check))
 ›
(modify?W (task back)))
;; Если обнаружено противоречие между
;; объектами world М и N
;; и объект М создан ранее объекта N, причем
;; не был выполнен анализ всех дизъюнктов в М,
;; ТО вернуться к анализу объекта М.
(defrule directed-disjunct
(world (tag?N) (scope falsity)
(task contra) (prior?MS~0))
?V ← (world (tag?M) (task check) (context 1))
(claim (content OR?P?X?Q?Y) (reason?M)
(scope?S)) ›
;; Дизъюнкт в ранее покинутом "мире", анализ которого
;; не был выполнен.
(assert (claim (content?Q?Y) (reason?M)
(scope?S) (context 2)))
;; Зафиксировать необходимость отката в этот "мир".
(modify?V (task back)))

Если вы думаете, что эти два правила позволяют справиться со всеми возможными ситуациями, в которых может возникнуть необходимость выполнить откат, то вы ошибаетесь. "Миры" W и V могут конфликтовать, хотя в обоих проанализированы все варианты предположений и все дизъюнкты. А источник конфликта при этом находится в некотором третьем "мире", в котором не был завершен анализ предположений или дизъюнктов (см. пример 4).

Упражнение 4

Проанализируйте следующую головоломку, в которой участвуют персонажи А, В и С.

А: "В лжец".

В: "С лжец".

С: "В говорит правду".

Как выполнить откат в процессе решения этой задачи. Отыщите "мир", в который нужно выполнить откат, и объясните, почему этот "мир" не удастся определить с помощью приведенных выше правил.

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

Правила directed – и undirected – можно использовать в комбинации, нр с первого взгляда трудно решить, как именно это сделать. Условные части правил undirected-falsity и directed-falsity одинаковы, а потому нам остается только манипулировать значением параметра salience. Обычно "направленные" варианты правил более эффективны, но в результате их применения может пострадать полнота исследования "миров" в особо хитроумных задачах. "Ненаправленные" варианты работают медленнее, но зато обеспечивают исчерпывающий просмотр всех имеющихся в задаче объектов world.

Я предлагаю читателям самостоятельно поэкспериментировать с обоими вариантами при решении разных задач рассматриваемого класса. Мы же в дальнейшем будем использовать только "ненаправленные" варианты этих правил.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.