资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
人工智能技术基本 图搜索问题求解 实验报告一、实验目的加强对图搜索技术的理解,初步掌握图搜索基本编程措施,并能运用图搜索技术解决某些应用问题。二、实验规定(1)可使用第章中的状态图搜索通用程序,这时只需编写规则集程序;也可以用PROLOG语言或其她语言另行编写。(2)程序运营时,应能在屏幕上显示程序运营成果。三、实验内容或题目实验题目:迷宫求解实验内容:运用状态图搜索措施求解下列迷宫图四、实验环节与源程序实验环节:(1) 理解题目;(2) 对状态进行编码;(3) 转换规则集;(4) 编写程序;(5) 调试运营;源程序:*状态图搜索通用程序*/DOAINSstate=syb%例如:stasyolDAABASE-mytbaseopn(sate,ngr)%用动态数据库实现EN表clsed(teg,sate,inger)%和OSED表re(tat)open1(stat,intee)m(sae,intger)mark(state)fail_PRDIASsole road(tate,state)sarch(stte,sta)rsultearhingstep4(inter,s)step6(iteger,state)eql(st,sta)epatresulting(teer)ule(ste,stae)GOAsoveASESlve:- earch(,e),rsut./*例如v:-sac(st(,1,2,3,,5,6,7,8),t(0,2,8,3,4,5,6,),reu.erh(en,End):-%搜索tractll(_,mydatbase),asset(losed(0,egin,0)),asert(open(Bgi,0),%步1 将初始节点放入OEN表ase(ma(End),rep,searching,!result:%输出解o(fal),retrct(closd(0,_,0),osd(M,_,),reuting(M),!.reult:-输出解ot(fai_),reac(clsed(0,0)),loed(M,_,_),rslting(),!.eult:- beep,write(sory dont find a rod!).seching:-pen(State,Pite),%步2 若OPEN表为空,则失败,退出retract(open(State,Poiter),%步3 取出OPN表中第一种节点,给其csed(No,_,_),o2=o+1,编号asserta(closed(No2,State,Poite),放入CLOSED表!,tep(N2,Stt).sarchin:ssrt(fail_)%步4 若目前节点为目的节点,则成功tep4(_,Stte):- mrk(Ed),qual(at,End)%转步p4(N,Stat): se56(N,Stte),!,fail.tp56(,SteX):-%步5 若目前节点不可扩展,转步le(StX,StateY),步6 扩展目前节点X得Ynot(pen(StateY,_)),考察Y与否已在OPE表中not(closed(_,StteY,_),%考察与否已在CLOSD表中assetz(pen(SteY,No),%可变化搜索方略fail.sep6(_,_):!.equal(X,X)epeatret:-rea.eslin(N):- losd(,M),asserta(s(X),eulting(M).esuti(_):- r(X),wrie(X),wre(),al.resultng(_): !.rue(X,Y):road(,Y).road(s,s11).road(s,s12).road(s12,s11).ra(s12,s13).rod(13,s2).oad(1,s14).road(s14,s3)rd(s11,s).od(s1,s11).roa(s12,s2).roa(s15,s25).rod(s5,s15)oad(s,s24).oad(s24,s3)rd(s2,2).road(25,s24).road(2,s).road(s3,21).road(23,s3).ra(s33,s2)road(s4,s34).road(34,4)oad(s25,3).rd(s3,s25)rod(s31,2).road(s32,1).road(2,s33).ad(3,s2).road(s34,s35).oa(s5,4).road(s31,s41)rad(41,s1).ra(s3,s44).road(s44,s3)rod(4,43).oad(s3,42).rod(s3,s)ra(44,s).d(s4,s5).road(s45,s4)rod(42,s52).road(s,42).road(5,52)road(s5,s1)road(s2,3).ro(s53,s2).road(s53,s54).rod(s54,s5).oad(s4,s5)road(s5,4).ro(s55,e).%例如:rue(X,Y):roa(,Y).五、实验成果六、 实验总结该实验的例题较为特殊,要实现深度优先和广度优先搜索,在源代码中修改一致,只需将assetz(oen(tateY,N))改为ssrta(open(StaeY,o)。实验刚开始浮现运营错误,road未定义,在PREICATES中给oad加以定义rod(sat,ste)。之后运营尚有一种报错,通过反复检查,发现最后结尾语句没加句号。由于急于验收,修改完代码,直接加载,导致犯下一种结尾少加句号的低档错误,耗时耗力,影响进度。随着此后编程的增多,深深体会到编程时要静心严谨,否则一种小小的疏忽,将增长额外的工作量。通过第二次上机实验,自己对proog运营平台的使用更为纯熟。此后课下会多多关注人工智能方面的科研资讯,学习课外的知识,增长自己知识储藏,提高自己的专业技能。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号