A* 是一种常用的寻路算法,它结合了 Dijkstra 的实际代价和启发式估价,通过不断选择 F 值最小的节点来寻找从起点到终点的路径。
它主要有三个代价:
G:从起点走到当前节点的实际代价H:当前节点到终点的估算代价F = G + H
算法会把待处理的节点放到 Open List 中,每次取 F 值最小的节点作为当前节点,然后检查它的邻居节点,更新邻居的 G、H、F,并记录它的父节点。
当终点被找到后,通过不断回溯父节点,就可以得到最终路径。
A* 的核心就是通过 H 值对搜索方向进行引导,在保证一定条件下找到最短路径的同时,比单纯的 Dijkstra 搜索范围更小。