規則推理演算法 Treat

2021-08-09 05:03:13 字數 3620 閱讀 7216

參考自《treat: a better match algorithm for ai production systems》

引言

文中提出treat演算法並引入了一種新的狀態儲存方法,叫conflict-set support,並對treat和rete演算法進行了效能比較。結論是在5個不同的ops5產生式程式中,treat優於rete。

通常來說,乙個產生式系統由一組規則或產生式作為規則庫,和一些事實(working memory elements)wme組成,每個產生式由lhs和rhs組成,lhs包含一組條件也就是pattern來匹配事實,rhs就是規則觸發後要執行的動作,包括對working memory的更新等等。產生式系統一直重複執行match(事實匹配規則)、select(從觸發規則集中選規則執行其rhs)、act(就是選到的規則執行的動作)。

一般來說,執行過程中很多working memory都不怎麼改變,所以遞增地計算conflict set及狀態儲存是有意義的。(也算是rete等演算法高效的依據)。rete演算法被認為是對於這類問題最好的演算法。然而,沒有對它和其他演算法進行比較的相關的文獻,並且mcdermott, newell and moore三個人提出乙個猜測,就是rete中的狀態儲存機制可能是沒有價值的。

匹配演算法的發展:

1、模擬關聯式資料庫,單個條件的匹配可以看做資料庫中乙個物件的查詢,多個條件一起的匹配,就像資料庫中的join操作一樣。

2、狀態儲存減少計算,介紹幾種可儲存的狀態。mcdermott, newell and moore提出了三種可以合併到演算法中的知識和狀態資訊分別是condition membership、memory support、condition relationship,treat演算法提出第四種conflict-set。

-condition membership,每個條件使用乙個count變數來記錄滿足條件的wme,如果乙個規則的所有(非否定)條件對應的count都不為0,那這個規則就是active的,匹配演算法忽略那些不是active的規則。

-memory support,就是每個條件維護乙個indexing memory來儲存看哪些wme滿足該條件,也就是alpha-memory。

-condition relationship,類似資料庫的join操作,代表規則中條件之間連線的關係。

-conflict set support,就是匹配成功規則的wme,即如果a 1 b 12 c 2,滿足規則的所有條件,就把它們存起來。

rete演算法的優缺點:

優點:大量的狀態儲存極大減少了重複計算,節點共享。

缺點:當乙個wme移除時,需要進行一系列操作來維護。還有beta memory占用的空間太多,共享網路結構不適合並行環境等等以及沒有理由condition support,就是對於所有的規則都進行計算。提出treat演算法的主要動機是rete演算法在並行環境中的困難。

treat演算法:

a.conflict set support

實現這個要求假設沒有否定條件時候(否定條件的意義就是某個事件不發生,有這種條件會使規則複雜一些),當action是增加乙個wme時,這個wme進行計算,如果有這個wme參與的最後匹配規則的例項,加入conflict set中。如果是刪除乙個wme,則直接找conflict set中包含這個的刪掉即可。

b.negated condition elements

加入否定條件複雜化了演算法,treat演算法必須考慮4種情況,加入新的wme,觸發新的規則或者是使得已匹配的有否定條件的規則刪除。刪除乙個wme,刪掉已匹配的規則或觸發有否定條件的規則.

c.treat演算法細節

treat演算法利用了condition membership,memory support,和conflict set support。每個條件都對應有標號,來對其相關資訊進行索引。alpha mempories就是memory support的部分,這個和rete演算法中一樣,但是alpha memories在網路中是由乙個vector組織的,而不是雜亂無章散布的。alpha-mempory由三部分組成,old,new-delete和new-add。有新的wme增加或者刪除時都不是直接操作old,而是先加到new-add或new-delete裡。

為引入condition membership,當alpha-memory的old-men部分更新時候,檢查它是否由有變為空或者由空變為有,如果檢測到這種臨界的改變,就更新active rule的集合。(active rule是指所有單個條件對應的alpha memory都有匹配的,這個規則就是active的,當alpha-memory中有臨界的改變時候,有的active rule變為not active,有的變為active).

treat演算法示意圖

treat演算法處理流程

演算法流程解釋:

1.act:執行rhs中的動作,對wm進行改變。

2.對於每個wm的改變,進行相應處理。

對於每個條件元組cei,如果wme匹配條件成功,若是增加到wm的,就加到new-add-men[cei],若是刪除的就加到new-delete-men[cei].

3.match:處理刪除

4.對於每個非空的del-mem,cur-ce=ce-num,即當前操作的memory,修改old-memory[cur-ce]=old-memory[cur-ce]-new-del-men[cur-ce],如果old-memory大小變為0,then update-rule-active,即調整對應的active-rule。

然後進行匹配,如果wme元組對應的條件是肯定條件,就直接刪掉conflict-set中對應有這個元組的例項即可。如果這個條件是否定條件,那就拿它來和滿足條件元組的進行匹配,生成新的觸發規則的例項,存到conflict-set中

5.match:處理增加

6.對於每個非空add-mem,cur-ce=ce-num,old-size=size of old-mem。old-mem[cur-ce]=old-mem[cur-ce]+add

-mem[cur-ce].如果old-size=0 then update-rule-active.然後再根據條件來進行操作,和delete的類似。

treat演算法和rete演算法在上面操作中很多都是相同的,但是treat演算法沒有儲存beta-memory,而是每次重複計算,rete每次只需要計算一次,但是treat演算法在刪除wme時比rete簡化很多。文中在5個ops5程式上進行了比較。比較rete和treat演算法的比較次數,下面是比較的結果

根據結果來看,treat演算法對於delete wme時所進行的操作比rete少的多,add wme時所進行的的操作要超過rete或差不多。

mysql中進行規則推理 DBMS推理規則(IR)

阿姆斯特朗的公理是基本的推理規則。阿姆斯特朗的公理用於結束關聯式資料庫的函式依賴。推理規則是一種斷言。它可以應用於一組fd 函式依賴 以匯出其他fd 函式依賴 使用推理規則,可以從初始集中匯出額外的函式依賴。函式依賴有6種型別的推理規則 1.自反規則 ir1 在反身規則中,如果y是x的子集,則x確定...

規則推理引擎簡介

規則推理引擎也叫產生式系統,是由基於規則的專家系統發展而來。基於規則的專家系統是人工智慧領域中專家系統的 乙個分支,它模擬人類的推理方式,使用試探性的方法進行推理,並使用人類能理解的術語解釋和證明它的推理結論。基於規則的專家系統,使用的知識包括 if 條件 then 動作 基於規則的專家系統主要包括...

儲存管理演算法

計算並輸出下述各種演算法在不同記憶體容量下的命中率。a.fifo 先進先出的演算法 b.lrr 最近最少使用演算法 c.opt 最佳淘汰演算法 先淘汰最不常用的頁位址 d.lfr 最少訪問頁面演算法 e.nur 最近最不經常使用演算法 include include include include ...