A*算法的一些总结

        看拓扑状态监控的一篇文章时发现提到了A*算法,他的目的是提取拓扑中的重要拓扑信息来进行监控,进而减少控制信息消耗。觉得这个想法不错,但具体A*算法是怎么样的呢?于是找了一下资料,觉得下面这篇带着实例讲的不错,比较直观,虽说博主也是借他山之石吧,但还是总结归纳的不错,排版也很清晰,点赞。

理解A*算法的寻路过程接

       上面的内容中A*算法用来在静态网络中求最短路径,而且上面文章中好像用的是游戏中的例子,算法的关键是估价函数f(n)=g(n)+h(n),其实想一想的话,dijkstra算法就是一个h(n)=0的特殊A*算法啊,所有点分两个集合,一个集合中是处理过的点,一个是待处理的点,不断的选取处理集合中的邻居点加入到处理集合中直到目的点被选取。

       而且广度优先搜索BFS算法好像也算是这种特殊的A*算法。

       然而A*算法与Dijkstra和贪心算法具体是什么关系呢,好的博客一篇就够:

关于寻路算法的一些思考(1):A*算法介绍

       那么估价函数到底应该如何设计?有思考1就有思考2:

关于寻路算法的一些思考(2):Heuristics 函数

       有没有讲代码实现的,思考3来了:

关于寻路算法的一些思考(3):A*算法的实现

      拓展:

关于寻路算法的一些思考(4):A* 算法的变体
关于寻路算法的一些思考(5):处理移动中的障碍物

关于寻路算法的一些思考(6):预先计算好的路径的所用空间

       说实话,思考3中关于处理OPEN和CLOSED集合的各种数据结构优劣的分析很精彩,有兴趣可以仔细看看,像伸展树和HOT队列都没听说过,涨了姿势啊!

       再说一下,A*算法在上述理解A*算法的寻路过程接游戏例子中到底是不是最优的,不信你可以请看下边这个文章,作者起名叫B*算法,其实只是作者的一厢情愿罢了,不具备学术性的流行度。

一种高效的寻路算法 - B*寻路算法

       注意,A*算法也不是只用了搜索最短路,它是状态空间搜索的一种最好优先算法。请看下面云风大牛的博客,讲的很好,是状态空间搜索中启发式算法的一种,启发式算法是为了避免穷举这种无“方向性”的搜索,采取了对搜索方向的评估策略,A*就是一种最好优先策略。

A* 算法之误区

       另外,有A*算法,那么有A算法吗?搜了一下,还真的是升级啊,大概意思就是朴素的状态空间搜索如BFS和DFS就是A算法,而加了启发式的评估就是A*算法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值