Prolog图表表示缺少事实

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prolog图表表示缺少事实相关的知识,希望对你有一定的参考价值。

我在Prolog中有一个带边的图形。我将图表表示为一组序言事实。例如s(a,b,2). = b是a的继承者。以下是此图表的prolog事实。

Graph rep

事实:

s(a,b,2).
s(a,c,1).
s(b,e,4).
s(b,g,2).
s(c,d,1).
s(c,x,3).
s(x,g,1).
goal(g).

我在这里错过了一个事实吗? s(e,g,1).哪里g是e的继承者?或者甚至在这个节点上搜索,因为“b”只有2个分支“e”和“g”。有人可以向我解释一下吗?谢谢

答案

我们可以例如以breadth-first [Wiki]方式枚举图形,从而确定边缘是:

s(a, b, 2).
s(a, c, 1).
s(b, e, 4).
s(b, g, 2),
s(c, d, 1).
s(c, x, 3).
s(e, g, 1).
s(x, g, 1).
goal(g).

如果我们看一下原始的源代码。 s(e, g, 1).部分失踪了。

以上是关于Prolog图表表示缺少事实的主要内容,如果未能解决你的问题,请参考以下文章

Prolog 中如何表示谓词逻辑?

Clojure core.logic 的简单 Prolog

Prolog 事实中的存在量化

Prolog:模拟析取事实

Swi-prolog 双向子句/事实

在prolog中,是否可以将一个列表作为一个事实?