您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 《人工智能》实验二-图搜索问题求解
淮海工学院计算工程学院实验报告书课程名:《人工智能》题目:实验二:图搜索问题求解班级:D软件081学号:510856106姓名:汪晓骏评语:成绩:指导教师:批阅时间:年月日《人工智能》实验报告1实验二图搜索问题求解实验目的和要求1、熟悉Prolog程序编写环境。2、掌握图搜索问题求解的基本方式。3、完成实验,并自己编写程序。实验重点1、自己编写程序。2、掌握头搜索实现方法。实验难点自己编写程序。实验环境WindowsXPprolog实验学时3学时,必做实验实验内容及实验步骤:实验内容:有一农夫带一只狼、一只羊和一筐菜欲从河的左岸乘船到右岸,但受下列条件限制:1)船太小,农夫每次只能带一样东西过河。2)如果没有农夫看管,则狼要吃羊,样要吃菜。请设计一个国和方案,使得农夫、狼、羊、菜都能不受损失地过河。画出相应的状态空间图。提示:1)用四元组(农夫、狼、羊、菜)表示状态,其中每个元素都可为0或1,用0表示在左岸,用以表示在右岸。2)把每次过河的一种安排作为一个算符,每次过河都必须有农夫,因为只有他可以划船。实验步骤:DOMAINSLOC=east;west/*定义河的两岸*/STATE=state(LOC,LOC,LOC,LOC)/*定义一个状态表示河两岸的情况*/PATH=STATE*/*状态改变的列表*/PREDICATESgo(STATE,STATE)/*开始状态*/path(STATE,STATE,PATH,PATH)/*记录过河路径*/move(STATE,STATE)/*移动一个对象*/opposite(LOC,LOC)/*可能的位置*/unsafe(STATE)/*安全状态检查*/member(STATE,PATH)/*检查是否记录过此状态*/write_path(PATH)《人工智能》实验报告2write_move(STATE,STATE)GOALwrite(pressanykeyforeachstepofsolution),go(state(east,east,east,east),state(west,west,west,west)),write(solvedpressanykeytocontinue),readchar(_),exit.CLAUSESgo(S,G):-path(S,G,[S],L),nl,write(Asolutionis:),nl,write_path(L),fail.go(_,_).path(S,G,L,L1):-move(S,S1),not(unsafe(S1)),not(member(S1,L)),path(S1,G,[S1|L],L1),!.path(G,G,T,T):-!./*最终状态*/move(state(X,X,G,C),state(Y,Y,G,C)):-opposite(X,Y)./*FARMERandWOLF*/move(state(X,W,X,C),state(Y,W,Y,C)):-opposite(X,Y)./*FARMERandGOAT*/move(state(X,W,G,X),state(Y,W,G,Y)):-opposite(X,Y)./*FARMERandCABBAGE*/move(state(X,W,G,C),state(Y,W,G,C)):-opposite(X,Y)./*FARMER*/opposite(east,west).opposite(west,east):-!.unsafe(state(F,X,X,_)):-opposite(F,X)./*狼和羊不安全*/unsafe(state(F,_,X,X)):-opposite(F,X)./*山羊和卷心菜不安全*/member(X,[X|_]).member(X,[_|L]):-member(X,L).write_path([H1,H2|T]):-!,readchar(_),write_move(H1,H2),write_path([H2|T]).write_path([]).《人工智能》实验报告3write_move(state(X,W,G,C),state(Y,W,G,C)):-!,write(farmercrossestheriverfrom,X,to,Y),nl.write_move(state(X,X,G,C),state(Y,Y,G,C)):-!,write(farmerandWolfcrossrivefrom,X,to,Y),nl.write_move(state(X,W,X,C),state(Y,W,Y,C)):-!,write(farmerandGoatcrossrivefrom,X,to,Y),nl.write_move(state(X,W,G,X),state(Y,W,G,Y)):-!,write(farmerandcabbagecrossrivefrom,X,to,Y),nl.《人工智能》实验报告4实验体会通过这次实验更加加深了我对prolog使用的理解,对于代码的编写也有了更进一步的认识,虽然在这次的编写中也遇到了很多困难,但是我还是克服了,完成了代码的运行!
本文标题:《人工智能》实验二-图搜索问题求解
链接地址:https://www.777doc.com/doc-7201293 .html