用差分启发式让 A* 寻路快十倍

Improving Heuristics for A* Pathfinding

优化 A* 寻路时,大家常盯着优先队列或地图结构,却忽略了启发式函数。其实,利用三角形不等式,通过预计算多个 Landmark 到各节点的距离,可以构建更精准的差分启发式。这种方法无需修改 A* 核心代码,只需在启发式函数中取最大值,就能大幅减少搜索节点。文章以 Dragon Age 和 Cogmind 的地图为例,展示了如何通过合理放置 Landmark 显著提升寻路效率,让算法在复杂地图中也能快速找到最优路径。

我们通常关注优先队列或地图表示来优化 A*,却经常忽略了改进启发式函数。
  1. simonw

    我在 2007 年第一次了解到这项技术,然后在 2015 年试图将其写成文章。但我意识到自己理解得还不够透彻,无法清晰地解释它。我在 2016、2018、2019、2022、2024 和 2026 年断断续续地研究过它。我多次放弃并重新开始撰写这个页面。到了 2026 年,我认为自己已经理解得足够深入,可以写出这篇页面了。

    太棒了。

  2. dested

    看到 redblobgames,我就点进来了

  3. LPisGood

    通常我不会特意指出拼写错误,但这一处让人很难直观感受到潜在改进的幅度:

    > A* 需要探索的节点数量从 12693 减少到了 12693

同日更多故事

2026-08-09