对规则引擎和专家系统以及rete算法的一点认识

首先,谈一下规则引擎与专家系统的区别,因为网上有很多人将两者混为一谈了,不过这也只是小弟的一点浅显的认识,请各位大侠拍砖啊

规则系统的目的侧重于将业务逻辑的分离,主张业务逻辑从我们的应用编码中解脱出来,便于我们业务逻辑的修改,从而诞生出来的BRMS系统也是用来管理我们的业务规则的。
专家系统:侧重于人工智能,它是基于大量的事实而进行的推理行为,与规则引擎有很大的区别,专家系统注重知识的管理,而规则引擎侧重于规则的管理,以及规则与fact的匹配。

对rete的一点认识:

rete算法的成功之处在于,当我们构造好rete网之后,把我们的fact存储在working memory中,当wme在规则匹配的过程中发生了变化,需要进行loop来对变化都得规则进行匹配的时候,它可以节省我们的时间,进而达到节约时间的目的。(注:这个功能本来应该是专家系统所具有的,管理大量的知识,进行操作,当一个知识wme发生变化的时候,迅速的做出反应,而不必从头开始做分析,规则引擎正是使用了rete算法的这个优势来构造的。试想一个特殊的情况,假如我们系统中有10000条规则,当我们对一个wme-1进行分析的时候,需要将10000条规则全部匹配一便来分析wme能够触发的规则,然后运行触发规则的action,但是当action对wme有影响的时候,那么我们需要重新来做匹配,可能需要花费很长的时间。当然,我们也可以运用1--10000条规则来逐一的匹配所有的wme,当匹配成功的时候就触发规则,但是带来的结果也是跟上面的分析一样的,首先假设我们已经匹配过999条规则了,都没有匹配合适,但是我们的第1000条规则却匹配成功了,此时我们如何做呢?!我们需要执行第1000条rule的action,但是执行action的结果是对wme产生了影响,结果是我们需要对过去的999条规则做重新匹配,这样我们需要永无止境的做下去。)我想很多人将规则引擎与专家系统混为一谈大都是跟这个rete算法的关系。在这里小弟做一下澄清,请各位大神拍砖。

 

 

你可能感兴趣的:(算法)