rete演算法學習

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

在上篇部落格中,介紹了策略型商務邏輯處理中幾種選擇,其中有一種選擇就是利用規則引擎來進行邏輯處理。其實藏在規則引擎的底層中還是有很多演算法的,其中有一種演算法是rete演算法,最近正好也關注演算法,就簡單的學習了一下,因為對這個演算法理解的非常清楚,所以如果有有對這個演算法熟悉的朋友,可以給予指正。

 

RETE演算法是一個用於產生式系統的高效模式比對演算法。在一個產生式系統中,被處理的資料叫做working memory,用於判定的規則分為兩個部分LHS(left-hand-side)和RHS(right hand side),分別表示前提和結論。主要流程可以分為以下步驟:

  1. Match:找出符合LHS部分的working memory集合
  2. Confilict resolution:選出一個條件被滿足的規則
  3. Act:執行RHS的內容
  4. 返回1  

RETE演算法主要改進Match的處理過程,通過構建一個網路進行匹配。

 

演算法詳細描述

 

RETE網路主要分為兩個部分,alpha網路和beta網路。如所示(圖片引用其他網站)。

 

 

 

(1)alpha網路:過濾working memory,找出符合規則中每一個模式的集合,產生alpha memory(滿足該模式的集合)。有兩種類型的節點,過濾type的節點和其他條件過濾的節點。

(2)Beta網路:有兩種類型的節點Beta Memory和Join Node。前者主要儲存Join完成後的集合。後者包含兩個輸入口,分別輸入需要匹配的兩個集合,由Join節點做合并工作傳輸給下一個節點。

 

 匹配流程說明

  1. 匯入需要處理的事實到facts集合中。
  2. 如果facts不為空白,選擇一個fact進行處理。否則停止匹配過程。
  3. 選擇alpha網的第一個節點運行(建立網路的時候設定的),通過該節點則進入alpha網的下一個節點,直到進入alpha memory。否則跳轉到下一條判斷路徑
  4. 將alpha memory的結果加入到beta memory中,如果不為Terminal節點,則檢測另一個輸入集合中是否存在滿足條件的事實,滿足則執行join,進入到下一個beta memory重複執行3。若另一個輸入集合無滿足條件的事實,返回到2。如果該節點為Terminal節點,執行ACT並添加到facts中。

 用一個例子描述過程

(1)現在WME中有以下這些事實。

w1:(B1 ^on B2)

w2:(B1 ^on B3)

w3:(B1 ^color red)

w4:(B2 ^on table)

w5:(B2 ^left-of B3)

w6:(B2 ^color blue)

w7:(B3 ^left-of B4)

w8:(B3 ^on table)

w9:(B3 ^color red)

 

(2)下面描述規則

下面是三條匹配條件

C1: (<x> ^on <y>)

C2:(<y> ^left-of <z>)

C3:(<z> ^color red)

下面是規則要滿足的所有條件,即所有LHS

p1 has conditions C1^C2^C3

p2 has conditions C1^C2^C4^C5

p3 has conditions C1^C2^C4^C3

 

(3)推理描述

     根據Ci,圖中的藍色alpha結點應該有三種,分別判定on,left-of和color。則黃色的alpha memory中包含三個集合,分別是

滿足C1:{w1 w2 w4 w8}

滿足C2:{w5 w7}

滿足C3:{w2 w6 w9}

     以p1為例,首先以C1,C2為輸入,在綠色Dummy Input節點中進行操作,並傳入到梅紅色beta momory中,此時這個節點儲存的是(w1^w5,w2^w7)。然後以這個集合和C3為輸入,操作得出w1^w5^w9,此時發現沒有更多的模式需要匹配,到達Terminal節點,匹配結束。這樣就得到滿足規則的集合組合了。

 

通過這些理論和一個執行個體應該對rete演算法清除了些,下面部落格介紹drools規則引擎工具,它是一個實現Rete演算法的很好的規則引擎架構。

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.