没有 beta 网络的 Rete 网络?
Rete network without beta network?
我正在尝试为示例规则绘制 Rete 网络,该规则在不同模式的变量之间没有绑定。我知道 beta 网络是用来确保不同模式中的弯曲变量是一致的。
(defrule R1
(type1 c1 c2)
(type2 c3)
=>
)
(defrule R2
(type2 c3)
(type3 c4 v1)
(type4 c5 v1)
=>
)
在R1中,两个模式之间没有绑定变量,那么我应该如何在Rete网络中合并它们的结果呢?
在 R2 中,两个规则有绑定变量,而第三个没有。如何在网络中结合三种规则?
我为这种情况搜索了 Rete 网络示例,但没有找到。我试图绘制网络,下面是我的网络。对吗?
更新:基于 Gary 回答的新网络
谢谢
Beta 节点存储部分匹配,而不管模式中是否指定了需要检查一致性的变量。变量绑定仅用于过滤存储在 beta 内存中的部分匹配项。如果没有变量,则所有生成的部分匹配都将存储在 beta 内存中。
您的图表应如下所示:
a1 a2 a3 a4
\ / \ / /
b1 b2 /
| \ /
r1 b3
|
r2
我正在尝试为示例规则绘制 Rete 网络,该规则在不同模式的变量之间没有绑定。我知道 beta 网络是用来确保不同模式中的弯曲变量是一致的。
(defrule R1
(type1 c1 c2)
(type2 c3)
=>
)
(defrule R2
(type2 c3)
(type3 c4 v1)
(type4 c5 v1)
=>
)
在R1中,两个模式之间没有绑定变量,那么我应该如何在Rete网络中合并它们的结果呢? 在 R2 中,两个规则有绑定变量,而第三个没有。如何在网络中结合三种规则? 我为这种情况搜索了 Rete 网络示例,但没有找到。我试图绘制网络,下面是我的网络。对吗?
更新:基于 Gary 回答的新网络
Beta 节点存储部分匹配,而不管模式中是否指定了需要检查一致性的变量。变量绑定仅用于过滤存储在 beta 内存中的部分匹配项。如果没有变量,则所有生成的部分匹配都将存储在 beta 内存中。
您的图表应如下所示:
a1 a2 a3 a4
\ / \ / /
b1 b2 /
| \ /
r1 b3
|
r2