Prolog实验报告科技学院.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Prolog实验报告科技学院

华北电力大学科技学院 实 验 报 告 | | 实验名称 PROLOG语言编程练习及图搜索问题求解 课程名称 人工智能及应用 | | 专业班级: 软件09k2 学生姓名:彭奇 学 号: 091909020221 成 绩: 指导教师: 刘 丽 实验日期:2012-5 (实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm, 右2.1cm;字体 验证性、综合性实验报告应含的主要内容: 一、实验目的及要求 二、所用仪器、设备 三、实验原理 四、实验方法与步骤 五、实验结果与数据处理 六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见) 七、所附实验输出的结果或数据 设计性实验报告应含的主要内容: 一、设计要求 二、选择的方案 三、所用仪器、设备 四、实验方法与步骤 五、实验结果与数据处理 六、结论(依据“设计要求”) 七、所附实验输出的结果或数据 华 北 电 力 大 学 科 技 学 院 实 验 报 告 第 页 共 页 一、实验目的及要求 熟悉PROLOG的运行环境,进行prolog的基本编程练习。 了解PROLOG语言中常量、变量的表示方法。PROLOG的简单程序结构,掌握分析问题、询问解释技巧;进行事实库、规则库的编写,并在此基础上进行简单的询问。 具体实验课上相关内容,练习例1到例6的内容。 图搜索问题求解。 任选以下实际应用题目:爱因斯坦的超级问题、字谜问题、汉诺塔问题、八数码问题、八皇后问题、过河问题等,选两个。 要求实验报告中包括:程序及其注释和说明、console表单中的程序运行结果。 二、所用仪器、设备 PC机和trinc prolog编译软件 三、实验原理 PROLOG语言是一种以逻辑推理为基础的逻辑型程序设计语言,是一种陈述性语言而不是过程性语言。PROLOG语言能够自动实现模式匹配和回溯、具备递归技术,而且语法简明,可以简化复杂问题求解。 四、实验方法与步骤 五、求解的问题与程序 1汉诺塔问题 如图,目的是把左边的所有盘子移到右边的杆子上。一次只能移动一个盘子,你可以使用中间的杆子作为临时存放盘子的地方。小盘子必须放在大盘子之上 2 传教士野人问题 有三个牧师和三个野人过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果野人的人数大于牧师的人数,那么牧师就会有危险。你能不能找出一种安全的渡河方法呢? 六、讨论与结论 1 对于汉诺塔问题的分析: 如果要移动N个盘子,就要分三步走: 把N-1个盘子移动到中间的杆子上(把中间的杆子作为临时存放盘子的位置) 把最后一个盘子直接移到右边的杆子上 最后把中间杆子上的盘子移到右边的杆子上(把左边的杆子作为临时存放盘子的位置) 所用到的prolog程序: hanoi(N):-move(N,left,middle,right). move(1,A,_,C):-inform(A,C),!. move(N,A,B,C):-N1 is N-1, move(N1,A,C,B),inform(A,C),move(N1,B,A,C). inform(Loc1, Loc2):-nl, write(Move a disk from -Loc1- to -Loc2). 对该程序的分析 主程序为hanoi/1,它的参数为盘子的数目。它调用递归谓词move来完成任务。三个杆子的名字分别为left、middle、right 第一个move/4子句是边界情况,即只有一个盘子时,直接调用inform/2显示移动盘子的方法。后面使用cut,是因为:如果只有一个盘子,就是边界条件,无需再对第二条子句进行匹配了 第二个move/4子句为递归调用,首先把盘子数目减少一个,再递归调用move/4,把N-1个盘子从A杆通过C杆移到B杆,再把A杆上的最后一个盘子直接从A杆移到C杆上,最后再递归调用move/4,把B杆上的N-1个盘子通过A杆移到C杆上 inform/2,把移动过程通过write/1谓词写出,由于write/1只能有一个参数,所以使用“-”操作符相连 ?-hanoi(3). 2传教士野人过河问题 我们用下面的复合结构来表达问题的某个状态。 ((左岸牧师数,左岸野人数),(右岸牧师数,右岸野人数),船的位置) 上面的结构中,船的位置为0表示船在左岸,为1表示在右岸。一开始,所有的人都在左岸。所以初始状态如下: ((3,3),(0,0),0) 而我们

文档评论(0)

cuotian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档