跳到主内容
快讯直播
AI智模界
AI 词典

A* 搜索:给搜索装一个方向感

A* 搜索(A* search)是一种在图中寻找从起点到目标最低成本路径的算法。它每次优先扩展“已花成本 + 预计剩余成本”最小的节点,用公式表示是 f(n)=g(n)+h(n)。

g(n) 是从起点走到节点 n 的真实代价,h(n) 是启发式函数(heuristic function),估计从 n 到目标还要多少代价。可以把它想成开车导航:g 是已经开过的里程,h 是导航估算的剩余里程;A* 不会只挑“已走最少”的路,也不会只挑“看起来离终点最近”的路,而是挑“总账最省”的路。实现上通常用优先队列,每次弹出 f 值最小的节点,直到弹出目标。

它比 BFS(广度优先搜索)和 DFS(深度优先搜索)快,关键在“有方向”。BFS 像水波一样向四周均匀扩散,能保证无权图最短,但会把大量无关区域翻一遍;DFS 一条路走到黑,内存省,却不保证最短。A* 用 h 把搜索往目标方向拉,常能少扩展很多节点。和 Dijkstra 相比,Dijkstra 可看作 h=0 的 A*;和贪心最佳优先搜索(Greedy Best-First Search)相比,贪心只看 h、不看 g,跑得快但可能错过最优解。

h 不是随便拍脑袋就行。在树搜索中,要保证最优性,h 必须“可采纳”(admissible):对任何节点都不能高估真实剩余代价。比如真实还要走 10 公里,h 可以说 8 或 10,不能说 15。高估会让算法误以为某条路已经很贵,提前放弃实际更便宜的路径。图搜索中常进一步要求一致性(consistent),即 h 的估计随边移动不会“跳变”得太离谱,这样实现更简单,通常无需反复重开节点。

对从业者,A* 的价值是:在路径规划、游戏寻路、拼图与规划问题中,用一个靠谱的估价函数把搜索空间砍小;对普通人,它像导航软件——既看已走路程,也看剩余路况,优先试最有希望的方向。启发式设计得好不好,往往决定它是“聪明地带路”还是“带偏全队”。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。