拓扑排序Topological sort
为有向无环图生成满足依赖方向的线性顺序。
- 核心约束
- 每条边的起点在终点之前。
- 适用问题
- 依赖执行、构建顺序与图验证。
- 边界与取舍
- 有环时不存在这样的顺序;顺序可能不唯一。
时间与空间#
V 为顶点数,E 为有向边数。
- 时间复杂度
- 辅助空间
- ,不含图和输出
邻接表上的入度队列法或 DFS 逆后序法;必须检测有向环。只有 DAG 存在拓扑顺序,合法顺序通常不唯一;优先队列选最小编号会增加对数因子。
工程中的应用#
1 个案例 · 附源码Git 的拓扑历史遍历记录尚未输出的子提交数量;只有相关子提交都已处理,父提交才进入可输出集合。
附源码片段 · 图处理与编译