- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能实验二图搜索精要
人工智能技术基础图搜索问题求解实验报告一、实验目的加强对图搜索技术的理解,初步掌握图搜索基本编程方法,并能运用图搜索技术解决一些应用问题。二、实验要求(1)可使用第3章中的状态图搜索通用程序,这时只需编写规则集程序;也可以用PROLOG语言或其他语言另行编写。(2)程序运行时,应能在屏幕上显示程序运行结果。三、实验内容或题目实验题目:迷宫求解实验内容:利用状态图搜索方法求解下列迷宫图四、实验步骤与源程序实验步骤:理解题目;对状态进行编码;转换规则集;编写程序;调试运行;源程序:/*状态图搜索通用程序*/DOMAINSstate=symbol%例如:state=symbolDATABASE-mydatabaseopen(state,integer)%用动态数据库实现OPEN表closed(integer,state,integer)%和CLOSED表res(state)open1(state,integer)min(state,integer)mark(state)fail_PREDICATESsolve road(state,state)search(state,state)resultsearchingstep4(integer,state)step56(integer,state)equal(state,state)repeatresulting(integer)rule(state,state)GOALsolve.CLAUSESsolve:- search(s,e),result./*例如solve:-search(st(0,1,2,3,4,5,6,7,8),st(0,2,8,3,4,5,6,7,1)),result.*/search(Begin,End):-%搜索retractall(_,mydatabase),assert(closed(0,Begin,0)),assert(open(Begin,0)),%步1 将初始节点放入OPEN表assert(mark(End)),repeat,searching,!.result:-%输出解not(fail_),retract(closed(0,_,0)),closed(M,_,_),resulting(M),!.result:-%输出解not(fail_),retract(closed(0,_,0)),closed(M,_,_),resulting(M),!.result:- beep,write(sorry dont find a road!).searching:-open(State,Pointer),%步2 若OPEN表为空,则失败,退出retract(open(State,Pointer)),%步3 取出OPEN表中第一个节点,给其closed(No,_,_),No2=No+1,%编号asserta(closed(No2,State,Pointer)),%放入CLOSED表!,step4(No2,State).searching:-assert(fail_).%步4 若当前节点为目标节点,则成功step4(_,State):- mark(End),equal(State,End).%转步2step4(No,State):- step56(No,State),!,fail.step56(No,StateX):-%步5 若当前节点不可扩展,转步2rule(StateX,StateY),%步6 扩展当前节点X得Ynot(open(StateY,_)),%考查Y是否已在OPEN表中not(closed(_,StateY,_)),%考查Y是否已在CLOSED表中assertz(open(StateY,No)),%可改变搜索策略fail.step56(_,_):-!.equal(X,X).repeat.repeat:-repeat.resulting(N):- closed(N,X,M),asserta(res(X)),resulting(M).resulting(_):- res(X),write(X),write(\t),fail.resulting(_):- !.rule(X,Y):-road(X,Y).road(s,s11).road(s11,s12).road(s12,s11).road(s12,s13).road(s13,s12).road(s13,s14).road(s14,s13).road(s11,s21).road(s21,s11).road(s12,s22).road(s15,s25).road(s25,s15).road(s23,s24).road(s24,s23).road(s24,s25).road(s25,s24).road
文档评论(0)