邻接列表indegree

时间:2017-02-20 09:39:57

标签: graph clrs

我正在解决这个CLRS问题,该问题要求找出图G(V,E)的每个顶点的不确定性。我发现解决方案是O(|E|),因为我们只需扫描所有边来找出所有顶点的度数。

但我在网上发现的大部分解决方案都是O(|V|+|E|)。怎么会?顶点如何计算所花费的时间?

1 个答案:

答案 0 :(得分:0)

如果我们假设有向图的实现使用了顶点对象,并且每个顶点都有一个相关的后继列表而没有其他数据结构,那么就不可能直接迭代边。

如果连接了有向图,则每个椎骨具有至少一个相关边缘。这意味着通过顶点迭代对边进行迭代需要O(|E|)时间 - 顶点上的迭代不会增加运行时间,而运行时间由边数决定。

如果有向图未连接,则顶点上的迭代不一定由边数决定;甚至必须处理孤立的顶点,只是为了发现它们没有相关的输出弧,这可以在O(|V|+|E|)时间内完成。

总之,O(|V|+|E|)的运行时界限在任何一种情况下都是正确的;但是,对于连接的有向图(或允许直接迭代边缘而不管顶点数量的实现),可以获得O(|E|)的更紧密的运行时限制。

相关问题