为什么DAG的拓扑排序的时间复杂度为O(V + E),而不仅仅是O(V)?

时间:2018-08-29 02:14:15

标签: graph

https://en.wikipedia.org/wiki/Topological_sorting#Depth-first_search

针对此问题的DFS解决方案具有O(V + E)时间复杂度。但是为什么不只是O(V)呢?是的,我们访问了每个顶点和每个边,但是每个边都只是通向另一个顶点,这不是额外的步骤。例如,如果我们有2个顶点,并且它们之间有一条边,那么我们访问2个顶点,周期。我们不访问3件事(2个顶点+边)。给我举一个DAG的例子,其中“ V + E”带来的访问量不仅仅是“ V”

为进一步说明,二叉树上DFS的时间复杂度为O(N),其中N是节点数。没有人说是O(N + E)。

1 个答案:

答案 0 :(得分:0)

考虑一个有 V 个顶点的有向图,将其划分为两个大小为 V / 2的组,其边缘从#1组中的每个顶点到组中的每个顶点#2。然后有 V 2 / 4条边,您需要检查所有这些边。