最短路径三件套:BFS、Dijkstra、A* 工程实战 ACERS 解析

副标题 / 摘要 最短路径不是一道题,而是一组“按图条件选算法”的工程能力。本文按 ACERS 结构拆解 BFS(无权)/ Dijkstra(非负权)/ A(启发式)*,并给出你在关系图、推荐链路、路径解释里真正会用到的优化模板。 预计阅读时长:14~18 分钟 标签:图论、最短路径、BFS、Dijkstra、A* SEO 关键词:最短路径, BFS, Dijkstra, A*, 双向搜索, 多源 BFS 元描述:最短路径三件套工程指南:算法边界、复杂度、可运行代码、优化策略与实战场景。 目标读者 正在补图算法基础,希望形成可复用工程模板的学习者 做社交关系链路、推荐路径、图查询解释的后端/算法工程师 对 BFS、Dijkstra、A* 都“知道名字”,但选型和优化还不稳定的开发者 背景 / 动机 最短路径问题常见于: 社交网络里的最短关系链路(几跳可达) 推荐系统里的最小代价路径(多目标折中) 可解释系统里的“为什么推荐给你”路径展示 工程里最容易犯的错误是“只会一个算法硬套全部场景”: 用 BFS 跑加权图,结果错但不报错 用 Dijkstra 跑负权边,得到不可靠结果 用 A* 但启发函数不合格,性能退化成 Dijkstra 本质上,最短路径应先做 图条件分类,再做算法选型。 核心概念 算法 适用图 最优性条件 典型复杂度 关键词 BFS 无权图 / 等权图 按层首次到达即最短边数 O(V+E) queue, level Dijkstra 非负权图 堆顶弹出的节点距离已最优 O((V+E)logV) relaxation, min-heap A* 非负权图 + 启发式 h(n) 可采纳(不高估) 最坏同 Dijkstra,平均更快 f=g+h 关键公式: ...

2026年2月9日 · 10 分钟 · map[name:Jeanphilo]