人工智能的迷宫问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 题目:给出下面的迷宫图,找出走出迷宫的路径。
sg
s0
s1
s2
s3
s4s5s6
s7s8s9
2.算符与状态空间 迷宫算符:左右上下 状态空间:
3.求解的状态空间图
4.给出各类表
5.程序代码
trace
DOMAINS
state=symbol DATABASE-mydatabase open(state,integer) closed(integer,state,integer) res(state)
mark(state)
fail_
PREDICATES
solve
search(state,state)
result
searching
step4(integer,state)
step56(integer,state) equal(state,state)
repeat
resulting(integer)
rule(state,state)
road(state,state)
GOAL
solve.
CLAUSES
solve:-search(s0,sg),result.
search(Begin,End):-retractall(_,mydatabase),
assert(closed(0,Begin,0)),
assert(open(Begin,0)),
assert(mark(End)),repeat,searching,!.
result:-not(fail_), retract(closed(0,_,0)),closed(M,_,_), resulting(M),!.
result:-beep,write("sorry don't find a road!"). searching:-open(State,Pointer),
retract(open(State,Pointer)),closed(No,_,_),No2=No+1, asserta(closed(No2,State,Pointer)),!,step4(No2,State). searching:-assert(fail_).
step4(_,State):-mark(End),equal(State,End).
step4(No3,State):-step56(No3,State),!,fail.
step56(No4,StateX):-
rule(StateX,StateY),
not(open(StateY,_)),
not(closed(_,StateY,_)),
assertz(open(StateY,No4)),fail.
step56(_,_):-!.
equal(X,X).
repeat.
repeat:-repeat.
resulting(N):-
closed(N,X,M),asserta(res(X)),resulting(M). resulting(_):-res(X),write(X),nl,fail. resulting(_):-!.
rule(X,Y):-road(X,Y).
road(s0,s7).
road(s7,s8).road(s7,s4). road(s8,s7). road(s8,s9). road(s8,s5).
road(s4,s5). road(s4,s1). road(s4,s7). road(s9,s8). road(s9,s6).
road(s5,s4). road(s5,s6). road(s5,s2).
road(s5,s8).
road(s1,s2). road(s1,s4). road(s6,s5).
road(s6,sg).
road(s6,s3).road(s6,s9).
road(s2,s1).road(s2,s3).
road(s2,s5).road(sg,s6).
road(s3,s2).road(s3,s6).
6.运行结果