!!(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*算法利用了一个估价函数,计算图上节点的时候,对节点进行了整体的估价
然后选出最优的节点进行访问,以此类推...
既然是选择最优的节点,那么我们就可以实现一个优先队列。来方便我们取出最优的节点。所以使用堆就成了我们优化的不二选择
把能访问的节点加