9

过去,我必须开发一个充当规则评估器的程序。你有一个先行词和一些后续事件(动作),所以如果先行词被评估为真,那么执行的动作。

当时我使用了RETE 算法的修改版本(RETE有三个版本,只有第一个是公开的)用于前件模式匹配。我们在这里谈论的是一个大型系统,每个规则有数百万个操作,并且一些操作符在多个规则中“重复”。

有可能我必须用其他语言重新实现它,即使我在 RETE 方面有经验,有人知道其他模式匹配算法吗?有什么建议还是我应该继续使用 RETE?

4

1 回答 1

5

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

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

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

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

于 2008-08-29T00:42:18.040 回答