Topological Sort - 拓扑排序
问题
对有向图进行拓扑排序。
解法
拓扑排序是深度优先搜索的典型应用。
遍历有向图的所有顶点做DFS搜索。对任意顶点做DFS搜索,直到无法继续搜索为止,搜索到的顶点数量即为的DFS距离。将所有顶点按照其DFS距离从大到小排序,即为所有顶点的拓扑排序。一个顶点的DFS距离至少为。
对下图中的有向图进行拓扑排序:
顶点的DFS距离为,DFS搜索顺序为,如下图;
顶点的DFS距离为,DFS搜索顺序为,如下图;
顶点的DFS距离为,DFS搜索顺序为,如下图;
顶点的DFS距离为,DFS搜索顺序为;
顶点的DFS距离为,DFS搜索顺序为;
顶点的DFS距离为,DFS搜索顺序为;
顶点的DFS距离为,DFS搜索顺序为;
顶点的DFS距离为,DFS搜索顺序为;
最终得到拓扑排序。
每个顶点DFS搜索的时间复杂度为,拓扑遍历的时间复杂度为。