规则引擎研究之Rete算法.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
规则引擎研究之Rete算法rete概述 Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关。Rete是拉丁文,对应英文是net,也就是网络。Rete算法通过形成一个rete网络进行模式匹配,利用基于规则的系统的两个特征,即时间冗余性(Temporal redundancy)和结构相似性(structural similarity),提高系统模式匹配效率。相关概念事实(fact)事实:对象之间及对象属性之间的多元关系。为简单起见,事实用一个三元组来表示:(identifier ^attribute value),例如如下事实:w1:(B1 ^ on B2) w6:(B2 ^color blue)w2:(B1 ^ on B3) w7:(B3 ^left-of B4)w3:(B1 ^ color red) w8:(B3 ^on table)w4:(B2 ^on table) w9:(B3 ^color red)w5:(B2 ^left-of B3)规则(rule) 由条件和结论构成的推理语句,当存在事实满足条件时,相应结论被激活。一条规则的一般形式如下:(name-of-this-production LHS /*one or more conditions*/-- RHS /*one or more actions*/)其中LHS为条件部分,RHS为结论部分。下面为一条规则的例子:(find-stack-of-two-blocks-to-the-left-of-a-red-block (^on)(^left-of)(^color red)--...RHS...)模式(patten)模式:规则的IF部分,已知事实的泛化形式,未实例化的多元关系。(^on)(^left-of)(^color red)模式匹配的一般算法 规则主要由两部分组成:条件和结论,条件部分也称为左端(记为LHS, left-hand side),结论部分也称为右端(记为RHS, right-hand side)。为分析方便,假设系统中有N条规则,每个规则的条件部分平均有P个模式,工作内存中有M个事实,事实可以理解为需要处理的数据对象。 规则匹配,就是对每一个规则r, 判断当前的事实o是否使LHS(r)=True,如果是,就把规则r的实例r(o)加到冲突集当中。所谓规则r的实例就是用数据对象o的值代替规则r的相应参数,即绑定了数据对象o的规则r。 规则匹配的一般算法:从N条规则中取出一条r;从M个事实中取出P个事实的一个组合c;用c测试LHS(r),如果LHS(r(c))=True,将RHS(r(c))加入冲突集中;取出下一个组合c,goto 3;取出下一条规则r,goto 2;RETE算法 Rete算法的编译结果是规则集对应的Rete网络,如下图。Rete网络是一个事实可以在其中流动的图。Rete网络的节点可以分为四类:根节点(root)、类型节点(typenode)、alpha节点、beta节点。其中,根结点是一个虚拟节点,是构建rete网络的入口。类型节点中存储事实的各种类型,各个事实从对应的类型节点进入rete网络。建立rete网络Rete网络的编译算法如下:创建根;加入规则1(Alpha节点从1开始,Beta节点从2开始);取出模式1,检查模式中的参数类型,如果是新类型,则加入一个类型节点;检查模式1对应的Alpha节点是否已存在,如果存在则记录下节点位置,如果没有则将模式1作为一个Alpha节点加入到网络中,同时根据Alpha节点的模式建立Alpha内存表;重复b直到所有的模式处理完毕;组合Beta节点,按照如下方式:    Beta(2)左输入节点为Alpha(1),右输入节点为Alpha(2)    Beta(i)左输入节点为Beta(i-1),右输入节点为Alpha(i) i2 并将两个父节点的内存表内联成为自己的内存表;重复d直到所有的Beta节点处理完毕;将动作(Then部分)封装成叶节点(Action节点)作为Beta(n)的输出节点;重复2)直到所有规则处理完毕;可以把rete算法类比到关系型数据库操作。把事实集合看作一个关系,每条规则看作一个查询,将每个事实绑定到每个模式上的操作看作一个Select操作,记一条规则为P,规则中的模式为c1,c2,…,ci, Select操作的结果记为r(ci),则规则P的匹配即为r(c1)◇r(c2)◇…◇(rci)。其中◇表示关系的连接(Join)操作。使用rete网络进行匹配使用一个rete的过程:对于每个事实,通过select 操作进行过滤,使事实沿着rete网达到合适的alpha节点

文档评论(0)

js1180 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档