**
Topological ordering in DAG (有向无环图的拓扑排序问题)
- 前言
- 拓扑排序有啥用
- 拓扑排序实现
- 通过不断寻找那些没有income edge的节点来实现
- 通过排序DFS深度优先算法每个节点的完成时间来实现
(一)前言
最近学算法学到了有向无环图的拓扑排序,即Topological ordering in directed acyclic graph,留下一点笔记加深理解。
(二)拓扑排序有啥用
首先,我们先说说啥叫拓扑排序。以下是维基百科的说法。
In computer science, a topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge uv from vertex u to vertex v, u comes before v in the ordering.
简言之,排序过的结果里出现的每条edge的父节点都需要在子节点之前出现。
假设我们手上有一堆任务要做,但是做每个任务之前都可能有一些前置任务,我们必须要完成一个任务的前置任务才可以完成这个任务。大学里我们在选课的时候也会遇到类似的问题,如果你前面线性代数忘了选,到了后边想要选一些计算机课的时候就凉凉了。这个时候我们或许可以借助一下拓扑排序帮你做一下选课的参考,搞清楚到底需要上哪些课才能满足我们想上的课的前置要