算法可以描述如下:
给定一个有 n 个顶点和 m 条边的有向图。需要对其顶点重新编号,使每条边从编号较小的顶点指向编号较大的顶点。
换句话说,就是要找到一个顶点的排列(拓扑序)对应于图中所有边给定的顺序。
我们将使用深度优先搜索 (dfs(v))
如果我们在退出时将顶点添加到列表的开头 \(dfs(v)\) ,那么最后在此列表中,您将获得拓扑排序。
因此,所需的拓扑排序 —这是按退出时间降序排列的。