设估价函数
F
(
x
)
=
G
(
x
)
+
H
(
x
)
F(x)=G(x)+H(x)
F(x)=G(x)+H(x),其中
G
(
x
)
G(x)
G(x)为起点到
x
x
x点已移动的实际距离,
H
(
x
)
H(x)
H(x)为
x
x
x点到重点至少需要移动的估算代价(后面详细介绍),则
F
(
x
)
F(x)
F(x)表示总距离。
每次从
Q
Q
Q中取出
F
F
F值最小的点,进行增广,
再算出走到的点的
F
F
F值,加入
Q
Q
Q中。
这样当第一次走到终点是,终点的
G
G
G值则为最短路。.
实际应用
很显然,实现最短路是不需要用A*这样的搜索算法的(可以用SPFA,dijkstra等)
所以,最短路只是相当于一个模型,用于介绍A*算法, 更便于理解。
一般用于搜索中,通过若干次操作使状态
S
S
S变成目标状态
T
T
T,求最小操作数,
G
(
x
)
G(x)
G(x)表示到当前状态的实际操作数,
H
(
x
)
H(x)
H(x)是到目标状态的估算代价,因为我们还没有到达目标状态,不知道其实际代价,只能通过估计,
然后找到
F
(
x
)
=
G
(
x
)
+
H
(
x
)
F(x)=G(x)+H(x)
F(x)=G(x)+H(x)最小,即估算出来的总代价最小的状态进行转移,一定程度上能够优化普通的搜索。
F
(
x
)
F(x)
F(x)在
G
(
x
)
G(x)
G(x)一定时,或多或少会受到
H
(
x
)
H(x)
H(x)的影响,所以
H
(
x
)
H(x)
H(x)会影响到每次的操作的优先顺序,不会像普通的搜索一样按部就班的来。