A*算法面试回答

A* 是一种常用的寻路算法,它结合了 Dijkstra 的实际代价和启发式估价,通过不断选择 F 值最小的节点来寻找从起点到终点的路径。

它主要有三个代价:

  • G:从起点走到当前节点的实际代价
  • H:当前节点到终点的估算代价
  • F = G + H

算法会把待处理的节点放到 Open List 中,每次取 F 值最小的节点作为当前节点,然后检查它的邻居节点,更新邻居的 G、H、F,并记录它的父节点。

当终点被找到后,通过不断回溯父节点,就可以得到最终路径。

A* 的核心就是通过 H 值对搜索方向进行引导,在保证一定条件下找到最短路径的同时,比单纯的 Dijkstra 搜索范围更小。

上一篇