Prolog - 如何在获取所有路径时限制路径长度?

时间:2017-10-06 15:56:55

标签: graph prolog

我试图在图表中找到2个节点之间的所有路径大小或短于给定长度的路径。我能够找到所有路径,但是我无法限制路径的大小。

我现在拥有的是:

path(P1,P2,[P1,P2]):- 
    edge(P1,P2).

path(P1,P2,[P1|Xs]):-
    edge(P1,W),
    path(W,P2,Xs).

这有效,我如何限制路径大小?

1 个答案:

答案 0 :(得分:1)

你可以尝试:

limited_path(P1,P2,N,L):-length(L,N1), path(P1,P2,L), N1=<N.

path(P1,P2,[P1,P2]):- 
    edge(P1,P2).

path(P1,P2,[P1|Xs]):-
    edge(P1,W),
    path(W,P2,Xs).

现在改为呼叫limited_path/4