让我们假设我在Prolog中有事实如下:
path(a,b).
path(a,c).
我希望对函数ispath(X,Y)
进行编码,如果在一个或多个步骤中存在从X
到Y
的路径,则返回true。如果X=Y
,则失败。假设
一个非循环图。
解决方案
isPath(X,Y) :- arrow(X,Y).
isPath(X,Y) :- arrow(X,R), arrow(R,Y).
我的问题是,如果prolog在第一次调用箭头时返回R的一些元素,并且在第二次调用中没有从R到y的路径,prolog是否返回false?或继续搜索所有可能的路径,直到找到一个。