奥鹏大工20春《人工智能》大作业题目及要求.docx

上传人:lao****ou 文档编号:199314 上传时间:2023-05-18 格式:DOCX 页数:16 大小:96.33KB
下载 相关 举报
奥鹏大工20春《人工智能》大作业题目及要求.docx_第1页
第1页 / 共16页
奥鹏大工20春《人工智能》大作业题目及要求.docx_第2页
第2页 / 共16页
奥鹏大工20春《人工智能》大作业题目及要求.docx_第3页
第3页 / 共16页
奥鹏大工20春《人工智能》大作业题目及要求.docx_第4页
第4页 / 共16页
奥鹏大工20春《人工智能》大作业题目及要求.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《奥鹏大工20春《人工智能》大作业题目及要求.docx》由会员分享,可在线阅读,更多相关《奥鹏大工20春《人工智能》大作业题目及要求.docx(16页珍藏版)》请在第一文库网上搜索。

1、大工20春人工智能大作业题目及要求参考答案题目:A*算法1谈谈你对本课程学习过程中的心得体会与建议?人工智能是研究如何利用计算机来模拟人脑所从事的感知、推理、学习、思考、规划等人类智能活动,来解决需要用人类智能才能解决的问题,以延伸人们智能的科学。掌握人工智能的基本概念、基本原理、知识的表示、推理机制和求解技术,以及机器学习的技术方法.掌握人工智能的一个问题和三大技术,即通用问题求解和知识表示技术、搜索技术、推理技术。人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步

2、,等等。但总的来说,“人工系统”就是通常意义下的人工系统。关于什么是“智能”,就问题多多了。这涉及到其它诸如意识、自我、思维等等问题。人唯了解的智能是人本身的智能,这是普遍认同的观点。但是我们对我们自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限,所以就很难定义什么是“人工”制造的“智能”了。2.人工智能课程设计,从以下5个题目中任选其一作答。人工智能课程设计题目一:A*算法要求:(1)撰写一份WOrd文档,里面包括(算法思路、算法程序框图、重排九宫问题)章节。(2)算法思路:简单介绍该算法的基本思想,100字左右即可。(3)算法程序框图:绘制流程图或原理图,从算法的开始到结束的程

3、序框图。(4)对于重排九宫问题的启发式函数:f(x)=p(x)+3s(x)P(X)是X结点和目标结点相比每个将牌“离家”的最短距离之和;S(X)是:每个将牌和目标相比,若该将牌的后继和目标中该将牌的后继不同,则该将牌得2分,相同则该将牌得O分,中间位置有将牌得1分,没将牌得O分。对于给定的初始格局和目标状态请按此启发式函数给出搜索的状态空间图。初始格局目标状态答:一、问题描述八数码问题作为一个经典的问题被大家所熟知,该问题是求解如何从开始的一个状态(布局)到达目标状态所需步数最少的问题。问题描述如下面第一个图的九宫格中,放着18的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到

4、空格中。经过若干次移动,可以形成第二个图所示的局面。我们把第一个图的局面记为:12345678.把第二个图的局面记为:123.46758显然是按从上到下,从左到右的顺序记录数字,空格记为句点。本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出输入格式输入第一行包含九宫的初态,第二行包含九宫的终态。输出格式输出最少的步数,如果不存在方案,则输出-1。样例输入12345678.123.46758样例输出3样例输入13524678.46758123.样例输出22二、流程图三、问题分析将每一个状态作为一个结点容易想到可以用广搜的方法解决,这种方法简单,

5、但是就算是加入哈希判重也会搜索很多的无用结点。我们打算用A*算法解决这个问题,既然确定了用A*算法,那么我们首先应该确定估价函数h(x),估价函数的选取直接决定A*算法的效率,一般对于八数码问题有三种估价函数的选法:以不在位的数码的个数为估价函数以不在位的数码归位所需的最短距离和即曼哈顿距离为估价函数将逆序对数作为估价函数可以证明前两种都是乐观估计,最后一种不是,因此前两种都可以作为八数码问题的估价函数,但是你的估计值与真实值越近所需要搜索的状态越少,很明显第一种方法太乐观了(估价函数的选取直接决定算法的效率),因此我们采用第二种方法作为八数码问题的估价函数解决了估价函数的问题以后,第二个需要

6、解决的问题就是判重,我们首先想到的是用集合set,这种方法最简单,但是很不幸这种方法耗时也是最多的,如果时间要求比较高的话,这种情况很容易超时。这里我们不用这种方法,判重问题自然而然想到的是哈希表,好了现在问题又来了,如何创建哈希表,也就是哈希函数怎么写,这个东西比较有技巧,还好对于这种问题有一种现成的方法解决,那就是康托展开,还有一个问题就是有些问题是无解的,这种情况我们不希望进行很大力气的搜索之后发现无解,最好是能提前预知,值得庆幸的是八数码无论怎么移动逆序的奇偶性不变,因此我们可以直接通过O(1)的时间判断开始和目标结点的逆序奇偶性是否相同就可以了。有了上面的分析之后,程序就可以写出来了

