2012-01-25 109 views
0

在Prolog程序的規定如下:Prolog的削減和查詢結果

town(a). 
town(b). 
town(c). 
town(d). 
dam(e). 
dam(f). 
link(a,b). 
link(a,c). 
link(c,d). 
link(b,d). 
link(b,c). 
link(c,e). 
link(a,e). 
link(d,f). 
neighbour(X,Y):- link(X,Y) ; link(Y,X). 

這些是從以下查詢正確的結果:

查詢1 - ?-dam(X), once(neighbour(X,Y)),town(Y).

結果:X=e Y=c; X=f Y=d

查詢2 - ?-dam(X), neighbour(X,Y),!,town(Y).

結果:X=e Y=c

查詢3 - ?-dam(X),!,neighbour(X,Y),town(Y).

結果:X=e Y=c; X=e Y=a

+1

我猜這是作業。你可以在任何prolog系統中自己嘗試。 – gusbro

+0

系統對所有三個都返回「否」,我幾乎可以肯定是不正確的。 –

+0

你期待的結果是正確的。如果它對這些查詢返回「否」,我敢打賭你沒有諮詢(加載)你的代碼。 – gusbro

回答

0

的答案是正確的。您可以記住,一旦(目標)被定義爲目標!,即您的第三個查詢「dam(X),!,neighbor(X,Y),town(Y)」。相當於「一次(水壩(X)),鄰居(X),城鎮(X)」。