Лабораторная работа №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;