最短路径 A*算法 应用堆优化

本文介绍了A*算法的基本原理,并探讨了如何通过使用堆数据结构进行优化,以提高寻找最短路径的效率。作者分享了自己在ACM比赛中应用A*算法的经验,以及如何使用堆作为优先队列,维护F值最小的节点,同时通过哈希图快速判断节点是否存在,从而减少时间复杂度。最后,作者给出了简单的二维平面图示例和代码片段。
摘要由CSDN通过智能技术生成

!!(5月27日)发现一个很牛的东东,可以加深理解A* http://qiao.github.io/PathFinding.js/visual/ 


去年的这个时候和同学一起玩code vs asia的比赛学会了A*算法

当初在数据结构算法什么都不懂的情况下,我们能写出A*算法已经感觉非常满足了

当初用java进行实现的,那个时候脑袋里就只想着能实现就好,于是那个神奇的A*就被我们迷迷糊糊的写出来了

下面就想着高兴呢,也没仔细想过整体的流程,那里可以有优化的地方。虽然整体实现了,但是细节方面简直是令人发指

时隔一年,玩acm再次碰到了那个相似的使用A*算法的情况。于是凭借着我寥寥无几的数据结构知识外加蹩脚的c,c++语言使用

写出了一个自我感觉比以前java实现的优化了那么一点点的A*算法

接下来正题:

如果你清楚A*算法但是不知道怎么实现,我这里可能稍微给你一点帮助

如果你不清楚A*算法,可以先去学一下,网络上有很多比较好的文章,这里我就不多做讲解了


A*堆优化方式:A*算法利用了一个估价函数,计算图上节点的时候,对节点进行了整体的估价

                          然后选出最优的节点进行访问,以此类推...

既然是选择最优的节点,那么我们就可以实现一个优先队列。来方便我们取出最优的节点。所以使用堆就成了我们优化的不二选择

把能访问的节点加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值