给定有向图的邻接表列表,需要多长时间 计算每个顶点的出度?计算时间需要多长时间 在度?
由于
答案 0 :(得分:5)
有向图的邻接列表表示:
每个顶点的出度
顶点u的图形出度等于Adj [u]的长度。
Adj中所有邻接列表的长度总和为| E |。
因此,计算每个顶点出度的时间是Θ(V + E)
每个顶点的入度
顶点u的入度等于它在Adj中所有列表中出现的次数。
如果我们搜索每个顶点的所有列表,计算每个顶点的入度的时间是Θ(VE)
或者,我们可以分配一个大小为| V |的数组T.并将其条目初始化为零。
我们只需要在Adj中扫描一次列表,当我们在列表中看到'u'时递增T [u]。
T中的值将是每个顶点的in-degrees。
这可以在Θ(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 |)时间内完成。)