锁定老帖子 主题:RETE算法
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-23
能不能把Rete网络的编译算法解释一下?
即现在已经给定了一些事实、模式和规则,rete网络是如何构造的? |
|
返回顶楼 | |
发表时间:2007-12-30
在jamocha规则引擎中采用了基于插槽位置的模式匹配方法,在建立rete网络时,输入的是规则所对应的对象,对于该对象中的每一个CE,有如下的处理:
一 建立alpha网络
(1)对于第一次出现的变量,建立被绑定元素;
(2)对于出现的字面量约束,建立Alpha结点;如果rete网络中有相同约束的结点,则共享节点;
(3)将建立的所有被绑定元素加入到规则中。
二 建立beta网络
(1)对于非第一次出现的变量,建立绑定元素,并将被绑定元素的属性值填充至绑定元素;
(2)依据不同的CE和约束类型建立不同的beta结点;填充与该CE对应的绑定元素列表到该beta结点;
(3)连接beta结点到rete网络。
PS:目前做为规则引擎jamocha的开发人员,主要负责rete网络和模式匹配。如果大家感兴趣,可以去http://sourceforge.net/projects/jamocha看看。
|
|
返回顶楼 | |