结果的深度有限
Limited depth of the result
我有以下限制结果深度的 Prolog 代码。
road(a,b,10).
road(b,c,15).
road(a,d,20).
road(d,b,30).
road(d,e,5).
road(e,c,25).
road(c,a,30).
path(A,B,D,L):-
L>0,
road(A,B,D).
path(A,C,D,L):-
road(A,B,D1),
L1 is L -1,
L1>0,
path(B,C,D2,L1),
D is D1 + D2.
这里的深度(L)限制了与结果相关的中间点的数量。 'L'是生成结果时可以访问的最大节点数。
我只想得到深度为'L'时的结果,而不是在(0<=depth<=L)范围内。
我怎样才能得到那个结果?
我觉得
path(A,B,D,1):-road(A,B,D).
path(A,C,D,L):-L > 1, road(A,B,D1),L1 is L -1,L1>0,path(B,C,D2,L1),D is D1 + D2.
应该做的。注意:未经测试的代码...
我有以下限制结果深度的 Prolog 代码。
road(a,b,10).
road(b,c,15).
road(a,d,20).
road(d,b,30).
road(d,e,5).
road(e,c,25).
road(c,a,30).
path(A,B,D,L):-
L>0,
road(A,B,D).
path(A,C,D,L):-
road(A,B,D1),
L1 is L -1,
L1>0,
path(B,C,D2,L1),
D is D1 + D2.
这里的深度(L)限制了与结果相关的中间点的数量。 'L'是生成结果时可以访问的最大节点数。
我只想得到深度为'L'时的结果,而不是在(0<=depth<=L)范围内。 我怎样才能得到那个结果?
我觉得
path(A,B,D,1):-road(A,B,D).
path(A,C,D,L):-L > 1, road(A,B,D1),L1 is L -1,L1>0,path(B,C,D2,L1),D is D1 + D2.
应该做的。注意:未经测试的代码...