A*算法介绍

不得不叹服,强大算法背后,都是简单得不能再简单的逻辑。普林斯顿的算法课程作业里,要让用A*算法。什么都没接触到过,看到后有种想哭的感觉!于是网上查阅资料,渐渐的明白了怎么回事。

通过对A*算法的学习的个人感悟:计算一个代价函数,评估每一步的代价,并找到代价最小的方向。最终得到的解可能不是最优,但每一步都是最佳的策略,总是会非常接近最优解。即常见寻优算法中,全局最优和局部最优之间的抉择问题。

有的文章写得很透彻,看一遍就能让你理解——今后继续向着这个方向去努力,不光自己懂了,还能让其他人明白。


A*算法,又称为启发式搜索。

假设情况如下有一个当前状态S,期望的目标状态D。我们要做的就是找到从S->D的最佳路径。那么如何破案呢?

搜索策略简单得不能再简单,分为两步走:

  1. 判断从S迈出一步的代价,记为G
  2. 从S的某部位到D需要直接步数,记为H

计算并存储各个方向上的F=G+H值,找到F最小的即可。其中当H=0时,为Dijkstra算法(权值为正);

具体计算G和H的方法有很多种。其中,计算H的常见的评估函数有——欧几里得距离曼哈顿距离切比雪夫距离等;

A*算法固然强大,但有一定的约束条件,一种具有F=G+H策略的启发式算法能成为A*算法的充分条件是:
      1、搜索树上存在着从起始点到终了点的最优路径。
      2、问题域是有限的。
      3、所有结点的子结点的搜索代价值>0。
      4、H(n)=<H*(n) (H*(n)为实际问题的代价值)。


 

image001.jpg

 从图中绿点A,到红点B的最优路径搜索就可以使用A*算法。——>见参考的CSDN

参考自:

1. A星算法详解(个人认为最详细,最通俗易懂的一个版本)

2. A*搜索算法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值