Prolog - 如何在获取所有路径时限制路径长度?
Prolog - How to limit path length while getting all paths?
我试图在图中的 2 个节点之间找到所有小于或等于给定长度的路径。我能够找到所有路径,但我无法限制路径的大小。
我现在拥有的是:
path(P1,P2,[P1,P2]):-
edge(P1,P2).
path(P1,P2,[P1|Xs]):-
edge(P1,W),
path(W,P2,Xs).
这是有效的,我如何限制路径大小?
你可以试试:
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
。
我试图在图中的 2 个节点之间找到所有小于或等于给定长度的路径。我能够找到所有路径,但我无法限制路径的大小。
我现在拥有的是:
path(P1,P2,[P1,P2]):-
edge(P1,P2).
path(P1,P2,[P1|Xs]):-
edge(P1,W),
path(W,P2,Xs).
这是有效的,我如何限制路径大小?
你可以试试:
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
。