Prolog:如何获得距离 = n 的顶点?
Prolog: How to get the vertex with distance = n?
我是序言新手。我试图解决以下问题。
有一些边的简单图形中有 6 个顶点。事实是:
edge(v1, v2).
edge(v1, v6).
edge(v2, v3).
edge(v2, v4).
edge(v3, v4).
edge(v4, v5).
edge(v5, v6).
如果顶点 U 和某个顶点 V 之间有 N 条长度路径,我将尝试获取谓词的逻辑
path(U, V, N)
例如 path(v1, V, 2) 将 return
v3
v4
v5
我可以使谓词像 (if N = 2, 3 ... )
path(U, V):- edge(U, X), edge(X, V).
path(U, V):- edge(U, X), edge(X, Y), edge(Y, V).
...
但是路径(U, V, N)呢?
path(U, V, 2) :-
edge(U, X), edge(X, V).
path(U, V, N) :-
edge(U, X), path(X, V, N1), plus(N1, 1, N).
?- path(v1, V, 2).
V = v3 ;
V = v4 ;
false.
没有从 v1 到 v5 的长度为 2 的路径,因为该图是有向的。
我是序言新手。我试图解决以下问题。 有一些边的简单图形中有 6 个顶点。事实是:
edge(v1, v2).
edge(v1, v6).
edge(v2, v3).
edge(v2, v4).
edge(v3, v4).
edge(v4, v5).
edge(v5, v6).
如果顶点 U 和某个顶点 V 之间有 N 条长度路径,我将尝试获取谓词的逻辑
path(U, V, N)
例如 path(v1, V, 2) 将 return
v3
v4
v5
我可以使谓词像 (if N = 2, 3 ... )
path(U, V):- edge(U, X), edge(X, V).
path(U, V):- edge(U, X), edge(X, Y), edge(Y, V).
...
但是路径(U, V, N)呢?
path(U, V, 2) :-
edge(U, X), edge(X, V).
path(U, V, N) :-
edge(U, X), path(X, V, N1), plus(N1, 1, N).
?- path(v1, V, 2).
V = v3 ;
V = v4 ;
false.
没有从 v1 到 v5 的长度为 2 的路径,因为该图是有向的。