模式识别算法

9
过去,我曾经开发过一个作为规则评估器的程序。你有一个前提和一些结果(动作),如果前提被评估为真,则执行这些动作。
当时我使用了修改版的RETE算法(RETE有三个版本,只有第一个是公开的)进行前提模式匹配。我们在谈论一个大系统,在每个规则中有数百万次操作,并且一些运算符在多个规则中“重复”。
可能我需要用其他语言重新实现它,尽管我有RETE的经验,但是否有其他模式匹配算法?有什么建议或者我应该继续使用RETE?
1个回答

5
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
1
这些都是失效的链接。幸运的是,它们已经被保存在存档中:Rete*(https://web.archive.org/web/20130921054452/http://www.cs.bris.ac.uk/Publications/Papers/2000091.pdf)和LEAPS(https://web.archive.org/web/20080906184828/http://www.cs.utexas.edu/ftp/pub/predator/tr-94-28.pdf)。 - honestSalami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接