1. 执行摘要:通俗解读 A* 算法
想象一下,你正身处一座迷宫般的巨大城市中,比如迷雾笼罩的伦敦,你的任务是从特拉法加广场(起点)前往大英博物馆(终点)。你手中有一张地图,但要在成千上万条街道中找到那条绝对最短、最省体力的路线,并非易事。
在 1968 年之前,计算机处理这类问题通常有两种'极端'的思维方式。
1.1 '盲目地毯式搜索'(类似 Dijkstra)
这种方法非常严谨:它从起点出发,把周围每一条路都走一遍,计算走到每个路口的确切距离,然后再向外扩展。它的优点是一定能找到最短路径;缺点是效率极低——它会毫无方向感地向四面八方探索。即便终点在北边,它也会把南边的路先探个究竟,因为它不仅想找到路,还想确信没有别的路更短。
1.2 '凭直觉冲刺'(类似贪婪最佳优先)
这种方法完全相反:它只看终点在哪里,始终朝着'看起来更接近目标'的方向移动。优点是速度快;缺点是鲁莽——它可能把你带进死胡同,或者为了保持方向感而错过一条虽然稍微绕道但实际上更短的通途。你可能很快到终点,但未必是最短路线。
1.3 A*:严谨与直觉的统一
1968 年,斯坦福研究所(SRI)的三位科学家 Peter Hart、Nils Nilsson 和 Bertram Raphael 提出了 A*(A-Star)算法。它的核心秘密是给每一个路口(节点)打分,这个分数由两部分组成:
- 过去的代价 $g$:从起点到当前节点已经走了多远(实打实的成本)。
- 未来的预估 $h$:从当前节点到目标还要走多远(启发式估计,例如直线距离)。
A* 使用评价函数:
$$ f = g + h $$
它既不像 Dijkstra 那样无视方向,也不像贪婪搜索那样无视历史代价,而是优先探索那个'过去代价不大且未来看起来有希望'的节点。论文之所以经典,是因为作者不仅提出了方法,还给出严格证明:
- 若启发式 $\hat{h}$ 不高估真实剩余成本,则 A* 保证最优;
- 在相同启发信息下,A* 的扩展节点数达到一种理论意义上的'最少'(在相应条件下)。
一句话:A* 把'直觉'变成数学上可讨论、可证明、可工程化的对象。
2. 历史背景与起源:赋予机器人'直觉'
2.1 斯坦福研究所与 Shakey 机器人
理解 A* 的诞生要回到 20 世纪 60 年代中期 AI 研究前沿。斯坦福研究所(SRI,现 SRI International)的 AI 中心进行了一项雄心勃勃的计划:制造一个能够感知环境、理解指令并自主行动的移动机器人——Shakey the Robot。
Shakey 的任务并不'抽象':它要在有墙、有桌椅、有箱子的办公环境中自主导航,例如'把 3 号房间的箱子推到 5 号房间'。这意味着它必须在现实世界中规划路线、避开障碍,并尽可能高效。
当时计算资源极其匮乏,算法效率至关重要:如果机器人每走一步都要停下来计算几分钟,它就不可能'行动'。
2.2 当时的困境:数学与启发式的鸿沟
A* 诞生之前,路径规划存在明显二元对立:
- 数学派(Dijkstra、动态规划):完备且最优,但搜索缺乏导向性,计算量容易爆炸。
- 启发式派(例如 Graph Traverser):速度快但可能陷入局部最优或死胡同,不能保证最优。
2.3 融合与突破:把两种排序准则'加起来'
作者观察到:Dijkstra 相当于按 $g(n)$ 排序,启发式搜索按 $h(n)$ 排序。关键洞见是:为什么不把两者统一到同一个评价函数中?
于是有了:
$$ f(n) = g(n) + h(n) $$
这在今天看似简单,但在当时是决定性的结构统一:它将'严谨的成本累计'与'对目标的方向感'在同一个标尺下比较。
3. 形式化定义与问题建模
论文首先建立严格框架,为后续证明'可采纳性(Admissibility)'与'最优性(Optimality)'奠定基础。
3.1 图与成本结构
- 图 $G$:节点集合 $\{n_i\}$ 与有向弧集合 $\{e_{ij}\}$。
- 后继算子(Successor Operator, $\Gamma$):对节点 $n$ 应用 $\Gamma$,生成其后继节点集合及弧成本。 这反映了 AI 搜索常见特性:图通常巨大,难以显式存储,必须'随用随生成'。

