很显然,实现最短路是不需要用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)会影响到每次的操作的优先顺序,不会像普通的搜索一样按部就班的来。
也就是说,并不知道如何操作是最优的,但可以优先选择估计最优的状态进行下一步操作,使得尽可能地先操作更优的状态,使得离真实答案更加接近,达到优化时间的目的。