2

我正在尝试为一个示例规则绘制一个 Rete 网络,该规则在不同模式的变量之间没有绑定。我知道 beta 网络用于确保不同模式的弯曲变量是一致的。

(defrule R1
  (type1 c1 c2)
  (type2 c3)
 =>
)

(defrule R2
  (type2 c3)
  (type3 c4 v1)
  (type4 c5 v1)
 =>
) 

在 R1 中,两种模式之间没有绑定变量,那么我应该如何在 Rete 网络中组合它们的结果呢?在 R2 中,两条规则绑定了变量,而第三条则没有。如何在网络中结合三个规则?对于这种情况,我搜索了 Rete 网络示例,但没有找到。我试图绘制网络,下面是我的网络。这样对吗?

更新:基于加里回答的新网络

在此处输入图像描述 谢谢

4

1 回答 1

5

Beta 节点存储部分匹配,无论模式中是否指定了需要检查一致性的变量。变量绑定仅用于过滤存储在 beta 内存中的部分匹配项。如果没有变量,那么所有生成的部分匹配都将存储在 beta 内存中。

您的图表应如下所示:

a1    a2   a3   a4
  \  /  \  /    /
   b1    b2    /
   |       \  /
   r1       b3
            |
            r2
于 2017-08-26T20:06:06.297 回答