首页 > 代码库 > A*算法的理解

A*算法的理解

A*算法是一种最短路径搜索算法,算是一种贪心算法。所谓贪心算法,即在搜索的每一步都向着当前利益最大化的方向搜索。A*算法告诉了我们一种“利益”的定义方式:

f(n) = g(n) + h(n)

这里f(n)代表最终花费,g(n)代表已经花费多少,h(n)代表还要花费多少。A*算法的搜索过程中,只要向着使得每一步的花费f(n)最少的方向搜索,最终就会得到一个最短路径。有同学可能要问了,这里的h(n)我也不知道呀,如果知道还用费劲搜索:知道了花费了多少,知道了还要花费多少,不就啥都知道了。注意这里的h(n)并不是确定的还要花费多少,而是最少还要花多少,是一个参考值。比如从北京到上海,最短距离肯定是直线距离,但我们往往不可能走直线,但这个直线距离却可以成为我们的参考值。如此,每一步我们都看一下每个搜索路径花费了多少(g(n)),每个搜索路径至少还要花费多少(h(n)),都向着总花费(f(n))最少的方向寻找,即最短搜索路径。

 

A*算法的理解