Чтение онлайн

ЖАНРЫ

Неизвестно

Шрифт:

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

которая будет находить ответ Ответ на заданный вопрос Цель, используя принципы, намеченные в общих чертах в разд. 14.4.1: найти Цель среди фактов базы знаний, или применить правило из базы знаний, или спросить пользователя, или же обработать Цель как И / ИЛИ-комбинацию подцелей.

Аргументы имеют следующий смысл и следующую структуру:

Цель вопрос, подлежащий рассмотрению, представленный

как И / ИЛИ-комбинация простых утверждений, например

X имеет перья или X летает или

X откладывает яйца

Трасса цепочка, составленная из целей-предков и правил,

расположенных между Цель и исходной целью самого верхнего уровня. Представляется как список, состоящий из элементов вида

Цель по Прав

что означает: Цель рассматривалась с использованием правила Прав. Например, пусть исходной целью будет "питер это тигр", а текущей целью - "питер ест мясо". В соответствии с базой знаний рис. 14.5 имеем трассу

[( питер это хищник) по прав3,

( питер это тигр) по прав5 ]

Смысл ее можно выразить так:

Я могу использовать "питер ест мясо" для того, чтобы проверить по прав3, что "питер это хищник".

Далее, я могу использовать "питер это хищник" для того, чтобы проверить по прав5, что "питер это тигр".

Ответ решающее И / ИЛИ-дерево для вопроса Цель. Общая форма

представления для объекта Ответ:

Заключение было Найдено

где Найдено– это обоснование для результата Заключение. Следующие три примера иллюстрируют различные варианты ответов:

(1) ( соед( радиатор, предохр1) это правда) было

'найдено как факт'

(2) (питер ест мясо) это ложь было сказано

(3) (питер это хищник) это правда было

( 'выведено по' прав3 из

(питер это млекопитающее) это правда было

( 'выведено по' прав1 из

(питер имеет шерсть) это правда было сказано)

и

(питер ест мясо) это правда было сказано )

На рис. 14.10 показана прологовская программа для процедуры рассмотреть. В этой программе реализованы принципы разд. 14.4.1 с использованием только что описанных структур данных.

% Процедура

%

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

%

% находит Ответ на вопрос Цель. Трасса - это цепочка

% целей-предков и правил. "рассмотреть" стремится найти

% положительный ответ на вопрос. Ответ "ложь" выдается

% только в том случае, когда рассмотрены все возможности,

% и все они дали результат "ложь".

:-ор( 900, xfx, :).

:-ор( 800, xfx, было).

:-ор( 870, fx, если).

:-ор( 880, xfx, то).

:-ор( 550, xfy, или).

:-ор( 540, xfy, и).

:- ор( 300, fx, 'выведено по').

:- ор( 600, xfx, из).

:- ор( 600, xfx, по).

% В программе предполагается,что ор( 700, хfх, это), ор( 500, fx, не)

рассмотреть( Цель, Трасса, Цель это правда

было 'найдено как факт') :-

факт : Цель.

% Предполагается, что для каждого типа цели

% существует только одно правило

рассмотреть( Цель, Трасса,

Цель это ПравдаЛожь

было 'выведено по' Прав из Ответ) :-

Прав : если Условие то Цель,

% Правило, относящееся к цели

рассмотреть( Условие, [Цель по Прав | Трасса], Ответ),

истинность( Ответ, ПравдаЛожь).

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

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

продолжить( Ответ1, Цель1 и Цель2, Трасса, Ответ).

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

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

% Положительный ответ на Цель1

рассм_да( Цель2, Трасса, Ответ).

Поделиться с друзьями: