Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bratko_Ivan_Programmirovanie_na_yazyke_Prolog_d...doc
Скачиваний:
13
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

14.4.1. Процесс рассуждений

Наш интерпретатор будет принимать вопрос и искать на него ответ. Язык правил допускает, чтобы в условной части правила была И/ИЛИ-комбинация условий. Вопрос на входе интерпретатора может быть такой же комбинацией подвопросов. Поэтому процесс поиска ответов на эти вопросы будет аналогичен процессу поиска в И/ИЛИ-графах, который мы обсуждали в гл. 13.

Ответ на заданный вопрос можно найти несколькими способами в соответствии со следующими принципами:

Для того, чтобы найти ответ Отв  на вопрос В , используйте одну из следующих возможностей:

• если В  найден в базе знаний в виде факта, то Отв  — это "В  это правда"

• если в базе знаний существует правило вида

  "если Условие  то В ",

то для получения ответа Отв  рассмотрите Условие

• если вопрос В  можно задавать пользователю, спросите пользователя об истинности В

• если в имеет вид В1 и В2 , то рассмотрите В1 , а затем,

  если В1 ложно, то положите Отв равным "В это ложь",  в противном случае рассмотрите В2 и получите Отв как соответствующую комбинацию ответов на вопросы В1  и В2

• если В  имеет вид В1 или В2 , то рассмотрите В1 , а затем,

  если В1  истинно, то положите Отв  равным "В1 это правда",  в противном случае рассмотрите В2  и получите Oтв  как соответствующую комбинацию ответов на вопросы В1  и В2 .

Вопросы вида

не В

обрабатываются не так просто, и мы обсудим их позже. 

14.4.2. Формирование ответа на вопрос "почему"

Вопрос "почему " возникает в ситуации, когда система просит пользователя сообщить ей некоторую информацию, а пользователь желает знать, почему эта информация необходима. Допустим, что система спрашивает:

а — это правда?

В ответ пользователь может спросить:

почему?

Объяснение в этом случае выглядит примерно так:

Потому, что

Я могу использовать а ,

  чтобы проверить по правилу Па , что b , и

Я могу использовать b ,

  чтобы проверить по правилу Пb , что с , и

Я могу использовать с ,

  чтобы проверить по правилу Пc , что d , и

…

Я могу использовать y ,

  чтобы проверить по правилу Пy , что z , и

z  — это ваш исходный вопрос.

Объяснение — это демонстрация того, как система намерена использовать информацию, которую она хочет получить от пользователя. Намерения системы демонстрируются в виде цепочки правил и целей, соединяющей эту информацию с исходным вопросом.

Рис. 14.8.  Объяснение типа "почему". На вопрос "Почему вас интересует текущая цель?" дается объяснение в виде цепочки правил и целей, соединяющей текущую цель с исходным вопросом пользователя, находящимся в верхушке дерева. Эта цепочка называется трассой.

Будем называть такую цепочку трассой . Трассу можно себе представлять как цепочку правил, соединяющую в И/ИЛИ-дереве вопросов текущую цель с целью самого верхнего уровня так, как это показано на рис. 14.8. Таким образом, для формирования ответа на вопрос "почему" нужно двигаться в пространстве поиска от текущей цели вверх вплоть до самой верхней цели. Для того, чтобы суметь это сделать, нам придется в процессе рассуждений сохранять трассу в явном виде. 

14.4.3. Формирование ответа на вопрос "как"

Получив ответ на свой вопрос, пользователь возможно захочет увидеть, как система пришла к такому заключению. Один из подходящих способов ответить на вопрос "как" — это представить доказательство, т.е. те правила и подцели, которые использовались для достижения полученного заключения. Это доказательство в случае нашего языка записи правил имеет вид решающего И/ИЛИ-дерева. Поэтому наша машина логического вывода будет не просто отвечать на вопрос, соответствующий цели самого верхнего уровня — этого нам недостаточно, а будет выдавать в качестве ответа решающее И/ИЛИ-дерево, составленное из имен правил и подцелей. Затем это дерево можно будет отобразить на выходе системы в качестве объяснения типа "как". Объяснению можно придать удобную для восприятия форму, если каждое поддерево печатать с надлежащим отступом, например:

питер это хищник

 было выведено по прав3 из

  питер это млекопитающее

   было выведено по прав1 из

    питер имеет шерсть

     было сказано

  и

  питер ест мясо

   было сказано

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]