A* 算法(启发式搜索)

A* 算法

百度百科:

A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。

别称:

别称:启发式搜索
表达式: f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n)

原理

公式表示为: f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n)
其中, f ( n ) f(n) 是从初始状态经由状态 n n 到目标状态的代价估计,
g ( n ) g(n) 是在状态空间中从初始状态到状态 n n 实际代价,
h ( n ) h(n) 是从状态n到目标状态的最佳路径的估计代价。
(对于路径搜索问题,状态就是图中的节点,代价就是距离)
h ( n ) h(n) 的选取
保证找到最短路径(最优解的)条件,关键在于估价函数 f ( n ) f(n) 的选取(或者说 h ( n ) h(n) 的选取)。
我们以 d ( n ) d(n) 表达状态 n n 到目标状态的距离,那么 h ( n ) h(n) 的选取大致有如下三种情况:

  • 如果 h ( n ) < d ( n ) h(n) < d(n) 到目标状态的实际距离,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。
  • 如果 h ( n ) = d ( n ) h(n)=d(n) ,即距离估计 h ( n ) h(n) 等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的。
  • 如果 h ( n ) > d ( n ) h(n)>d(n) ,搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。

算法分类

该算法在最短路径搜索算法中分类为:
直接搜索算法:直接在实际地图上进行搜索,不经过任何预处理;
启发式算法:通过启发函数引导算法的搜索方向;
静态图搜索算法:被搜索的图的权值不随时间变化(后被证明同样可以适用于动态图的搜索。

Rp_
发布了103 篇原创文章 · 获赞 28 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41738030/article/details/100882405