今天晚上看了一下rete算法,感觉理解了,记录如下:
1,规则(rule):例如: "IF P THEN R"就是一条规则。其中P包含一个或多个部分,具体表示如下:IF(P1)(P2)(P3) THEN R。其中P1、P2等部分的表现形式被抽象(泛化)为(^on )或(^and)等一般形式,类似于c++中的模板类,在rete算法中,我们称之为模式(Patten)。
2,事实(fact):事实表示的是对象或对象属性之间关系。例如:对象A 和 对象B是“^on”的关系,那么就存在如下一个事实,用w1表示:w1:(A ^on B)。事实其实就是对上面提到的模式的实例化,类似于c++中模板类的实例化为对象。
3,建立rete网络:首先把所有的事实按不同的模式分类,每一类建立一个alpha节点,并为之分配内存。在alpha节点建立的基础上建立beta节点:alpha节点1与 alpha节点2进行join连接产生的结果就是beta节点2.beta节点1由假造的alpha节点0(dummy top node)和alpha节点1进行join产生。beta节点网络的末端就是结论,例如P1,P2,P3。
实例图如下: