1、传教士与野人综合设计报告设计名称: 人工智能课程设计 设计题目: 传教士与野人过河问题 学生学号: 0805030119 专业班级: 智能1班 学生姓名: 学生成绩: 指导教师(职称): 课题工作时间: 2010-9-13 至 2010-9-25 说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。4、所有学生必须参加综合设计的答辩环节
2、,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。成绩评定表学生姓名: 学号: 班级: 类别合计分值各项分值评分标准实际得分合计得分备注平时表现1010按时参加综合设计,无旷课、迟到、早退、违反实验室纪律等情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演
3、示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3510报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。5参考文献数量在3篇以上,格式符合要求,在正文中正确引用。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答
4、教师所提出的问题。总评成绩: 分 补充说明: 指导教师: (签字)日 期: 年 月 日答辩记录表学生姓名: 学号: 0805030119 班级: 智能1班 答辩地点: 计算机院大楼j520 答辩内容记录:根据ppt讲解此次课程设计的设计原理、方法,并所说自己的体会。1、说说设计答:此次设计的课题是传教士与野人过河问题,在这个设计中首先是分析题中的的各种状态,要解决的问题以及各种算法。我所用的算法是宽度优先搜索。程序中宽度优先搜索是在search()函数中实现。2.、程序是如何由初始状态搜索到目标状态的?答:程序中初始状态是默认值,从待扩展链表中取出链表的第一个节点,将其放入已扩展链表的尾部,然
5、后调用search()函数对这个节点进行扩展。当扩展的节点距初始节点的距离已达到事先规定的最大搜索距离时判定搜索失败。Stretch()函数负责对具体的节点进行展开,展开的过程必须满足对节点的限制条件,除目标节点外其他新展开的节点被依次存入unopened链表的尾部,目标节点由于已没有必要再进行扩展,因此直接存入opened链表中。答辩成绩合计分值各项分值评分标准实际得分合计得分备注2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。答辩小组成员(签字): 年 月 日指导教师评语指导教师: (签字)日
6、期: 年 月 日一、 综合设计目的、条件、任务和内容要求:1.1综合设计目的1.2综合设计条件1.3综合设计任务1.5综合设计内容1.6综合设计要求 指导教师签字: 年 月 日二、进度安排:三、应收集资料及主要参考文献:四、综合设计(课程设计)摘要(中文):通过具体问题的编程求解,了解人工智能的基本解决方法;使用一种搜索策略,以加深理解。过河问题的求解:三个修道士和三个野人过河,船一次最多只能载两个人,在任何时候修道士的人数不能少于野人人数,否则野人会吃掉修道士。找出六个人顺利过河的所有方案。编制程序,使用一定的搜索策略,找出所有过河方法。五、综合设计(课程设计)Abstract(英文):Th
7、e curriculum project is requests us in the utilization concrete application which studies to the artificial intelligence. What this curriculum project needs us to use is the searching algorithm. Regardless of being the breadth-first search or the depth-first search. Through concrete question program
8、ming solution, understanding artificial intelligence basic solution method; Uses one kind of search strategy, deepens understanding. Crosses river the question solution: Three monks and three savages cross river, the ship one time most can only carry two people, at any time monks population cannot b
9、e short in the savage population, otherwise the savage will eat the monk. Discovers all plans which six people cross river smoothly. The coding, uses certain search strategy, discovers all crosses river the method.目 录摘 要 IIAbstract . II第一章 课题绪论. .11.1 课题背景 .11.2 设计问题 . 11.2 基本理论依据 . 1第二章 设计简介及设计方案论述
10、 . 22.1 设计原理 .22.1.1 宽度优先搜索 .32.1.2 深度优先搜索 .3第三章 详细设计. 53.1 设计分析 .5第四章 设计结果及分析. 11总 结 .13致 谢 .14参考文献 .15附录 主要程序代码 .16摘 要课程设计是要求我们对人工智能所学的运用到具体应用中。本次课程设计需要我们用到的是搜索算法。无论是宽度优先搜索还是深度优先搜索。通过具体问题的编程求解,了解人工智能的基本解决方法;使用一种搜索策略,以加深理解。过河问题的求解:三个修道士和三个野人过河,船一次最多只能载两个人,在任何时候修道士的人数不能少于野人人数,否则野人会吃掉修道士。找出六个人顺利过河的所有
11、方案。编制程序,使用一定的搜索策略,找出所有过河方法。关键词:人工智能;搜索算法;规则Abstract(英文摘要正文为小4号 Times New Roman字体)The curriculum project is requests us in the utilization concrete application which studies to the artificial intelligence. What this curriculum project needs us to use is the searching algorithm. Regardless of being th
12、e breadth-first search or the depth-first search. Through concrete question programming solution, understanding artificial intelligence basic solution method; Uses one kind of search strategy, deepens understanding. Crosses river the question solution: Three monks and three savages cross river, the
13、ship one time most can only carry two people, at any time monks population cannot be short in the savage population, otherwise the savage will eat the monk. Discovers all plans which six people cross river smoothly. The coding, uses certain search strategy, discovers all crosses river the method.Key
14、words(小4号 黑体 顶格):artificial intelligence;search algorithm;rule第一章 课题绪论这一章应说明本设计课题的背景、目的、意义、应解决的主要问题及应达到的技术要求;本设计的基本理论依据和主要工作内容。1.1 课题背景 通过上个学期对人工智能学习,让我们了解了各种搜索策略,如深度优先搜索、宽度优先搜索、启发式搜索等。在学习了这些方法后,如何运用就是我们现在所需要面临的问题。通过对传教士与野人问题的程序设计,能使我更加深刻的理解各种搜索策略。1.2 设计问题 传教士与野人过河问题是这样的:设有3个传教士和3个野人来到河边,打算乘一只船从右岸渡到
15、左岸去。该船的负载能力为两人。在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去?1.2.1实验目的通过实际编程操作,了解人工智能中各种解决问题的方法。1.2.2 实验要解决的主要问题分析题目得出初始状态以及执行后所得的目标状态,分析所要进行的操作及其可能性。确定所要采用的搜索策略后要进行哪些操作,然后考虑题目中所要遵循的规则。1.2.3 应达到的技术要求熟练掌握vc+的应用,能运用个搜索策略进行编程1.3基本理论依据图搜索控制策略:一种在图中寻找路径的方法。图中每个节点对应一个状态,每条连线对应一个操作符。这些节点和连线(即状态与操
16、作符)又分别由产生式系统的数据库和规则来标记。求得把一个数据库变换为另一数据库的规则序列问题就等价于求得图中的一条路径问题。在基于宽度优先搜索策略的基础上对问题进行求解。规则正向演绎系统定义:正向规则演绎系统是从事实到目标进行操作的,即从状况条件到动作进行推理的,也就是从if到then的方向进行推理的。 求解过程事实表达式的与或形变换:在基于规则的正向演绎系统中,我们把事实表示为非蕴涵形式的与或形,作为系统的总数据库。第二章 设计简介及设计方案论述 传教士与野人过河问题是这样的:设有3个传教士和3个野人来到河边,打算乘一只船从右岸渡到左岸去。该船的负载能力为两人。在任何时候,如果野人人数超过传
17、教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去?我们通过分析得出先要了解这个问题的初始状态和目标状态,在这个基础上确定搜索方法及其规则。2.1 设计原理 通过对问题的分析,我们知道了问题的初始状态及要达到的目标状态,其图如下:图1 传教士与野人状态图由于传教士和野人数是一个常数,所以知道了一岸的情况,另一岸的情况也就知道了。因此为了简便起见,在描述问题时,只描述一岸-如左岸-的情况就可以了。从状态空间图看出解序列相当之多,但最短解序列只有4个,均由11次摆渡操作构成。若给定其中任意两个状态分别作为初始状态和目标状态,就立即可找出对应的解序列来。在一般情况下,求
18、解过程就是对状态空间搜索出一条解路径的过程。先来看看问题的初始状态和目标状态,假设和分为甲岸和乙岸:初始状态:甲岸,3野人,3牧师;乙岸,0野人,0牧师;船停在甲岸,船上有0个人;目标状态:甲岸,0野人,0牧师;乙岸,3野人,3牧师;船停在乙岸,船上有0个人;整个问题就抽象成了怎样从初始状态经中间的一系列状态达到目标状态。单链表的步骤:从first开始找第i+1个结点,p指向该结点,q指向p之前驱结点;从单链表中删除p;释放p之空间; 表长减1。单链表运算的优缺点优点: 单链表插入和删除只需修改一两个指针,无需移动元素。如已知前驱结点,插入删除运算的时间为O(1)。 可以动态分配结点空间,线性
19、表的长度只受内存大小限制。缺点: 查找运算费时,只能顺序查找,不能随机查找。2.1.1宽度优先搜索定义:以接近起始节点的程度逐层扩展节点的搜索方法。特点: 一种高代价搜索,但若有解存在,则必能找到它图2 宽度优先搜索框图2.1.2 深度优先搜索定义:首先扩展最新产生的(即最深的)节点。算法:防止搜索过程沿着无益的路径扩展下去,往往给出一个节点扩展的最大深度深度界限。 与宽度优先搜索算法最根本的不同在于:将扩展的后继节点放在OPEN表的前端。深度优先搜索用一个数组存放产生的所有状态。(1) 把初始状态放入数组中,设为当前状态;(2) 扩展当前的状态,产生一个新的状态放入数组中,同时把新产生的状态
20、设为当前状态;(3) 判断当前状态是否和前面的重复,如果重复则回到上一个状态,产生它的另一状态;(4) 判断当前状态是否为目标状态,如果是目标,则找到一个解答,结束算法。(5) 如果数组为空,说明无解。图3 深度优先搜索第三章 详细设计问题:设有3个传教士和3个野人来到河边,打算乘一只船从右岸渡到左岸去。该船的负载能力为两人。在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去?搜索中采用的一些规则如下: 1、渡船优先规则:甲岸一次运走的人越多越好(即甲岸运多人优先),同时野人优先运走; 乙岸一次运走的人越少越好(即乙岸运少人优先),同
21、时牧师优先运走; 2、不能重复上次渡船操作(通过链表中前一操作比较),避免进入死循环; 3、任何时候河两边的野人和牧师数均分别大于等于0且小于等于3; 4、由于只是找出最优解,所以当找到某一算符(当前最优先的)满足操作条件后,不再搜索其兄弟节点,而是直接载入链表。 5、若扩展某节点a的时候,没有找到合适的子节点,则从链表中返回节点a的父节点b,从上次已经选择了的算符之后的算符中找最优先的算符继续扩展b。 当传教士与野人的人数为n时,情况依此类推。定义结点的结构:以取船的一个来回作为一步搜索,这样结点可有下面几个量进行描述:两岸大的传教士人数和野人数、本节点距离起始节点的距离,即由初始节点搜索几
22、步后到达本节点。需要注意的是并不是所有的节点都是可达的,题目中对可达节点作出了限制,只有两岸上传教士人数都不少于野人数(无传教士除外)的节点是可达的,另外岸上的人数不能为负。定义连接:两节点间的连接可由船从右岸到左岸时船上的传教士人数、野人、船返回时船上的传教士人数、野人人数进行描述。由于船上最多只能在两人,因此不存在限制问题。3.1设计分析#include #include #define maxloop 100 /最大层数,对于不同的扩展方法自动调整取值#define pristnum 3#define slavenum 3struct SPQ int sr,pr; /船运行一个来回后河右
23、岸的野人、传教士的人数 int sl,pl; /船运行一个来回后河左岸的野人、传教士的人数 int ssr,spr; /回来(由左向右时)船上的人数 int sst,spt; /去时(由右向左时)船上的人数 int loop; /本结点所在的层数 struct SPQ *upnode ,*nextnode;/本结点的父结点和同层的下一个结点的地址spq; 为了使程序更加简明,这里将节点及达到这节点的连接合并,有结构体SPQ表示。主函数如下:void main() int flag; /标记扩展是否成功 for( ; ; ) initiate(); flag = search (); if(fl
24、ag = 1) recorder(); releasemem(); showresult(); goon(); else printf(无法找到符合条件的解); releasemem(); goon(); int search() int flag; struct SPQ *ntx; /提供将要扩展的结点的指针 for( ; ; ) ntx = unopened; /从待扩展链表中提取最前面的一个 if(ntx-loop = maxloop) return 0; addtoopened(ntx); /将ntx加入已扩展链表,并将这个节点从待扩展链表中去掉 flag = stretch(ntx)
25、; /对ntx进行扩展,返回-1,0,1 if(flag = 1) return 1; search()函数实现对问题求解的搜索过程,它首先从待扩展链表中取出链表的第一个节点,将其放入已扩展链表的尾部,然后调用search()函数对这个节点进行扩展。当扩展的节点距初始节点的距离已达到事先规定的最大搜索距离时判定搜索失败。int stretch(struct SPQ *ntx) int fsr , fpr ; /在右岸上的人数 int fsl , fpl ; /在左岸上的人数 int sst , spt ; /出发时在船上的人数 int ssr , spr ; /返回时船上的人数 struct
26、SPQ *newnode; for (sst = 0 ; sst sr; fpr = ntx - pr; fsl = ntx - sl; fpl = ntx - pl; if (sst = fsr) & ( 2 - sst) upnode = ntx; /保存父结点的地址以成链表 newnode - nextnode = NULL; newnode - sr = 0; newnode - pr = 0; newnode - sl = opened - sr; newnode - pl = opened - pr; newnode - sst = sst; newnode - spt = spt
27、; newnode - ssr = 0; newnode - spr = 0; newnode - loop = ntx - loop + 1; oend - nextnode = newnode; oend = newnode; openednum+; return 1; else if (fpr - fsr) * fpr = 0) /判断是否满足传教士人数必须大于或等于野人人数 fsl = fsl + sst; fpl = fpl + spt; for (ssr = 0 ; ssr = 1 ; ssr+) /返回 int ffsl , ffpl; if (ssr = fsl) & (1 - ssr) = fpl) spr = 1 - ssr; ffsl = fsl - ssr;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1