我试图为一个样本规则绘制一个Rete网络,它在不同模式的变量之间没有绑定。我知道beta网络是用来确保不同模式中的弯曲变量是一致的。
(defrule R1
(type1 c1 c2)
(type2 c3)
=>
)
(defrule R2
(type2 c3)
(type3 c4 v1)
(type4 c5 v1)
=>
)
在R1中,这两种模式之间没有绑定变量,那么如何将它们在Rete网络中的结果结合起来呢?在R2中,有两个规则绑定了变量,而第三个没有绑定变量。如何将网络中的三条规则结合起来?我搜索了Rete网络的例子,但没有找到任何这样的情况。我试着画网络,下面是我的网络。是对的吗?
更新:基于Gary的应答的新网络
谢谢
发布于 2017-08-26 20:06:06
无论模式中是否有需要检查一致性的变量,Beta节点都会存储部分匹配。变量绑定只用于过滤存储在beta内存中的部分匹配。如果没有变量,那么所有生成的部分匹配将存储在beta内存中。
您的图表应该如下所示:
a1 a2 a3 a4
\ / \ / /
b1 b2 /
| \ /
r1 b3
|
r2
https://stackoverflow.com/questions/45894927
复制相似问题