Rete之外的生活– RIP Rete 2013 :)

我只是对我的新算法进行最后的修改。 它合并了Leaps , 面向集合的Match和Left / Right取消链接的概念 ,以及我自己的一些想法。 该代码已提交,但我正在积累工作并编写更多测试。 我将在一周左右的时间内写一个完整的博客,详细介绍该博客,并希望为人们提供一个Alpha版本。 该算法解决了Rete的贪婪和浪费性质。 如果我们使用GWT进行JS移植,这将使其适用于更受限的环境,例如移动设备或浏览器。 此外,它的设计考虑了多核的使用-尽管我还没有实现。 对于那些了解术语的人,这里是我到目前为止所做的要点列表。

规则解除连结

  • 用细分来保留共享。 位掩码用于正确的输入和段,以进行有效检查。
  • 当所有正确的输入都设置了位时,段就将其设置了位。
  • 当每个段都设置了位时,将链接一个规则。
  • 在一条规则都完全链接到议程中之前,不会进行beta测试(请参阅惰性规则评估)
  • 当任何正确的输入中没有数据时,可以取消链接的规则
    • 保留所有的全部和部分联接数据。
  • 我怀疑我们可以使用弧度一致性来设置某个位时进一步延迟,而不是简单地设置一个正确的输入

懒惰规则评估

  • 链接时不会评估Rule的beta网络。 而是将其添加到优先级队列中,仅当它弹出时,我们才评估其Beta网络

面向集合的传播

  • 为正确的输入暂存所有插入,更新和删除操作,直到评估规则为止。
  • Beta网络评估从根本开始
    • 所有插入/更新/删除操作一起处理,导致一组元组传播到下一个节点
  • 确保课程粒度节点评估,非常适合多核调度。
  • 单次传播而不是典型的Rete,深度搜索会影响网络。
  • 请注意,我们还没有进行面向集合的匹配,这会折叠节点中的匹配空间。
    • 当我们借用集合传播概念时,面向集合的匹配的碎片整理过程需要更多考虑,因为它有缺点。

就地修改/差异更新

  • 修改是真实的,而不是撤消+断言
  • 允许补偿“撤消”操作,因为我们知道真正删除了什么,更新了什么。
  • 保留对象,以避免GC命中。

物业反应

  • 模式可以侦听并对特定的属性更改做出反应
    • 将其视为属性更改侦听器,而不是当前类更改侦听器

基于树的图

  • 撤回只需要迭代图
  • 允许有效的“就地修改”

子网支持

  • 不存在,积累可以支持的嵌套组和模式
  • 作为单程网络评估的一部分得到支持
    • 我们的元组集到达左输入,然后递归地评估subetnworks。

虽然还不完整,但我可以想到以下一些TODO项目,以提出近期和长期的想法:

更有效的子网

  • 新的设计允许子网内更有效的执行,但是我们尚未利用这一优势。

GC加盟

  • 如果不使用联接,则允许在一段时间后进行GC联接,但还必须在不使规则执行顺序无效的情况下支持重新创建(即,如果已触发,则不能再次触发该规则)

不同的网络拓扑

  • Rete网络始终从左到右连接,这并不总是有效的。 Treat和Gator网络着眼于不同的拓扑结构如何减少加入尝试的次数,也可以改善与我们新的基于分段的网络的共享。

多核工作

  • 该设计现在已经基于队列,并且支持粗粒度的工作单元。 现在,我们需要开始创建线程模型,并更好地隔离和分离alpha网络传播过程。 这涉及重构我们现有的锁定模型。
  • 需要对重叠规则进行有效测试-即一个规则与另一条规则共享段。 这将使我们能够评估规则,而无需同步点。

智能链接

  • 当正确的输入接收到单个事实时,通过设置位完成链接。 弧度一致性可用于进一步延迟此链接过程,仅在实现弧度一致性时才在规则段以及规则中进行链接。

MVCC和交易

  • 传播模型应支持多版本并行控制。 这对于获得更好的多核支持是必不可少的,它将使事务支持成为可能。
RIP
RETE 2013 :)

参考: Drools&jBPM博客上来自JCG合作伙伴 Geoffrey De-Smet的《超越Rete的生活– RIP Rete 2013:》 。

翻译自: https://www.javacodegeeks.com/2013/04/life-beyond-rete-r-i-p-rete-2013.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu+vscode打不开

前沿: vscode链接参考链接 问题: 之前在Ubuntu上安装chrome, 结果chrome没装成功, 还把vscode给qiu坏了, 貌似是当时安装chrome时提示要升级一个包. 后来发现当时是修改了libnss这个包的版本: 解决方法: # 将libnss给downgrade一下就OK了. sudo apt install libnss32:3.21-1ubu…

java线程死锁代码_java线程死锁代码示例

死锁是操作系统层面的一个错误,是进程死锁的简称,最早在 1965 年由 Dijkstra 在研究银行家算法时提出的,它是计算机操作系统乃至整个并发程序设计领域最难处理的问题之一。事实上,计算机世界有很多事情需要多线程方式去解决&#…

【2018】判定三角形

Time Limit: 3 second Memory Limit: 2 MB 输入三个正整数,若能用这三个数作为边长组成三角形,则判断三角形的形状,如果是等边三角形就输出“DB”,如果是等腰三角形就输出“DY”,否则就输出“YB”;如果不能…

纯css隐藏移动端滚动条解决方案(ios上流畅滑动)

html代码展示&#xff08;直接复制代码保存至本地文件运行即可&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, init…

Spring Data Solr教程:配置

