prolog实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北电力大学

实验报告|

|

实验名称PROLOG语言编程练习及图搜索问题求解

课程名称人工智能及应用

专业班级:学生姓名:

学号:成绩:

指导教师:实验日期:2014年5月

(实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm,右2.1cm;字体:宋体小四号,1.25倍行距。)

验证性、综合性实验报告应含的主要内容:

一、实验目的及要求

二、所用仪器、设备

三、实验原理

四、实验方法与步骤

五、实验结果与数据处理

六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)

七、所附实验输出的结果或数据

设计性实验报告应含的主要内容:

一、设计要求

二、选择的方案

三、所用仪器、设备

四、实验方法与步骤

五、实验结果与数据处理

六、结论(依据“设计要求”)

七、所附实验输出的结果或数据

一、实验目的及要求

1.熟悉PROLOG的运行环境,进行PROLOG的基本编程练习。

了解PROLOG语言中常量、变量的表示方法。PROLOG的简单程序结构,掌握分析问题、询问解释技巧;进行事实库、规则库的编写,并在此基础上进行简单的询问。

具体实验课上相关内容,练习example1到example6的内容。

2.图搜索问题求解。

任选以下实际应用题目:爱因斯坦的超级问题、字谜问题、汉诺塔问题、八数码问题、八皇后问题、农夫过河问题、传教士野人问题等,选两个。

要求实验报告中包括:程序分析、运行结果、实验收获、难点重点分析等。

二、所用仪器、设备

PC机和trinc prolog编译软件。

三、实验原理

PROLOG语言是一种以逻辑推理为基础的逻辑型程序设计语言,是一种陈述性语言而不是过程性语言。PROLOG语言能够自动实现模式匹配和回溯、具备递归技术,而且语法简明,可以简化复杂问题求解。

1、prolog本身自带推理机,其回溯、递归技术和表处理技术可简化复杂问题求解。

2、trinic prolog的跟踪、设断点对于调试程序是非常有用的。

四、实验方法与步骤

1、说明用实例如何观察并理解回溯机制

回溯机制所谓回溯,就是在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标。如果失败的子目标前再无子目标,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配。回溯是PROLOG的一个重要机制。

例如:农夫过河问题的move(...),其对应有四个子目标。当某个子目标不成立时,就会回溯到前一个子目标,撤销原约束值,然后重新合一。

2、如何用断点、跟踪以及显示调试prolog程序

将鼠标移动至语句之前单击便打入了断点。编译了以后,如果点“Prove”这个按钮,则

程序运行到断处。

点“Trace on”这个按钮便进入单步运行状态,即跟踪状态。点击“Start step”开始单步运行程序。

知道了如何单步运行与打断点,很容易就可以对prolog程序进行调试。

注:说明实验的操作过程。

五、求解的问题与程序

注:说明所选择实验题目,问题分析过程和程序难点分析等。

1.险洞探险问题:

Treasure-route代码:

go(Start,Goal):-

route(Start,Goal,[Start],VisitedL),

reverse(VisitedL,[],RVisitedL),

write("One route is:"),

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).

相关文档
最新文档