问题标签 [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.

0 投票
4 回答
1158 浏览

prolog - Prolog无限循环(循环图)

这可能是一个简单的问题,但我需要以不同的方式来做。问题是我必须在序言中找到可能的飞行路线。我有这个知识库

我必须创建一个谓词 route(X,Y) 来检查我们是否可以从 X 到 Y。我所做的是:

但它不起作用,因为图形是循环的。我在互联网上搜索,每个人都说的唯一一件事就是使用列表并检查访问过的路径。但我不能使用列表!我必须在不使用列表的情况下创建谓词路由(X,Y),如果没有列表,我该如何完成呢?谢谢

0 投票
1 回答
392 浏览

recursion - 查找两个地方之间是否有联系并计算成本

我在城市之间有联系

所以我想创建一个谓词来查找两个城市之间是否有可能的路线,甚至首先经过其他城市。

到目前为止,我已经创建了这个有效的递归代码。

但我也想计算路线的总成本,如果两个城市之间的成本是 100 并且每个其他城市经过是 50 更多。

任何帮助表示赞赏。

0 投票
2 回答
1463 浏览

path - Prolog 图路径搜索与循环路径

我是 Prolog 的新手。我试图找出一个问题,我需要检查边缘之间是否存在路径。我完成了循环的非循环图形代码,我的代码将进入无限循环。

我需要通过定义一个新的谓词来处理这种情况: new_path(Start,End,path) 应该消除无限循环。请让我知道如何进行。

0 投票
1 回答
71 浏览

prolog - Prolog编译器返回错误

我有这个假设的程序来检查从 A 点到 B 点是否存在路径。

问题是它返回真,然后是假。虚假从何而来?

0 投票
2 回答
729 浏览

prolog - Prolog:从间接关系中消除循环

我有一个用户事实列表定义为:

等等。此外,我有一组事实:

我正在尝试编写一个关系indirect(user1,user1),它会告诉我user1 是否间接跟随user2。但是,我无法消除循环关系。

就像在给定的示例中一样, michael -> ana -> bob -> michael 将导致循环。

从间接(user1,user2)的结果中消除这些循环的最佳方法是什么?

0 投票
1 回答
186 浏览

prolog - Prolog Out of local stack 错误

我从一本书中尝试了一些基本示例,它产生了“Out of local stack”错误(我会在代码之后告诉更多)。这是代码:

例如,我尝试编写查询 edge(a,b),它返回 true,然后我输入 ';' 它犯了错误。这里有什么问题?

0 投票
1 回答
146 浏览

prolog - No termination of predicate

I have some program about a graph with black and white vertices:

when I run the goal foo(X) I get a problem: If I remove the fact edge(root,root) the program find some solutions (6 different solutions). Otherwise, I get infinite solutions and all are X=root. Why does this happen?

0 投票
2 回答
728 浏览

loops - 如何使用累加器摆脱 Prolog 中的无限循环

我正在使用的知识库:

我试图解决的问题:

假设您在事实“connected(3,4)”的正下方添加“connected(4,3)”。运行查询 ?- path(3,2) 会导致一个循环并且不会终止。使用累加器修改 path/2 以存储已经访问过的点,以便在计算路径时永远不会重新访问同一点。然后再次运行查询 ?- path(3,2)。

我在这里遇到的麻烦是我对 Prolog 很陌生,我之前实际上没有使用过累加器(据我所知),因此我不确定如何继续。如果有人可以向我解释我必须采取的步骤,那就太好了。

另外,我看到很多后面带有“/ 2”的东西 - 关于这通常意味着什么的任何解释?

干杯。

0 投票
1 回答
2527 浏览

prolog - 如何表达传递关系

我想表达一种传递关系。如果 A 引用 B,B 引用 C,则 A 引用 C。我有这个:

当我使用查询时,proj(A)我获得:

[46] ?-项目(A)。
A = _639

“_639”是什么意思?我期待的是或否,并得到了那种奇怪。我需要添加一条规则来说明:

ref(A,C).并获得“是”。理想情况下,如果可能的话,我想展示这种关系是如何产生的:(A => B => C)。

0 投票
1 回答
70 浏览

prolog - 使用列表从本地堆栈中引出

我必须找到两个州之间的路线,并且我到达了这里,但到目前为止我遇到了关于堆栈外的错误帮助我