有向图的邻接表表示

时间:2013-08-06 03:59:18

标签: algorithm graph adjacency-list

给定有向图的邻接表列表,需要多长时间 计算每个顶点的出度?计算时间需要多长时间 在度?

由于

6 个答案:

答案 0 :(得分:5)

有向图的邻接列表表示:

每个顶点的出度

  1. 顶点u的图形出度等于Adj [u]的长度。

  2. Adj中所有邻接列表的长度总和为| E |。

  3. 因此,计算每个顶点出度的时间是Θ(V + E)

  4. 每个顶点的入度

    1. 顶点u的入度等于它在Adj中所有列表中出现的次数。

    2. 如果我们搜索每个顶点的所有列表,计算每个顶点的入度的时间是Θ(VE)

    3. 或者,我们可以分配一个大小为| V |的数组T.并将其条目初始化为零。

    4. 我们只需要在Adj中扫描一次列表,当我们在列表中看到'u'时递增T [u]。

    5. T中的值将是每个顶点的in-degrees。

    6. 这可以在Θ(V + E)时间内完成,Θ(V)额外存储。

答案 1 :(得分:3)

两者都是O(m + n),其中m是边数,n是顶点数。

启动一组计数器,每个顶点一个,一个用于度数,一个用于外度。

扫描边缘。对于每个边的外顶点,将一个加到该顶点的外度计数器中。对于每个边的顶点,将一个加到该顶点的度数计数器中。这是O(m)操作。

输出每个顶点的out-degree和in-degree计数器,O(n)

这就是你得到的O(m + n)

答案 2 :(得分:1)

因为,它是一个有向图,只给出了邻接表。

计算出度数的时间是theta(M + N),其中M是顶点数,N是边数。

对于任意节点数的计数,您必须计算所有其他(其余顶点)邻接列表中该节点的出现次数。所以,需要theta(MN)。

但是,如果您维护一个大小为M的数组,那么您可以使用theta(M)的额外空间存储来计算theta(M + N)中的in-degree

答案 3 :(得分:1)

每个out-degree

vertex:theta(E) 每个in-degree

vertex:O(E)

E是图表的边数

答案 4 :(得分:-1)

对于具有m个顶点和n个边的图,计算入度和出度都需要θ(m + n)。它是theta(m + n)而不是O(m + n)的原因是因为无论图形是什么,它都必须遍历每个顶点m和每个边缘n。

答案 5 :(得分:-2)

给定有向图的邻接列表表示Adj,顶点u的出度等于Adj [u]的长度, 并且Adj中所有邻接列表的长度之和为| E |。因此,计算每个顶点的出度的时间是Θ(| V | + | E |)。

顶点u的入度等于它在Adj中所有列表中出现的次数。如果我们搜索每个列表的所有列表 顶点,计算每个顶点的入度的时间是Θ(| V |。| E |)。

(或者,我们可以分配一个大小为| V |的数组T并将其条目初始化为零。然后我们只需要扫描列表中的 调整一次,当我们在列表中看到你时,递增T [u]。 T中的值将是每个顶点的in-degrees。这可以 使用Θ(| V |)附加存储在Θ(| V | + | E |)时间内完成。)