如果看过(可能是较旧的)Drools手册或某些其他规则引擎的手册,则其增值插图之一就是解决难题,例如Miss Manners难题(Drools手册)。现在,使用Prolog或较新的约束编程语言自然地解决了这些难题,有人想知道为什么有人会为此目的使用Drools。在这种情况下,Prolog和CPL所带来的附加价值是他们能够自然地将难题表达为一组逻辑谓词并自动搜索解决方案的空间(在这方面CPL效率更高)。但是,诸如Drools之类的产品的附加价值是什么(我的意思是,除了拿起Excel文件并将其转换为一组规则之外)。
更具体地说,Prolog实现了回溯搜索,CLP实现了具有约束传播的回溯搜索,因此,不是搜索单个变量的整个笛卡尔积,而是修剪掉该乘积空间的大部分。这使它们有效和有用。文献中充分讨论了Prolog和CLP。
另一方面,虽然很明显Rete算法以某些数据结构的形式缓存规则集,但是据我所知,如果某些输入已更改,则可以更有效地评估输出,并给出有效地更新此数据结构以进行增量更改的方法,(对我而言)很难理解基本思想,甚至更难理解其有效性(与Prolog和CLP相比)?不幸的是,很难找到在更广泛的上下文中查看Rete算法的良好参考。
不幸的是,在这方面,Drools的文档提供的信息很少。我能找到的最多的是“ Rete算法,Leaps算法及其后代(例如Drools的Reteoo(和Leaps))提供了非常有效的方式来将规则模式与您的域对象数据进行匹配。当您拥有不会完全改变(因为规则引擎可以记住过去的比赛。这些算法已经过战斗验证”。非常高效-相比之下呢?经战斗证明-可以指向现实世界的应用程序吗?
如果有人可以对此主题提供更多的启示或提供有效的参考,我将不胜感激。