欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
博客園 - ipointer - RETE算法的描述(原創(chuàng ))
 

通過(guò)一周左右的研究,對規則引擎有了一定的了解?,F在寫(xiě)點(diǎn)東西跟大家一起交流,本文主要針對RETE算法進(jìn)行描述。我的文筆不太好,如果有什么沒(méi)講明白的或是說(shuō)錯的地方,請給我留言。

首先申明,我的帖子借鑒了網(wǎng)上很流行的一篇帖子,好像是來(lái)自CSDN;還有一點(diǎn),我不想做太多的名詞解釋?zhuān)驗槲乙膊皇莻€(gè)研究很深的人,定義的不好怕被笑話(huà)。

好現在我們開(kāi)始。

首先介紹一些網(wǎng)上對于規則引擎比較好的帖子。

1、  來(lái)自JAVA視頻網(wǎng)

http://forum.javaeye.com/viewtopic.php?t=7803&postdays=0&postorder=asc&start=0

2、  RETE算法的最原始的描述,我不知道在哪里找到的,想要的人可以留下E-mail

3、  CMU的一位博士生的畢業(yè)論文,個(gè)人覺(jué)得非常好,我的很多觀(guān)點(diǎn)都是來(lái)自這里的,要的人也可以給我發(fā)mail   mailto:ipointer@163.com

 

接著(zhù)統一一下術(shù)語(yǔ),很多資料里的術(shù)語(yǔ)都非?;靵y。

1、  facts 事實(shí),我們實(shí)現的時(shí)候,會(huì )有一個(gè)事實(shí)庫。用F表示。

2、  patterns 模板,事實(shí)的一個(gè)模型,所有事實(shí)庫中的事實(shí)都必須滿(mǎn)足模板中的一個(gè)。用P表示。

3、  conditions 條件,規則的組成部分。也必須滿(mǎn)足模板庫中的一條模板。用C表示。我們可以這樣理解facts、patterns、conditions之間的關(guān)系。Patterns是一個(gè)接口,conditions則是實(shí)現這個(gè)接口的類(lèi),而facts是這個(gè)類(lèi)的實(shí)例。

4、  rules 規則,由一到多個(gè)條件構成。一般用andor連接conditions。用R表示。

5、  actions 動(dòng)作,激活一條rule執行的動(dòng)作。我們這里不作討論。

6、  還有一些術(shù)語(yǔ),如:working-memory、production-memory,跟這里的概念大同小異。

7、  還有一些,如:alpha-network、beta-network、join-node,我們下面會(huì )用到,先放一下,一會(huì )討論。

 

引用一下網(wǎng)上很流行的例子,我覺(jué)得沒(méi)講明白,我在用我的想法解釋一下。

 

假設在規則記憶中有下列三條規則

 

if A(x) and B(x) and C(y) then add D(x)

if A(x) and B(y) and D(x) then add E(x)

if A(x) and B(x) and E(x) then delete A(x)

 

RETE算法會(huì )先將規則編譯成下列的樹(shù)狀架構排序網(wǎng)絡(luò )


而工作記憶內容及順序為{A(1),A(2),B(2),B(3),B(4),C(5)},當工作記憶依序進(jìn)入網(wǎng)絡(luò )后,會(huì )依序儲存在符合條件的節點(diǎn)中,直到完全符合條件的推論規則推出推論。以上述例子而言, 最后推得D(2)。

 

讓我們來(lái)分析這個(gè)例子。

 

