2015-08-08 76 views
1

我有以下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 < =深度< = L)的範圍內。 我怎樣才能得到這個結果?

回答

1

我覺得

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. 

應該做的。注:未經測試的代碼...