`

Rete(2)

阅读更多

使用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算法:高效解决大规模模式匹配问题 #### 引言与背景 RETE算法,由Charles L. Forgy在1982年提出,旨在解决大规模模式与对象的匹配问题,尤其适用于人工智能(AI)领域中的专家系统或生产规则系统。在这些...

    drools-rete算法简介.docx

    Drools-Rete 算法简介 Drools-Rete 算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关。Rete 算法通过形成一个 Rete 网络进行模式匹配,利用基于规则的系统的两个特征,即时间冗余性(Temporal redundancy...

    Rete 算法PPT

    Rete算法,作为高效模式匹配的核心技术,在IT领域尤其是规则引擎设计中占据着举足轻重的地位。本文将深入解析Rete算法的关键概念、工作原理及其在现代规则引擎中的应用。 ### Rete算法概述 Rete算法是一种公开领域...

    PyPI 官网下载 | py_rete-0.0.7.dev5.tar.gz

    2. 查看`README`文件,通常会提供安装指南和快速入门示例。 3. 阅读`setup.py`文件,了解项目如何被构建和安装。 4. 查看源代码,特别是`py_rete`目录下的`__init__.py`或其他模块,理解库的核心功能。 5. 参考项目...

    Rete 模式匹配算法 的Rust实现_rust_代码_下载

    2. **生产移除**:与添加相反,这个功能允许从工作内存中移除不再相关的WMEs。这可能导致已经匹配的规则不再适用,因此算法需要重新评估所有可能的匹配。 3. **加法**:可能指的是添加新的规则到规则库中。当新规则...

    Python库 | py_rete-0.0.1.dev52-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:py_rete-0.0.1.dev52-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    一款基于RETE算法的纯Java规则引擎

    2. **决策表**:决策表是一种直观的方式来表示复杂的条件和行动之间的关系,特别是在多条件判断的情况下。URULE提供的决策表设计工具,使非技术人员也能理解和修改规则,提高业务规则的透明度和可维护性。 3. **...

    RetejsJavaScript可视化编程节点编辑器开发框架

    ### 2. 节点编辑器 节点编辑器是可视化编程中的关键组成部分。在Rete.js中,每个节点代表一个可执行的单元或功能,而连接线则表示节点间的依赖关系或数据流动。通过定义节点类型、属性和连接规则,开发者可以构建出...

    rusty-rete:Rete 算法在 Rust 中的实现

    2. **模式匹配**:rusty-rete利用Rust的枚举和结构体来表示规则,通过编译时的类型检查,确保只有符合规则的模式才会被匹配。这大大提升了匹配的效率,并减少了运行时错误。 3. **网络构建**:Rete网络的构造是一个...

    rete4frames:框架的Clojure 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 ...

    CMU-CS-79-forgy-RETE.pdf

    The Rete Match Algorithm is an efficient method for comparing a large collection of patterns to a large collectionofobjects.Itfindsalltheobjectsthatmatcheachpattern. Thealgorithm wasdevelopedforusein ...

    Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem*中文

    ### Rete: 快速算法解决多模式/多对象匹配问题 #### 一、引言与背景 在《Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem》这篇论文中,作者提出了一种名为Rete的高效算法,旨在...

    Rete 改进算法 博士论文-Production Matching for Large Learning Systems

    ### Rete改进算法在大规模学习系统中的生产匹配 #### 概述 《Rete改进算法博士论文—Production Matching for Large Learning Systems》是一篇探讨如何优化基于规则的专家系统(Expert System)性能的研究工作。该...

    rete.js.org:示例和文档

    2. 开发环境:为了进行开发和实时调试,你可以运行 `npm run serve`。这将启动一个本地服务器,提供热重载功能。每当你的代码发生变化时,浏览器会自动刷新,显示更新后的效果。这对于快速迭代和测试你的可视化编辑...

    simple-rete-vue-app:带有rete.js的Vue应用

    简单-具有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算法.pdf

    智能环境下的分布式Rete算法研究,主要针对在智能环境中基于Rete算法的规则推理引擎在处理大量数据时,由于需要将数据集中到一个中心节点(sink节点)而带来的数据传输量过大的问题。Rete算法作为一种高效的模式匹配...

Global site tag (gtag.js) - Google Analytics