首页 A-算法人工智能课程设计

A-算法人工智能课程设计

举报
开通vip

A-算法人工智能课程设计人工智能(A*算法)一、A*算法概述A*算法是到目前为止最快的一种计算最短路径的算法,但它一种‘较优’算法,即它一般只能找到较优解,而非最优解,但由于其高效性,使其在实时系统、人工智能等方面应用极其广泛。A*算法结合了启发式方法(这种方法通过充分利用图给出的信息来动态地作出决定而使搜索次数大大降低)和形式化方法(这种方法不利用图给出的信息,而仅通过数学的形式分析,如Dijkstra算法)。它通过一个估价函数(HeuristicFunction)f(h)来估计图中的当前点p到终点的距离(带权值),并由此决定它的搜索方...

A-算法人工智能课程设计
人工智能(A*算法)一、A*算法概述A*算法是到目前为止最快的一种计算最短路径的算法,但它一种‘较优’算法,即它一般只能找到较优解,而非最优解,但由于其高效性,使其在实时系统、人工智能等方面应用极其广泛。A*算法结合了启发式 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 (这种方法通过充分利用图给出的信息来动态地作出决定而使搜索次数大大降低)和形式化方法(这种方法不利用图给出的信息,而仅通过数学的形式 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ,如Dijkstra算法)。它通过一个估价函数(HeuristicFunction)f(h)来估计图中的当前点p到终点的距离(带权值),并由此决定它的搜索方向,当这条路径失败时,它会尝试其它路径。因而我们可以发现,A*算法成功与否的关键在于估价函数的正确选择,从理论上说,一个完全正确的估价函数是可以非常迅速地得到问题的正确解答,但一般完全正确的估价函数是得不到的,因而A*算法不能保证它每次都得到正确解答。一个不理想的估价函数可能会使它工作得很慢,甚至会给出错误的解答。为了提高解答的正确性,我们可以适当地降低估价函数的值,从而使之进行更多的搜索,但这是以降低它的速度为代价的,因而我们可以根据实际对解答的速度和正确性的 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 而设计出不同的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,使之更具弹性。二、A*算法分析众所周知,对图的 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示可以采用数组或链表,而且这些表示法也各也优缺点,数组可以方便地实现对其中某个元素的存取,但插入和删除操作却很困难,而链表则利于插入和删除,但对某个特定元素的定位却需借助于搜索。而A*算法则需要快速插入和删除所求得的最优值以及可以对当前结点以下结点的操作,因而数组或链表都显得太通用了,用来实现A*算法会使速度有所降低。要实现这些,可以通过二分树、跳转表等数据结构来实现,我采用的是简单而高效的带优先权的堆栈,经实验表明,一个1000个结点的图,插入而且移动一个排序的链表平均需500次比较和2次移动;未排序的链表平均需1000次比较和2次移动;而堆仅需10次比较和10次移动。需要指出的是,当结点数n大于10,000时,堆将不再是正确的选择,但这足已满足我们一般的要求。求出2D的迷宫中起始点S到目标点E的最短路径?算法:findpath(){把S点加入树根(各点所在的树的高度表示从S点到该点所走过的步数);把S点加入排序队列(按该点到E点的距离排序+走过的步数从小到大排序);1、排序队列sort_queue中距离最小的第一个点出列,并保存入store_queue中2、从出列的点出发,分别向4个(或8个)方向中的一个各走出一步3、并估算第2步所走到位置到目标点的距离,并把该位置加入树,最后把该点按距离从小到大排序后并放入队列中(由trytile函数实现)4、如果该点从四个方向上都不能移动,则把该点从store_queue中删除5、回到第一点,直到找到E点则结束从目标点回溯树,直到树根则可以找到最佳路径,并保存在path[]中}文末附带的程序参考了风云的最短路径代码,并加以改进和优化:把原来用于存放已处理节点的堆栈改为队列(store_queue),这样在从sort_queue队列出列时可直接放入store_queue中。解除了地图大小的限制(如果有64K内存限制时,地图大小只能是180x180)。删除了原程序中的一些冗余,见程序中的注释。程序继续使用dis_map数组保存各点历史历史最佳距离,也包含了某点是否已经经过的信息,虽然这样做可能会比使用链表多用一些内存,但是在搜索时可以节省不时间。程序更具有实用性,可直接或修改后运用于你的程序中,但请你使用该代码后应该返回一些信息给我,如算法的改进或使用于什么程序等。三、A*算法程序本程序可以用BorlandC++或DJGPP编译#include<>#include<>#include<>#include<>#definetile_num(x,y)((y)*map_w+(x));}}intreadmap(){FILE*f;inti,j;f=fopen("","r");assert(f);fscanf(f,"%d,%d\n",&map_w,&map_h);map=malloc(map_w*map_h+1);assert(map);for(i=0;ifgets(map+tile_num(0,i),map_w+2,f);fclose(f);start_x=-1,end_x=-1;for(i=0;ifor(j=0;jif(map[tile_num(j,i)]=='s')map[tile_num(j,i)]='',start_x=j,start_y=i;if(map[tile_num(j,i)]=='e')map[tile_num(j,i)]='',end_x=j,end_y=i;}assert(start_x>=0&&end_x>=0);dis_map=malloc(map_w*map_h*sizeof(*dis_map));assert(dis_map);return0;}voidshowmap(){inti,j;clrscr();for(i=0;igotoxy(1,i+1);for(j=0;jif(map[tile_num(j,i)]!='')cprintf("O");elsecprintf("");}gotoxy(start_x+1,start_y+1);cprintf("s");gotoxy(end_x+1,end_y+1);cprintf("e");}intmain(){int*path;readmap();showmap();getch();path=findpath();printpath(path);if(dis_map)free(dis_map);if(path)free(path);if(map)free(map);getch();return0;}四、运行结果五、心得本次大作业自己努力做了前面的分析,虽然程序简单,在一开始运行的时候找不到主函数,经过认真的改正,终于发现了问题,自己的编程技巧不是很好,借鉴了资料和同学们的意见终于可以能够运行,并的出结果,在次人工智能大作业中学到了很多的专业知识,也知道人工只能也是一门很重要的课程。
本文档为【A-算法人工智能课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
唐老师
暂无简介~
格式:pdf
大小:155KB
软件:PDF阅读器
页数:5
分类:
上传时间:2023-03-15
浏览量:0