2008-08-28 119 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