【发布时间】:2017-06-16 10:11:23
【问题描述】:
我的目标是能够遍历图中的节点并在 Prolog 中输出路径的长度。我正在使用递归,我被困在这个问题上。到目前为止,这是我的尝试。
edge(a,b).
edge(b,c).
edge(a,d).
edge(d,f).
distance(X,Y,1) :- edge(X,Y).
distance(X,Y,Dis) :- edge(X,Z), distance(Z, Y, D), Dis is D +1.
问题:如果路径无效,我想说 Dis = 0。如中,没有连接两个节点的边,Dis = 0。目前我的代码对无效路径显示为 false。我在这方面的尝试导致我打破了递归。感谢您的帮助。
【问题讨论】:
-
你确定距离的语义吗? Dis = 0 是否意味着两个节点相同?这可以编码为距离(X,X,0)。