Лабораторная работа №2
Построение механизма логического вывода на основе продукционного представления знаний.
На основе представленной грамматики в нотации Бэкуса -Наура разработать механизм логического вывода для знаний представленных в виде продукций.
< ПРАВИЛО > ::= ( ЕСЛИ { < антецедент > } ТО { <консеквент> } )
< антецедент > ::= < ассоциативная тройка >
< консеквент > ::= < ассоциативная тройка >
< ассоциативная тройка > ::= ( < атрибут > < объект > < значение > )
< атрибут > , < объект > и < значение > должны быть специальными терминами предметной области.
Пример :
“Нефть, вытекающая в воду, порождает разводы на ее поверхности ”.
Продукция .
( ЕСЛИ ( нарушение вода разводы ) ТО ( вещество утечка нефть ))
Для реализации продукции можно использовать структуру следующего типа :
typedef struct DECNODE_TYP
{
int openand 1, operand 2; // Правая пара операторов
int comp 1; // Оператор сравнения
int operator 1; // Оператор объединения
int operand 3, operand 4; // Вторая пара операторов
int comp2; // Оператор сравнения
ACTION * act _ true ; // Список действий при выполнении
ACTION * act _ false ; // и невыполнении условий
DECNODE_TYP *dec_true; // this is the link to the right node
DECNODE_TYP *dec_false; // this is the link to the left node
} DECNODE, *DECNODE_PTR;