问题标签 [transitive-closure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - Prolog中关于交换和传递等价实现的建议
我想用可交换和传递的属性来模拟 Prolog 中的等价性,这就是我所做的:equal/2 将作为事实提供。
但是我在使用上述解决方案时遇到了性能问题,试图计算transitiveEqual/2(大约花了20分钟),我从equal/2计算得非常快,大约有2KsymmetricEqual/2事实,所以它一定是规则的原因对于transitiveEqual/2,任何人都可以提出任何改进建议吗?
非常感谢。
sql - 从传递闭包表中找到最小公共祖先
我有一个表表示组织层次结构的传递闭包(即,它是一个具有单个根的树):
我有另一个表,其中包含每个用户被允许访问的组织:
系统向用户显示与用户可以访问的每个组织相关的支出汇总。我总是可以首先向用户展示公司的视图(即根),向用户展示直接子组织的列表以及他的组织对总数的贡献。在大多数情况下,只有一个孩子,并且用户需要在看到多个孩子之前向下钻取几个级别。我更愿意从第一个显示多个孩子的组织(即 LCA)开始演示。
对于给定的用户,我可以很容易地找到到根目录的路径集,但在找到最不共同的祖先时遇到了麻烦。我正在使用 postgresql 9.1,但更喜欢与数据库无关的解决方案。在最坏的情况下,我可以将 root 的路径拉回到应用程序的代码中并在那里计算 LCA。
prolog - 在序言中的真实答案后不停止
我写这个程序给我这个结果:“X=john”“Y=jane”
但是如果运行这个程序这样结果:我认为程序进入循环!我想在真实答案后停下来!
我有错误!如何解决这个问题?
通过调试:
等等..为什么喜欢(简,_G2267)??????
parsing - 如何使用 Warshall 的传递闭包算法来确定规范的 LR(1) 解析器闭包?
我正在尝试实现 Warshall 的算法来快速计算 LR(1) 闭包。
我想我了解它对 LR(0) 的工作原理:
- 图的节点是LR 项,例如
A → B • C
- 边缘是从
A → B • C
到的“过渡”C → • D
问题是,LR(1) 需要计算前瞻,我不知道如何将它们合并到算法中。
在我看来,即使我知道任何给定 LR 项目的传递闭包,我仍然需要通过所有相同的计算来确定每个项目的前瞻集是什么。
甚至可以使用 Warshall 的算法来计算规范的 LR(1) 闭包,还是仅适用于更受限制的情况(如 LR(0)、SLR(1) 等)?
mysql - 使用存储过程实现的 Warshall 算法
我在 MySQL 存储过程中实现了 Warshall 算法。不幸的是,该过程需要很长时间才能完成。我是编写存储过程的初学者,你知道我能做些什么来让它更快吗?
简要说明:我正在尝试计算邻接表的传递闭包。我想知道,连接了哪些节点(直接在一条边上,或间接在更多边上)。例如:
下图说明了图表:
图片来自维基共享资源:
https ://en.wikipedia.org/wiki/File:Transitive-closure.svg
您可以在SQL Fiddle或此处查看代码:
在我的计算机上运行具有 1466 条记录的表需要 45 秒:
prolog - 检测路径的 Prolog 定义
上下文,首先。我有以下双向图。
在 Prolog 中表示如下:
所以我有节点之间的关系,然后节点之间的连接相关,正如我之前所说,在两个方向上。
我想要做的是一个序言定义,path(X,Y)
能够判断图中两个节点之间是否存在路径(如果两个节点之间至少存在一条路径,则为 true,如果两个节点之间不存在路径,则为 false)。
因此,此模型中的目标输出应如下所示:
我知道这涉及使用访问列表,并且我已经看到了这样的示例,但是给出了两个节点之间的所有可能路径。然而,这不是我要找的。我正在寻找的是一个定义,它检测两个节点之间是否存在路径,而不是给出两个节点之间的所有可能路径。
编辑:所以,感谢@mbratch,我现在可以将建议的问题调整为解决方案:
prolog - 无限的成功树,或者不是?
我得到了以下程序:
并询问是否将证明树算法应用于以下查询:
证明树是无限成功树,还是无限失败树?
现在我看到了,在树的构建过程中,你会一遍又一遍地应用路径规则 1,创建一棵无限的树,而永远不会达到路径规则 2。
从而创建一个无限的故障树。但是我的解决方案说这是一棵无限的成功树,我的问题是:我是对的还是我的教授是对的?:]
graph-theory - Cycle和Circuit有什么区别
我很困惑,这两者有什么区别?
循环和电路,所以如果可能的话,请用图表来确定。
我想到的是循环总是在无向图中电路总是有向图。如果我错了,请纠正我?
haskell - 使用 Haskell 从列表传递闭包
我需要使用 Haskell 在列表上生成传递闭包。
到目前为止,我得到了这个:
输出 1:
输出 2:
问题在于第二个输出。它不是在新生成的列表上检查额外的传递闭包,而是返回结果。
为了原型 haskell 代码,我使用了这个Python 代码:
输出:
这是我在 Haskell 函数中需要的正确输出。
如何在我的 Haskell 代码中做同样的事情?(我需要if
从 Python 代码重新创建语句到 Haskell 代码)
swi-prolog - SWI/CLP(FD) 中的可达性约束
我试图通过解决节点和弧的存在约束来确定有向图的形状,例如,二进制变量V1V2
是1
是否存在从节点V1
到的弧V2
。我想表达可达性约束(或者,找到一个传递闭包),例如,要求图是连接的,或者有一条从一个给定节点到另一个给定节点的路径。
我已经看到 SICStus Prologfd_closure
用于此目的,但我在 SWI Prolog 中找不到类似的东西。我应该使用CHR吗?我一直在查看弧/路径一致性示例,但我不确定我是否在寻找正确的方向。