【技术实现步骤摘要】
基于二叉堆节点排序的A星寻路方法及系统
本专利技术涉及一种游戏
,特别涉及一种基于二叉堆节点排序的A星寻路方法及系统。
技术介绍
游戏在业界被称为第九艺术,成功的游戏更会受到全球玩家推崇。随着移动互联网技术的应用以及和中国移动网络3G、4G增值等业务迅速发展,手机游戏已经展露锋芒。在游戏软件中,人工智能是一个重要而又复杂的模块,而寻路算法是人工智能运用于电子游戏中的最基本问题之一。物体按照某种指定目的地的方式移动其就要求程序必须能够找到一条从起点到目标点的最佳路径,这条路径应该是绕过障碍物并且到达目的地的最短的路径,完成这个任务最常用的算法就是A星算法。A星作为一种高性价比的寻路算法一直被游戏行业所广泛使用,很多客户端游戏和大型网页游戏中的寻路算法都基于A星算法如:英雄联盟,魔兽世界,梦幻飞仙等。但是由于手机游戏运行软件条件和硬件不佳等原因,传统的A星算法也急需改进,以此提高寻路效率。传统A星算法需要频繁维护OPEN和CLOSE表,并且每次都需要对OPEN表中的节点进行排序,而采用冒泡排序的A星算法的平均时间复杂为0(η~2),执行的效率相当的缓慢,特别是当地图更大时,反复搜索这么大的列表会严重拖慢整个过程。这显然无法满足游戏实时性要求较高的特点。
技术实现思路
有鉴于此,本专利技术所要解决的技术问题是提供一种基于二叉堆节点排序的A星寻路方法及系统。 本专利技术的目的之一是提出一种基于二叉堆节点排序的A星寻路方法;本专利技术的目的之二是提出一种基于二叉堆节点排序的A星寻路系统。 本专利技术的目的之一是通过以下技 ...
【技术保护点】
基于二叉堆节点排序的A星寻路方法,其特征在于:包括以下步骤:S1:初始化OPEN表、CLOSE表和目标点A,将起始结点S放入OPEN表,CLOSE表置空;S2:判断OPEN表是否为空,如果否,则从OPEN表的表头取一个结点n;如果是,则结束算法过程;S3:判断结点n是否为目标解A,如果是,则结束算法,如果否,则转入步骤S4;所述目标解是最终要寻找的目标点A;S4:将结点n的所有后继结点展开形成直接关联子结点,判断子结点是否在CLOSE表中,如果否,则将子结点放入OPEN表;S5:把已经判断的结点n放入CLOSE表,同时采用以下公式计算结点n的每一个后继结点的估价值f′(n);f′(n)=g′(n)+h′(n);其中,f′(n)是估价函数,g′(n)是起始结点到结点n的最短路径值,h′(n)是结点n到目标的最短路经的启发值;S6:将OPEN表按估价值f′(x)进行堆排序,将估价值f′(x)最小的结点放在OPEN表的表头,返回步骤S2重复循环。
【技术特征摘要】
1.基于二叉堆节点排序的A星寻路方法,其特征在于:包括以下步骤: 51:初始化OPEN表、CLOSE表和目标点A,将起始结点S放入OPEN表,CLOSE表置空; 52:判断OPEN表是否为空,如果否,则从OPEN表的表头取一个结点η ;如果是,则结束算法过程; 53:判断结点η是否为目标解Α,如果是,则结束算法,如果否,则转入步骤S4 ;所述目标解是最终要寻找的目标点A ; 54:将结点η的所有后继结点展开形成直接关联子结点,判断子结点是否在CLOSE表中,如果否,则将子结点放入OPEN表; 55:把已经判断的结点η放入CLOSE表,同时采用以下公式计算结点η的每一个后继结点的估价值f' (η); f' (n) = g' (rO+h' (η); 其中,Γ (η)是估价函数,g' (η)是起始结点到结点η的最短路径值,h' (η)是结点η到目标的最短路经的启发值; 56:将OPEN表按估价值f, (x)进行堆排序,将估价值Γ (x)最小的结点放在OPEN表的表头,返回步骤S2重复循环。2.根据权利要求1所述的基于二叉堆节点排序的A星寻路方法,其特征在于:所述OPEN表,用于存储欲遍历的下个节点;所述CLOSE表,用于存储已经找到的路径。3.根据权利要求1所述的基于二叉堆节点排序的A星寻路方法,其特征在于:所述堆排序采用二叉堆进行排序; 所述二叉堆是通过以下方式进行的: 首先获取OPEN表中节点的估价值f, (X),将估价值f, (X)最小的节点放置在堆顶端; 然后从剩余的节点中选择出估价值最小和次小的节点作为上一个节点的两个子节占.最后分别重复为两个子节点选择出估价值最小和次小的节点作为上一个节点的两个子节点;直到将所有OPEN表中节点排列完成。4.根据权利要求1所述的基于二叉堆节点排序的A星寻路方法,其特征在于:所述堆排序采用二叉堆进行排序;所述二叉堆是通过以下方式进行的: 首先获取OPEN表中节点的估价值Γ (X),将估价值Γ (X)最小的节点存储在一维数组的第一个元素存储地址中;然后将剩余的节点中的估价值f, (x)最小的节点存储在一维数组的第二个元素存储地址中,最后直到完成OPEN表中所有节点的排序。5.基于二叉堆节点排序的A星寻路系统,其特征在于:包括初始化模块、OPEN表判断模块、结点判断模块、关联子结点模块、结点估价值计算模块、...
【专利技术属性】
技术研发人员:熊仕勇,林金朝,周敏,潘豪,田航,李沁翰,唐浩,张喜平,聂婧,谭世雨,李杨,
申请(专利权)人:重庆邮电大学,
类型:发明
国别省市:重庆;85
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。