我被以下 Prolog 问题所困扰:给定没有循环作为事实的图的边缘。例如:
edge(a, b).
edge(b, c).
edge(c, d).
edge(c, e).
...
我必须编写一个谓词来测试顶点 X 和 Y 之间是否有两条不同的路径。例如,two_paths(a, c).
如果从节点 a 到节点 c 有两条不同的路径,则调用应该返回 true。我知道如何检查两个顶点之间是否有路径:
path(X, Y) :- edge(X, Y).
path(X, Y) :- edge(X, Z), path(Z, Y).
但是我应该如何检查两条不同的路径呢?非常感谢您的帮助。