rete演算法 模型構建過程

2022-07-11 09:51:10 字數 1622 閱讀 3527

本文只用於理解rete演算法,通過乙個規則的編譯成的網路結構,以及匹配過程去理解rete演算法的核心思想。具體實現,截止寫本文之時,還不了解。只是提供乙個rete演算法的實現思路。再次重申,只用於理解rete演算法。如有不正確,請交流指正,一定會非常感謝。

if:

年級是三年級以上,

性別是男的,

年齡小於10歲,

身體健壯,

身高170cm以上,

then:

這個男孩是乙個籃球苗子,需要培養

匹配過程:

(1)匹配過程中事實在網路節點中的流轉順序為a-->b-->c-->d-->e-->f-->g-->h-->i--->規則匹配通過

(2)從working-memory中拿出乙個待匹配的studentfact物件,進入根節點然後進行匹配,以下是fact在各個節點中的活**

a節點:拿studentfact的年級數值進行年級匹配,如果年級符合條件,則把該studentfact的引用記錄到a節點的alpha記憶體區中,退出年級匹配。

b節點:拿studentfact的性別內容進行性別匹配,如果性別符合條件,則把該studentfact的引用記錄到b節點的alpha記憶體區中,然後找到b節點左引用的beta節點,也就是c節點。

c節點:c節點找到自己的左引用也就是a節點,看看a節點的alpha記憶體區中是否存放了studentfact的引用,如果存放,說明年級和性別兩個條件都符合,則在c節點的beta記憶體區中存放studentfact的引用,退出性別匹配。

d節點:拿studentfact的年齡數值進行年齡條件匹配,如果年齡符合條件,則把該studentfact的引用記錄到d節點的alpha的記憶體區中,然後找到d節點的左引用的beta節點,也就是e節點。

e節點:e節點找到自己的左引用也就是c節點,看看c節點的beta記憶體區中是否存放了studentfact的引用,如果存放,說明年級,性別,年齡三個條件符合,則在e節點的beta記憶體區中存放studentfact的引用,退出年齡匹配。

f節點:拿studentfact的身體數值進行身體條件匹配,如果身體條件符合,則把該studentfact的引用記錄到d節點的alpha的記憶體區中,然後找到f節點的左引用的beta節點,也就是g節點。

g節點:g節點找到自己的左引用也就是e節點,看看e節點的beta記憶體區中是否存放了studentfact的引用,如果存放,說明年級,性別,年齡,身體四個條件符合,則在g節點的beta記憶體區中存放studentfact的引用,退出身體匹配

h節點:拿studentfact的身高數值進行身高條件匹配,如果身高條件符合,則把該studentfact的引用記錄到h節點的alpha的記憶體區中,然後找到h節點的左引用的beta節點,也就是i節點。

i節點:i節點找到自己的左引用也就是g節點,看看g節點的beta記憶體區中是否存放了studentfact的引用,如果存放了,說明年級,性別,年齡,身體,身高五個條件都符合,則在i節點的beta記憶體區中存放studentfact引用。同時說明該studentfact物件匹配了該規則,形成乙個議程,加入到衝突區,執行該條件的結果部分:該學生是乙個籃球苗子。

Rete演算法筆記

今天晚上看了一下rete演算法,感覺理解了,記錄如下 1,規則 rule 例如 if p then r 就是一條規則。其中p包含乙個或多個部分,具體表示如下 if p1 p2 p3 then r。其中p1 p2等部分的表現形式被抽象 泛化 為 on 或 and 等一般 形式,類似於c 中的模板類,在...

RETE演算法介紹

rete演算法介紹 一 rete概述 rete演算法是一種前向規則快速匹配演算法,其匹配速度與規則數目無關。rete是拉丁文,對應英文是net,也就是網路。rete演算法通過形成乙個rete網路進行模式匹配,利用基於規則的系統的兩個特徵,即時間冗 余性 temporal redundancy 和結構...

Rete快速匹配演算法

rete 快速匹配演算法 rete 演算法首先是由c.l.forgy在1979年實現的。該演算法是乙個快速的模式匹配演算法,它通過儲存關於規則的資訊而獲得速度。模式匹配的基本概念 可滿足規則 乙個規則稱為可滿足的,若規則的每一模式均能在當前工作儲存器中找到可匹配的事實,且模式之間的同一變數能取得統一...