






















A*(A-Star)算法是一种静态路网中求解最短路径的搜索方法, 本文记录相关内容。

A*算法是一个“搜索算法”,目的是在一个图上“求解最短路径”,实质上是 Dijsktra 的升级版,加入了启发式搜索,从而减少搜索范围,提高效率。
通过评估函数 $f(n) = g(n) + h(n)$ 指导 搜索方向,其中:
注意: 如果启发式函数 $h(n)$ 不满足可采纳性,
A*可能无法找到最优解。另外,如果 $h(n)$ 是一致的(也就是满足三角不等式),那么A*算法在扩展节点时一旦找到目标节点就可以立即停止,因为此时的路径已经是最优的了。否则可能需要继续检查以确保最优性。
A* 能找到最短路径。对于网格形式的图,有以下这些启发函数可以使用:
若图形中只允许朝上下左右四个方向移动,使用曼哈顿距离:
$$
d=|x_1-x_2|+|y_1-y_2|
$$
若图形中允许朝八个方向移动,使用对角距离:
$$
d= max(|x_1-x_2|,|y_1-y_2|)
$$
若图形中允许朝任何方向移动:使用欧几里得距离:
$$ d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} $$
文章链接:
https://www.zywvvd.com/notes/study/algorithm/graph/astar/astar/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。