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 的路径,因为该图是有向的。