我对 Prolog 很陌生。我需要在迷宫中找到从Source到Destination的所有路径。
我写了以下子句,这样我就不必明确地写出所有的边缘关系:
neighbour(X,Y) :-
( X =:= Y+1
; Y =:= X+1
; X =:= Y+6
; Y =:= X+6
).
接下来,为了找到路径,我执行以下操作:
path(Source,Source,_).
path(Source,Destination,PathList) :-
neighbour(Source,Z), % find a neighbour of Source
not(member(Z,PathList)), % that is not already in the list
% and see if there is a path from Z to Destination
path(Z,Destination,[Source|PathList]).
在运行它时,我查询了以下内容:
?- path(1,2,[]). % "Is there a path from 1 to 2?"
这给了我以下错误:
ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR: [10] 1=:=_26424+1
ERROR: [9] neighbour(1,_26452) at /Users/sujitkumar/Desktop/this sem/PL/2.pl:3
ERROR: [8] path(1,2,[]) at /Users/sujitkumar/Desktop/this sem/PL/2.pl:30
ERROR: [7] <user>
我不明白为什么表达式没有得到评估。