start :- action(state(left,left,left,left),
state(right,right,right,right)).
action(Start,Goal):-
plan(Start,Goal,[Start],Path),
nl,write(’Solution:’),nl,
write_path(Path).
% write_path(Path), fail. % all solutions output
plan(Start,Goal,Visited,Path):-
go(Start,Next),
safe(Next),
\+ member(Next,Visited), % not(member(...))
plan(Next,Goal,[Next|Visited],Path).
plan(Goal,Goal,Path,Path).
go(state(X,X,Z,K),state(Y,Y,Z,K)):-across(X,Y). % farmer, wolf
go(state(X,W,X,K),state(Y,W,Y,K)):-across(X,Y). % farmer, goat
go(state(X,W,Z,X),state(Y,W,Z,Y)):-across(X,Y). % farmer, cabbage
go(state(X,W,Z,K),state(Y,W,Z,K)):-across(X,Y). % farmer
across(left,right).
across(right,left).
safe(state(B,W,Z,K)):- across(W,Z), across(Z,K).
safe(state(B,B,B,K)).
safe(state(B,W,B,B)).**要运行程序,您需要编写两个命令、写(路径)和启动。我在“人工智能入门-沃尔夫冈·埃特尔”一书中找到的,它在第76-77页** 1页:https://i.stack.imgur.com/cy8mh.png
发布于 2021-12-27 21:36:31
看看您在.png上提供的错误,您似乎已经编写了write_path过程。也许你可以把它加到这个问题上。
您在这一行中有一个错误:
nl,write(’Solution:’),nl,它应该是
nl,write("Solution:"),nl,请注意我已经更改了字符串符号。
在纠正了那个错误之后,我运行了你在这里显示的程序,它给了我:
procedure `write_path(A)' does not exist
Reachable from:
action(A,B)
start但正如我之前说过的,没有像write_path这样的东西。也许你错过了?
https://stackoverflow.com/questions/70462570
复制相似问题