电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

A 算法人工智能课程设计VIP免费

A 算法人工智能课程设计_第1页
1/9
A 算法人工智能课程设计_第2页
2/9
A 算法人工智能课程设计_第3页
3/9
人工智能(A*算法)一、A*算法概述A*算法是到目前为止最快的一种计算最短路径的算法,但它一种'较优'算法,即它一般只能找到较优解,而非最优解,但由于其高效性,使其在实时系统、人工智能等方面应用极其广泛。A*算法结合了启发式方法(这种方法通过充分利用图给出的信息来动态地作出决定而使搜索次数大大降低)和形式化方法(这种方法不利用图给出的信息,而仅通过数学的形式分析,如Dijkstra算法)。它通过一个估价函数(HeuristicFunction)f(h)来估计图中的当前点p到终点的距离(带权值),并由此决定它的搜索方向,当这条路径失败时,它会尝试其它路径。因而我们可以发现,A*算法成功与否的关键在于估价函数的正确选择,从理论上说,一个完全正确的估价函数是可以非常迅速地得到问题的正确解答,但一般完全正确的估价函数是得不到的,因而A*算法不能保证它每次都得到正确解答。一个不理想的估价函数可能会使它工作得很慢,甚至会给出错误的解答。为了提高解答的正确性,我们可以适当地降低估价函数的值,从而使之进行更多的搜索,但这是以降低它的速度为代价的,因而我们可以根据实际对解答的速度和正确性的要求而设计出不同的方案,使之更具弹性。二、A*算法分析众所周知,对图的表示可以采用数组或链表,而且这些表示法也各也优缺点,数组可以方便地实现对其中某个元素的存取,但插入和删除操作却很困难,而链表则利于插入和删除,但对某个特定元素的定位却需借助于搜索。而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))//将x,y坐标转换为地图上块的编号#definetile_x(n)((n)%map_w)//由块编号得出x,y坐标#definetile_y(n)((n)/map_w)#defineMAPMAXSIZE180//地图面积最大为180x180,如果没有64K内存限制可以更大#defineMAXINT32767//树结构,比较特殊,是从叶节点向根节点反向链接,方便从叶节点找到根节点typedefstructtree_node*TREE;structtree_node{inth;//节点所在的高度,表示从起始点到该节点所有的步数inttile;//该节点的位置TRE...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

A 算法人工智能课程设计

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部