在prolog中评估表达式时发生错误

时间:2017-10-21 06:32:49

标签: graph prolog runtime-error expression instantiation-error

我对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>

我不明白为什么表达式没有得到评估。

0 个答案:

没有答案