7、*A*算法解决八数码问题(九宫重排)*程序看起来比较长,核心只有intAstar(intCO1,IntCO1,int,int);函数* 其它函数供AStar函数调用,起辅助作用,还有几个函数仅仅是为了使界面更友好* 所有函数均有注释说明* 其中可行性判断函数需要对八数码问题进行数学上的简单分析,* hash函数的设计有些技巧,其他函数的原理都是显然的* 程序运行有问题可以和我联系* /ftinc1udeftinc1udeftinc1udeftinc1udeftinc1udeSdefineCO13defineMAXSTEP70usingnamespacestd;voidoutput(intCO1

8、);/*输出函数*/voidinput(intCO1);/*输出函数*/intAstar(intCO1,intCO1,int,intPath);/*核心函数,起始,终止,深度,方向*/boo1eq(intfromCO1,inttoCO1);/*判断起始与终止是否相同*/boo1change(intfromCO1,constinti,constintj,constintstep);/*判断当前状态是否可以进行相应移动,并进行状态转变*/intva1ue(constintfromCO1,constinttoC01);/*估价函数*/voidoutput_tow(intfromCO1,inttoC0

9、1);/*输出函数,和上面的OUtPPUt函数差不多*/boo1possib1e(intfromCO1,inttoCO1);/*可行性判断*/inth9=40320,5040,720,120,24,6,2,1,1)*hash函数用到的数据8-0的阶乘*/boo1ha400000;structNodeintpathMAXSTEP;*路径信息*/intexpend;/*权重*/intdeep;/*深度*/intxCO1CO1;/*状态信息*/;structcmpboo1operator()(constNodeA,constNodeB)returnA.expendB.expend;);intpaMA

10、XSTEP;priority-queueNode,vector,cmpq;/*优先队列*/Nodemake(intfromCO1,intdeep,intv,intpath,intstep);/*转换函数*/intmain()intfromCO1CO1;inttoCO1CO1;intk=0,c;memset(ha,0,sizeof(ha);memset(pa,-1,sizeof(pa);Printf(请按行输入原始九宫格,空白的输入0r);input(from);Printf(原始九宫格为:n);output(from);Printf(请按行输入目标九宫格,空白的输入0n);input(to);

11、Printf(目标九宫格为:n);output(to);Printf(按任意键显示执行步骤:n);ff1ush(stdin);getcharO;if(!possib1e(from,to)COUt。目标状态不可达,请换一组数据测试!end1;return0;)intd=star(from,to,0,pa);COUt久最优路径到目标位置需要。d步Gend1;COUt当前状态t目标状态Hnd1;whi1e(c=pa+k)!=-1)inti,j;/*记录当前状态,白板位置*/CoUt第k步end1;for(i=0;i3;i+)for(j=0;j3;j+)if(fromij=0)goto0;0:chan

12、ge(from,i,j,pak);output_tow(from,to);coutz,zzend1;return0;)voidoutput(intaCO1)inti,j;for(i=0;iC01;i+)for(j=0;jC01;j+)Printf(%d,aij);putchar(,n,);)voidoutputtow(intfromCO1,inttoCO1)inti,j;for(i=0;iCO1;i+)for(j=0;jCO1;j+)printf(,z%d,fromij);cout,t,t,;for(j=0;jC01;j+)printf%d*,toij);putchar(,n,);)voidi

13、nput(intaCO1)(inti,j,c;s:intg9;memset(g,0,sizeof(g);for(i=0;iC01;i+)for(j=0;jC01;j+)scanfC,%d,z,&aij);c=aij;if(gcc8)COUt输入有误,请重新输入“Xend1;gotos;gc+;)intAstar(intfromCO1,inttoCO1,intdeep,intpath)(if(eq(from,to)memcpy(pa,path,sizeof(pa);returndeep;inti,j;/*记录当前状态,白板位置*/int*a=from0;intb9;intm=0;for(i=0;

14、i9;i+)bi=ai;for(i=0;i9;i+)for(j=0;jaj)bi-;m+=hi*bi;)ham=1;for(i=0;i3;i+)for(j=0;j3;j+)if(fromij=0)gotook;ok:for(intstep=0;step4;step+)if(change(from,i,j,step)intv=va1ue(from,to)+deep+1;Noden;n-make(from,deep+1,v,path,step);q.push(n);change(from,i,j,step);)Nodep=q.top();intf1ag=0;whi1e(!f1ag)a-p.x0;fO;for(i=0;i9;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服