Основы построения и функционирования интеллектуальных информационных систем. Былкин В.Д - 110 стр.

UptoLike

110
Затем программа ищет правило, содержащие в правой части имя этого объекта. Далее она
проверяет каждую составляющую предпосылки правила. Если правило выполняется, то его
заключение добавляется в базу знаний. Если же значение объекта с помощью правил найти не
удается, то программа предлагает оператору ввести имя этого значения.
PROCEDURE pursue(f_object:word_string);
VAR
f_value: word_string;
curr_object: object_ptr;
curr_value :value_ptr;
curr_rule:rule_ptr;
curr_prem:prem_ptr;
bad:boolean;
solved :boolean;
lowest :inleger;
BEGIN
curr_object:=find_ object (f_object);
IF currr_object=NIL THEN make_node(curr_object);
curr_object^.name: =f_object;
IF (curr_object^.sought <>TRUE) THEN
BEGIN
solved: =FALSE;
curr_object.sought: =TRUE;
curr_rule:=find_rule(f_object,top_rule);
WHILE ((curr,rule<>NIL) AND
(ok„add(f_object,DEFINITE)=TRUE)) DO
BEGIN
curr_prem:= curr_ruIe^.prem;
bad:=FALSE;
lowest:=DEFINITE;
WHILE ((curr__prem<>NIL) AND (bad=FALSE)) DO BEGIN
pursue(curr_prem^.object);
curr_value:=test(curr_prem^ .object
,
curr_pren^. value);
IF curr_value=NIL THEN bad;=TRUE
ELSE IF curr_value^.cert < lowest THEN
lowest: =curr_yalue^.cert; curr_prem:= curr_prem^.next
       Затем программа ищет правило, содержащие в правой части имя этого объекта. Далее она
проверяет каждую составляющую предпосылки правила. Если правило выполняется, то его
заключение добавляется в базу знаний. Если же значение объекта с помощью правил найти не
удается, то программа предлагает оператору ввести имя этого значения.
PROCEDURE pursue(f_object:word_string);
VAR
f_value: word_string;
 curr_object: object_ptr;
curr_value :value_ptr;
curr_rule:rule_ptr;
curr_prem:prem_ptr;
bad:boolean;
 solved :boolean;
 lowest :inleger;
 BEGIN
curr_object:=find_ object (f_object);
IF currr_object=NIL THEN make_node(curr_object);
curr_object^.name: =f_object;
 IF (curr_object^.sought <>TRUE) THEN
 BEGIN
    solved: =FALSE;
     curr_object.sought: =TRUE;
     curr_rule:=find_rule(f_object,top_rule);
     WHILE ((curr,rule<>NIL) AND
    (ok„add(f_object,DEFINITE)=TRUE)) DO
     BEGIN
         curr_prem:= curr_ruIe^.prem;
         bad:=FALSE;
         lowest:=DEFINITE;
            WHILE ((curr__prem<>NIL) AND (bad=FALSE)) DO BEGIN
                         pursue(curr_prem^.object);
                         curr_value:=test(curr_prem^ .object ,curr_pren^. value);
                         IF curr_value=NIL THEN bad;=TRUE
                         ELSE IF curr_value^.cert < lowest THEN
                         lowest: =curr_yalue^.cert; curr_prem:= curr_prem^.next




                                                      110