algorithm - 模式识别算法

标签 algorithm pattern-recognition

过去我不得不开发一个程序来充当规则评估器。您有一个前提和一些后果( Action ),因此如果前提评估为真,则执行的 Action 。

当时我用的是RETE algorithm的修改版(RETE 有三个版本,只有第一个是公开的)用于先行词模式匹配。我们在这里谈论的是一个大系统,每条规则有数百万次操作,一些操作符在多个规则中“重复”。

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

最佳答案

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

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

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

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

关于algorithm - 模式识别算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33076/

相关文章:

pattern-recognition - Gabor特征提取

java - 使用邻居递增地计算矩阵中的元素

algorithm - 生成树作为运行 Dijkstra 算法的结果?

machine-learning - 似然函数与抽样分布

image-processing - 识别数据模式的最佳方法是什么,以及了解有关该主题的更多信息的最佳方法是什么?

machine-learning - 使用隐马尔可夫模型进行连续手势识别

c++ - 如何实现排队 map ?

在二维网格上模拟膨胀气体的算法

c++ - 为什么 O(NlogN) 算法所花费的时间与 O(N^2) 相同?

artificial-intelligence - 当输入数量可变时如何使用神经网络?