在我的Spring Data Solr教程的上一部分中&#xff0c;我们了解到Solr提供了一个类似REST的HTTP API&#xff0c;该API可用于向Solr索引添加信息并针对索引数据执行查询。 问题在于&#xff0c;在开发环境中运行单独的Solr实例有点麻烦。 但是&#xff0c;并非所有希望都因此而…

JavaAppArguments.java

思路&#xff1a;定义一个String类型的变量&#xff0c;用来接收每次args读取到的值&#xff0c;然后把String转换为int,然后计算输出sum。 流程图&#xff1a; 源代码&#xff1a; 截图&#xff1a; 转载于:https://www.cnblogs.com/xiaohaigege666/p/7635907.html

webpack 引入jquery和第三方jquery插件

1、引入jquery jQuery 直接在 html 中引入&#xff0c;然后在 webpack 中把它配置为全局即可。 index.html: <!DOCTYPE html><html><head><meta charset"UTF-8"><title><% htmlWebpackPlugin.options.title %></title>&…

Spring Data Solr教程:CRUD(差不多)

在我的Spring Data Solr教程的上一部分中&#xff0c;我们学习了如何配置Spring Data Solr。 现在该迈出一步&#xff0c;了解我们如何管理Solr实例中存储的信息。 此博客文章描述了我们如何向Solr索引添加新文档&#xff0c;如何更新现有文档的信息以及如何从索引中删除文档。…

数独项目--关键代码展示:

关键代码展示&#xff1a; //判断该数字在当前数独是否符合要求 int judge(int num, int ple){ int x ple / 9; //x表示数字的纵坐标 int y ple % 9; //y表示数字的横坐标 int qulx x / 3; int quey y / 3; //que表示9宫格的区域 for (int i 0; i < 9; i){ if (…

java svn 版本号_eclipse中的Java文件自动根据svn版本号生成注释

经常在java代码中看到以下的注释($Rev: $Date),是不是很酷,怎么生成的呢&#xff1f;/*** A FilterChain is an object provided by the servlet container to the developer* giving a view into the invocation chain of a filtered request for a resource. Filters* use th…

〖Mysql〗-- python操作数据库

【数据库进阶】 python 操作MYSQL数据库主要有两种方式&#xff1a;    使用原生模块&#xff1a;pymysql  ORM框架&#xff1a;SQLAchemy 一、pymysql 1.1下载安装模块 12第一种&#xff1a;cmd下&#xff1a;执行命令下载安装&#xff1a;pip3 install pymysql第二种&…

Sublime Text3—Code Snippets(自定义代码片段)

摘要 程序员总是会不断的重复写一些简单的代码片段&#xff0c;为了提高编码效率&#xff0c;我们可以把经常用到的代码保存起来再调用。 平时用sublime安装各种插件&#xff0c;使用Tab键快速补全&#xff0c;便是snippets&#xff08;可译为代码片段&#xff09;的一种。 …

JBoss AS7 JNDI和EJB 3.1命名更改

由于“功能培训”继续前进&#xff0c;而我们又没有使软件堆栈保持最新&#xff0c;因此我们的团队发现自己处于迁移的不可行位置&#xff1a; JBoss 4.2.3到AS 7.1.x&#xff08;当前为7.1.1&#xff09; EJB 2.1到EJB 3.1 休眠2到休眠3或4 以快速的方式。 我的意思是&…

static关键字(修饰函数、局部变量、全局变量)

在C语言中&#xff0c;static的字面意思很容易把我们导入歧途&#xff0c;其实它的作用有三条。 &#xff08;1&#xff09;先来介绍它的第一条也是最重要的一条&#xff1a;隐藏。 当我们同时编译多个文件时&#xff0c;所有未加static前缀的全局变量和函数都具有全局可见性。…

POJ 2236 - Wireless Network ( 并查集 )

题意 一个计算机网络里的计算机都坏了, 现在有两种操作, “O p”代表修复了p机器, “S p q”代表检查 p, q 两台机器是否连接( 直线距离<d或者中间有距离<d的用来联通的机器 ) 思路 比赛的时候愣是没读清楚题目意思, 还以为是什么搜索, 瞎瘠薄做了个MLE 没料到居然是个并…

Apriori 关联分析算法原理分析与代码实现

转自穆晨 阅读目录 前言关联分析领域的一些概念Apriori算法基本原理频繁项集检索实现思路与实现代码关联规则学习实现思路与实现代码小结回到顶部前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事。 那么&#xff0c;具体是怎么从海量销售信息中…

Spring JpaRepository示例(内存中)

这篇文章描述了一个使用内存中HSQL数据库的简单Spring JpaRepository示例。 该代码示例可从GitHub的Spring-JpaRepository目录中获得。 它基于带有注释的Spring-MVC-示例和此处提供的信息 。 JPA资料库 我们为该示例实现一个虚拟bean&#xff1a; Entity AutoProperty public…

java url接口_javaweb 后台使用url接口

String GET_URL"https://wx.hguard.cn:8075/queryProfiledataAction.action?phone"phone"&beginnum"beginnum"&pagesize"pagesize"&sign"newsignString;try {URL url new URL(GET_URL); // 把字符串转换为URL请求地址…

数据分析 - 残酷的世界

数据分析 - 残酷的世界 可视化作品链接地址&#xff1a;http://reinhardhsu.com/game.html 概要 最近读了比尔盖茨的夏日书单中的荐书《乡下人的悲歌》&#xff0c; 书中描述了贫穷、毒品和一系列陋习&#xff0c;像遗传病一样&#xff0c;困扰着一代又一代的美国底层人民…

burpsuite破解版

来源&#xff1a;http://www.vuln.cn/8847 转载于:https://www.cnblogs.com/shengulong/p/8819072.html