【发布时间】:2020-03-28 12:55:38
【问题描述】:
我是 Prolog 的初学者,我有一个任务要做。 我需要检查图表是否已连接。
现在我有那个......
graph(
[arc(a,b)],
[arc(a,f)],
[arc(b,c)],
[arc(c,d)],
[arc(c,e)],
[arc(e,d)],
[arc(f,c)],
[arc(f,e)],
[arc(f,g)],
[arc(g,c)],
[arc(c,a)]).
edge(X,Y):-arc(X,Y);arc(Y,X).
path(X,Y):-edge(X,Y).
path(X,Y):-edge(X,Z),path(Z,Y).
triangle(X,Y,Z):-arc(X,Y),arc(Y,Z),arc(Z,X).
cycle(X):-arc(X,Y),path(Y,X).
connectivity([]):-forall(member(edge(X,Y)),path(X,Y)).
Check:
connectivity(graph).
上面我有 arc(x,y),我需要检查每一对是否连接。
你能帮帮我吗?
【问题讨论】:
-
小心使用
edge(X,Y):-arc(X,Y);arc(Y,X).它会引入循环。 -
我必须检查“对于每一对顶点,都有一条连接它们的路径。”
-
Guy Coder 我更正了我的帖子
标签: prolog graph-theory