模式识别算法

Jor*_*oba 8 algorithm pattern-recognition

在过去,我不得不开发一个作为规则评估员的程序.你有一个先行者和一些结果(行动),所以如果先行者躲到了真实的行动.

那时我使用了RETE算法的修改版本(有三个版本的RETE,只有第一个是公共的)用于先行模式匹配.我们在谈论一个大系统,每条规则有数百万次操作,一些操作员在几条规则中"重复".

我可能必须用其他语言再次实现它,即使我在RETE中有经验,有没有人知道其他模式匹配算法?有什么建议或者我应该继续使用RETE吗?

Dav*_*row 5

TREAT 算法类似于 RETE,但不记录部分匹配。因此,在某些情况下,它使用的内存可能比 RETE 少。此外,如果您修改了大量已知事实,那么 TREAT 会快得多,因为您不必花时间进行撤回。

还有RETE*,它通过根据您要使用的内存量保存一些连接节点状态来平衡 RETE 和 TREAT。因此,您仍然可以节省一些断言时间,而且还可以节省内存和收回时间,具体取决于您如何调整系统。

您可能还想查看LEAPS,它使用惰性求值方案并结合了 RETE 和 TREAT 的元素。

我只有使用 RETE 的个人经验,但似乎 RETE* 或 LEAPS 是更好、更灵活的选择。