华北电力大学实验报告||试验名称PROLOG语言编程练习及图搜索问题求解课程名称人工智能及应用专业班级:学生姓名:学号:成绩:指导教师:试验日期:5月(试验汇报如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm,右2.1cm;字体:宋体小四号,1.25倍行距。)验证性、综合性试验汇报应含的重要内容:一、试验目的及规定二、所用仪器、设备三、试验原理四、试验措施与环节五、试验成果与数据处理六、讨论与结论(对试验现象、试验故障及处理措施、试验中存在的问题等进行分析和讨论,对试验的深入想法或改善意见)七、所附试验输出的成果或数据设计性试验汇报应含的重要内容:一、设计规定二、选择的方案三、所用仪器、设备四、试验措施与环节五、试验成果与数据处理六、结论(根据“设计规定”)七、所附试验输出的成果或数据一、试验目的及规定1.熟悉PROLOG的运行环境,进行PROLOG的基本编程练习。理解PROLOG语言中常量、变量的表达措施。PROLOG的简朴程序构造,掌握分析问题、问询解释技巧;进行事实库、规则库的编写,并在此基础上进行简朴的问询。详细试验课上有关内容,练习example1到example6的内容。2.图搜索问题求解。任选如下实际应用题目:爱因斯坦的超级问题、字谜问题、汉诺塔问题、八数码问题、八皇后问题、农夫过河问题、传教士野人问题等,选两个。规定试验汇报中包括:程序分析、运行成果、试验收获、难点重点分析等。二、所用仪器、设备PC机和trincprolog编译软件。三、试验原理PROLOG语言是一种以逻辑推理为基础的逻辑型程序设计语言,是一种陈说性语言而不是过程性语言。PROLOG语言可以自动实现模式匹配和回溯、具有递归技术,并且语法简要,可以简化复杂问题求解。1、prolog自身自带推理机,其回溯、递归技术和表处理技术可简化复杂问题求解。2、trinicprolog的跟踪、设断点对于调试程序是非常有用的。四、试验措施与环节1、阐明用实例怎样观测并理解回溯机制回溯机制所谓回溯,就是在程序运行期间,当某一种子目的不能满足(即谓词匹配失败)时,控制就返回到前一种已经满足的子目的(假如存在的话),并撤销其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目的。假如失败的子目的前再无子目的,则控制就返回到该子目的的上一级目的(即该子目的谓词所在规则的头部)使它重新匹配。回溯是PROLOG的一种重要机制。例如:农夫过河问题的move(...),其对应有四个子目的。当某个子目的不成立时,就会回溯到前一种子目的,撤销原约束值,然后重新合一。2、怎样用断点、跟踪以及显示调试prolog程序将鼠标移动至语句之前单击便打入了断点。编译了后来,假如点“Prove”这个按钮,则程序运行到断处。点“Traceon”这个按钮便进入单步运行状态,即跟踪状态。点击“Startstep”开始单步运行程序。懂得了怎样单步运行与打断点,很轻易就可以对prolog程序进行调试。注:阐明试验的操作过程。五、求解的问题与程序注:阐明所选择试验题目,问题分析过程和程序难点分析等。1.险洞探险问题:Treasure-route代码:go(Start,Goal):-route(Start,Goal,[Start],VisitedL),reverse(VisitedL,[],RVisitedL),write("Onerouteis:"),write(RVisitedL),nl,nl,fail.go(_,_).neighbor(X,Y):-gallery(X,Y).neighbor(X,Y):-gallery(Y,X).gallery(entry,fountain).gallery(entry,monsters).gallery(monsters,goldtreasure).gallery(goldtreasure,food).gallery(food,fountain).gallery(goldtreasure,robbers).gallery(goldtreasure,exit).gallery(fountain,mermaid).gallery(fountain,robbers).gallery(mermaid,exit).gallery(hell,fountain).gallery(mermaid,goldtreasure).avoid([monsters,hell,robbers]).route(Room,Room,VisitedL,VisitedL):-member(goldtreasure,VisitedL),!.route(Room,WayOut,VisitedL0,VisitedL):-neighbor(Room,NextRoom),avoid(DangousL),not(member(NextRoom,DangousL)),not(member(NextRoom,VisitedL0)),route(NextRoom,WayOut,[NextRoom|VisitedL0],VisitedL)./*route(Room,WayOut,VisitedL0,VisitedL):-gallery(NextRoom,Room),avoid(DangousL),nomem...