rete算法是一种有效的模式匹配算法,它将大量的模式集合与大量的对象集合进行比较。它还用于我现在正在研究的一个专家系统外壳:isdrools
。
什么是时间复杂度的算法,基于规则的数量我有吗?
以下是Rete算法的链接:http://www.balasubramanyamlanka.com/rete-algorithm/
也适用于口水:https://drools.org/
最佳答案
估计ReTE的复杂性是一个非平凡的问题。
首先,不能将规则数用作维度。您应该查看的是规则所具有的单个约束或匹配。可以将规则视为组合在一起的约束的集合。这就是所有的原因。
一旦粗略估计了规则库的约束数量,就需要查看那些相互依赖的约束。相互依赖的约束是最复杂的匹配,在概念上与SQL查询中的连接非常相似它们的复杂性是根据它们的性质以及工作记忆的状态而变化的。
然后你需要看看你工作记忆的大小在基于rete的专家系统中,您断言的事实数量会强烈影响其性能。
最后,您需要考虑引擎冲突解决策略如果您有几个冲突的规则,可能需要花费大量时间来确定执行它们的顺序。
关于rete性能,有一个非常好的PhD dissertation我建议您看看。作者是Robert B.Doorenbos,题目是“大型学习系统的生产匹配”。