使用RETE算法的模块系统,有四个入口,分别是添加事实(add-wme)、去除事实(remove-wme)、添加规则(add-production)、去除规则(remove-production)。
上面的主要介绍了建立rete网络后添加事实的过程。下面先具体介绍alpha网络的建立和添加事实的过程,然后再介绍另外三个过程。
4.4 Alpha网络
当事实添加到工作内存后,alpha网络对事实进行必要的类型检测并把事实存放到相应的alpha内存里。有几种方法来寻找合适的alpha内存节点。
4.4.1 数据流网络
最直接的方式就是使用一个简单的数据流网络。
下图就是一个采用数据流网络建立的alpha网络。
上面的alpha网络仅仅检测条件中的常量,如attribute项上的常量有on,color,left-of;value项上的常量red maize blue green white。
4.4.2 带Hashing的数据流网络
上面的数据流网络的一个最大的缺点就是,当某个节点的扇出(fan-out)很大时,将会做大量的无用功(wasted work)。比如上图中对颜色的测试,某些专家系统可能含有大量的颜色,那么将会有大量的比较操作,从而造成匹配操作变慢。
一个解决这个问题的方法就是对于那些带有很大扇出的节点,采用hash表(或者平衡二叉树)来判断。
从上面的讨论可知,alpha网络非常有效,随着事实集合的变化,alpha网络可以几乎可以马上作出相应处理。Beta节点的处理占到了整个系统匹配的绝大部分时间。所以一般研究的都针对网络中的beta节点进行。
4.5 内存节点
Alpha内存存储事实集合,beta内存存储tokens(tokens指规则中已经匹配好的事实绑定)。
4.5.1 事实集合的结构
事实集合最简单的结构是采用链表结构。但是为了获得更高的效率,一般也给每个事实内存加上索引(indexing)。最常用的索引方法是采用Hash表。也可以采用树,但在多数rete算法实现上并不常用,(Barachini,1991)发现Hash表一般比非平衡二叉树的性能好。索引方法的缺点有两个:添加删除元素费时,降低了节点的复用度。所以索引方法在那些节点内存中并不包含很多元素的系统中不适用。
4.5.2 Token的结构
可以使用数组或链表来存储token。使用数组需要更多的空间,同时需要更多的时间来创建token。但是,拥有更快的访问速度。通常,选择的标准在于使用链表时访问某个元素的用的时间是否可以承受。
- 大小: 48.9 KB
分享到:
相关推荐
### RETE算法:高效解决大规模模式匹配问题 #### 引言与背景 RETE算法,由Charles L. Forgy在1982年提出,旨在解决大规模模式与对象的匹配问题,尤其适用于人工智能(AI)领域中的专家系统或生产规则系统。在这些...
Drools-Rete 算法简介 Drools-Rete 算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关。Rete 算法通过形成一个 Rete 网络进行模式匹配,利用基于规则的系统的两个特征,即时间冗余性(Temporal redundancy...
Rete算法,作为高效模式匹配的核心技术,在IT领域尤其是规则引擎设计中占据着举足轻重的地位。本文将深入解析Rete算法的关键概念、工作原理及其在现代规则引擎中的应用。 ### Rete算法概述 Rete算法是一种公开领域...
2. 查看`README`文件,通常会提供安装指南和快速入门示例。 3. 阅读`setup.py`文件,了解项目如何被构建和安装。 4. 查看源代码,特别是`py_rete`目录下的`__init__.py`或其他模块,理解库的核心功能。 5. 参考项目...
2. **生产移除**:与添加相反,这个功能允许从工作内存中移除不再相关的WMEs。这可能导致已经匹配的规则不再适用,因此算法需要重新评估所有可能的匹配。 3. **加法**:可能指的是添加新的规则到规则库中。当新规则...
资源分类:Python库 所属语言:Python 资源全名:py_rete-0.0.1.dev52-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
2. **决策表**:决策表是一种直观的方式来表示复杂的条件和行动之间的关系,特别是在多条件判断的情况下。URULE提供的决策表设计工具,使非技术人员也能理解和修改规则,提高业务规则的透明度和可维护性。 3. **...
### 2. 节点编辑器 节点编辑器是可视化编程中的关键组成部分。在Rete.js中,每个节点代表一个可执行的单元或功能,而连接线则表示节点间的依赖关系或数据流动。通过定义节点类型、属性和连接规则,开发者可以构建出...
2. **模式匹配**:rusty-rete利用Rust的枚举和结构体来表示规则,通过编译时的类型检查,确保只有符合规则的模式才会被匹配。这大大提升了匹配的效率,并减少了运行时错误。 3. **网络构建**:Rete网络的构造是一个...
为框架框架的Clojure RETE实现礼节基准表测试CLIPS v 6.24(毫秒) rete4frames v 5.3.0(毫秒) 礼仪8 1.316599 82 x 61 礼仪16 18岁247 x 14 礼貌32 272 1427 5倍礼仪64 8939 9635 x 1.1 礼仪128 324396 88690 x ...
The Rete Match Algorithm is an efficient method for comparing a large collection of patterns to a large collectionofobjects.Itfindsalltheobjectsthatmatcheachpattern. Thealgorithm wasdevelopedforusein ...
### Rete: 快速算法解决多模式/多对象匹配问题 #### 一、引言与背景 在《Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem》这篇论文中,作者提出了一种名为Rete的高效算法,旨在...
### Rete改进算法在大规模学习系统中的生产匹配 #### 概述 《Rete改进算法博士论文—Production Matching for Large Learning Systems》是一篇探讨如何优化基于规则的专家系统(Expert System)性能的研究工作。该...
2. 开发环境:为了进行开发和实时调试,你可以运行 `npm run serve`。这将启动一个本地服务器,提供热重载功能。每当你的代码发生变化时,浏览器会自动刷新,显示更新后的效果。这对于快速迭代和测试你的可视化编辑...
简单-具有Rete.js的Vue应用程序项目设置克隆存储库 git clone https://github.com/Hatead1/simple-rete-vue-app变更目录 cd simple-rete-vue-app/安装npm模块 npm i编译和热重装以进行开发 npm run serve在浏览器中...
智能环境下的分布式Rete算法研究,主要针对在智能环境中基于Rete算法的规则推理引擎在处理大量数据时,由于需要将数据集中到一个中心节点(sink节点)而带来的数据传输量过大的问题。Rete算法作为一种高效的模式匹配...