2017-08-26 189 views
0

我想繪製一個示例規則的Rete網絡,它在不同模式中的變量之間沒有綁定關係。我知道beta網絡用於確保不同模式中的彎曲變量是一致的。Rete網絡沒有測試版網絡?

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

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

在R1,有兩個模式之間沒有綁定變量,我應該如何的Rete網絡中結合他們的結果呢? 在R2中,兩個規則綁定變量,而第三個規則沒有。如何結合網絡中的三條規則? 我搜索了Rete網絡例子的這種情況,但沒有找到任何。我試圖畫出網絡,下面是我的網絡。這樣對嗎?

更新:根據Gary的回答

enter image description here 感謝

回答

2

貝塔節點新的網絡存儲部分匹配,無論是否有需要檢查的一致性模式指定的變量。變量綁定僅用於過濾存儲在beta內存中的部分匹配。如果沒有變量,則所有生成的部分匹配將被存儲在beta內存中。

你的圖應該是這樣的:

a1 a2 a3 a4 
    \/\//
    b1 b2 /
    |  \/
    r1  b3 
      | 
      r2 
+0

感謝加里的答案。它爲我澄清了圖片。每個測試版節點之後是否應該有測試版內存,或者只有更多的聯合操作?我的意思是,即使有最後一個連接節點,也必須有beta內存?我用一個修改後的網絡更新了我的問題,請告訴我,如果這是現在。非常感謝 –

+0

我不會說有一個規範的實施rete算法。有一些事情需要節點共享和部分匹配,但實現rete的各種工具使用差異技術。 Doorenbos的「大型學習系統的產品匹配」,http://reports-archive.adm.cs.cmu.edu/anon/1995/CMU-CS-95-113.pdf,對rete的不同實現有很好的概述。無論相關模式是否包含變量,測試版網絡中的每個節點都將擁有與其關聯的beta內存。 –