模板庫:(這個(gè)例子中只有一個(gè)模板,算法原描述中有不同的例子, 一般我們會(huì )用tuple,元組的形式來(lái)定義facts,patterns,condition

P: (?A , ?x)  其中的A可能代表一定的操作,如例子中的A,B,C,D,E ; x代表操作的參數??纯催@個(gè)模板是不是已經(jīng)可以描述所有的事實(shí)。

 

條件庫:(這里元組的第一項代表實(shí)際的操作,第二項代表形參)

C1: (A , <x>)

C2: (B , <x>)

C3: (C , <y>)

C4: (D , <x>)

C5: (E , <x>)

C6: (B , <y>)

 

事實(shí)庫:(第二項代表實(shí)參)

F1: (A,1)

F2: (A,2)

F3: (B,2)

F4: (B,3)

F5: (B,4)

F6: (C,5)

 

       規則庫:

         R1: c1^c2^c3

         R2: c1^c2^c4

         R3: c1^c2^c5

 

      

       有人可能會(huì )質(zhì)疑R1: c1^c2^c3,沒(méi)有描述出,原式中:

if A(x) and B(x) and C(y) then add D(x),A=B的關(guān)系。但請仔細看一下,這一點(diǎn)已經(jīng)在條件庫中定義出來(lái)了。

 

       下面我來(lái)描述一下,規則引擎中RETE算法的實(shí)現。

       首先,我們要定一些規則,根據這些規則,我們的引擎可以編譯出一個(gè)樹(shù)狀結構,上面的那張圖中是一種簡(jiǎn)易的表現,其實(shí)在實(shí)現的時(shí)候不是這個(gè)樣子的。

       這就是beta-network出場(chǎng)的時(shí)候了,根據rules我們就可以確定beta-network,下面,我就畫(huà)出本例中的beta-network,為了描述方便,我把alpha-network也畫(huà)出來(lái)了。

      

 

上圖中,左邊的部分就是beta-network,右邊是alpha-network,圓圈是join-node.

從上圖中,我們可以驗證,在beta-network中,表現出了rules的內容,其中r1,r2,r3共享了許多BMjoin-node,這是由于這些規則中有共同的部分,這樣能加快match的速度。

右邊的alpha-network是根據事實(shí)庫構建的,其中除alpha-network節點(diǎn)的節點(diǎn)都是根據每一條condition,從事實(shí)庫中match過(guò)來(lái)的,這一過(guò)程是靜態(tài)的,即在編譯構建網(wǎng)絡(luò )的過(guò)程中已經(jīng)建立的。只要事實(shí)庫是穩定的,即沒(méi)有大幅度的變化,RETE算法的執行效率應該是非常高的,其原因就是已經(jīng)通過(guò)靜態(tài)的編譯,構建了alpha-network。我們可以驗證一下,滿(mǎn)足c1的事實(shí)確實(shí)是w1,w2。

下面我們就看一下,這個(gè)算法是怎么來(lái)運行的,即怎么來(lái)確定被激活的rules的。從top-node往下遍歷,到一個(gè)join-node,AM for c1的節點(diǎn)匯合,運行到match c1節點(diǎn)。此時(shí),match c1節點(diǎn)的內容就是:w1,w2。繼續往下,與AM for c2匯合(所有可能的組合應該是w1^w3,w1^w4,w1^w5,w2^w3,w2^w4,w2^w5),因為c1^c2要求參數相同,因此,match c1^c2的內容是:w2^w3。再繼續,這里有一個(gè)扇出(fan-out),其中只有一個(gè)join-node可以被激活,因為旁邊的AM只有一個(gè)非空。因此,也只有R1被激活了。

解決扇出帶來(lái)的效率降低的問(wèn)題,我們可以使用hashtable來(lái)解決這個(gè)問(wèn)題。

RETE算法還有一些問(wèn)題,如:facts庫變化,我們怎么才能高效的重建alpha-network,同理包括rules的變化對beta-network的影響。這一部分我還沒(méi)細看,到時(shí)候再貼出來(lái)吧。

 幫我點(diǎn)一下旁邊的google廣告,謝謝了。

 

 

 

 

 

 

Feedback

# re: RETE算法的描述(原創(chuàng ))   

2005-09-28 23:24 by 傻強
我也在研究規則,也正在做相關(guān)的項目,但是因為需求的不斷變更,我做的東西已經(jīng)不倫不類(lèi)。詳情你可以訪(fǎng)問(wèn)我的blog:http://fusali.cnblogs.com/
你說(shuō)的資料我都感興趣,我的郵箱leeq1979(a)yahoo.com.cn,多謝共享

# re: RETE算法的描述(原創(chuàng ))   

2005-09-28 23:26 by Vokobo
我也想要一份. codear#126.com
BTW:沒(méi)看你旁邊的GOOGLE廣告呢,怎么點(diǎn)?
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
開(kāi)源規則引擎 drools
Drools學(xué)習筆記2-RETE算法
規則引擎實(shí)現探討
文件同步更新之Rsync算法的探討
JBoss Rules 學(xué)習(二): RETE算法
rete
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久