1、算法简介
Rete算法是Charles Forgy在1979年的论文中首次提出的,针对基于规则知识表现的高效模式匹配算法,就目前来说,大部分规则引擎还是基于rete算法作为核心,但都有所改进,比如drool,jess等。
Rete算法有两个特点使其优于传统的模式匹配算法:
1)状态保存。事实库的每次变化,其匹配后的状态都被保存在alpha和beta节点中。在下一次事实库发生变化时,绝大多数的结果都不需要变化,Rete算法通过保存操作过程中的状态,避免了大量的重复计算。Rete算法主要是为那些事实库变化不大的系统设计的,当每次事实库的变化非常剧烈时,Rete的状态保存算法效果并不理想。
2)节点共享。另一个特点就是不同规则之间含有相同的模式,从而可以共享同一个节点。Rete网络的各个部分包含各种不同的节点共享。
2、算法基本概念
1)working memory事实库(facts),表示系统当前的状态,是将要被处理的数据。组成working memory里的每一项叫做working memory element(WME)。我们假设WME采取三元组的这种表示方式,(identifier ^attribute value) ,举一个简单的例子,在一个“积木的世界”里,它的working memory