2008-08-28 97 views
6

在過去,我不得不開發一個程序作爲規則評估者。你有一個先行者和一些輔助者(行動),所以如果先行者逃避了真正的行爲。模式識別算法

當時我使用RETE algorithm的修改版本(有三個版本的RETE只有第一個公開版本)用於先行模式匹配。我們正在談論一個大系統,每個規則有數百萬次操作,有些操作符在幾條規則中「重複」。

這是可能的,我將不得不在其他語言中重新實現它,即使我有RETE經驗,是否有人知道其他模式匹配算法?任何建議,或者我應該繼續使用RETE?

回答

4

TREAT算法類似於RETE,但不記錄部分匹配。因此,在某些情況下,它可能比RETE使用更少的內存。此外,如果您修改了大量已知事實,則TREAT可以更快,因爲您不必花費時間進行撤消。

還有RETE*它通過保存一些連接節點狀態取決於你想要使用多少內存在RETE和TREAT之間進行平衡。因此,您仍然可以節省一些斷言時間,但根據調整系統的方式也可節省內存和縮回時間。

您可能還想看看LEAPS,它使用了懶惰的評估方案併合並了RETE和TREAT的元素。

我只有RETE的個人經驗,但看起來像RETE *或LEAPS是更好,更靈活的選擇。

+1

LEAPS鏈接:ftp://ftp.cs.utexas.edu/pub/predator/tr-94-28.pdf – biziclop 2012-03-12 09:39:50