Prolog剪切和查询结果

时间:2012-01-25 14:04:40

标签: 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 个答案:

答案 0 :(得分:0)

答案是正确的。您可以记住,一旦(目标)被定义为目标,!,即您的第三个查询“dam(X),!,邻居(X,Y),城镇(Y)”。相当于“一次(坝(X)),邻居(X),镇(X)。”