形式陈述
有向图
直觉
把所有“必须先于”的局部约束扩展成一条总执行顺序;无环保证总能找到当前没有未完成前驱的任务。
例子与边界
课程先修关系、构建依赖和任务 DAG 都可拓扑排序。没有边的图有
推论与应用
拓扑序用于依赖调度、动态规划、编译构建和偏序线性扩张。Kahn 算法还可同时检测环,并可用优先队列选择字典序最小的合法顺序。
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Ch. 20, depth-first search and topological sorting。
- Jon Kleinberg and Éva Tardos, Algorithm Design, Pearson, 2005,Ch. 3, DAGs and topological order。