繁体   English   中英

Prolog剪切和查询结果

[英]Prolog Cuts and query results

在如下所述的序言程序中:

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). - ?-dam(X), once(neighbour(X,Y)),town(Y).

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

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

结果: X=e Y=c

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

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

答案是正确的。 您可以记住,一旦(Goal)被定义为Goal,!,即您的第三个查询“ dam(X),!,neighbour(X,Y),town(Y)”。 等效于“一次(dam(X)),邻居(X),镇(X)”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM