计算每个节点的邻居度的总和?

时间:2013-11-01 03:33:27

标签: algorithm graph pseudocode

对于无向图中的每个节点u,让twodegree [u]为u的邻居的度数之和。展示如何在线性时间内计算整个twodegree [。]值数组,给出邻接列表格式的图形。

这是解决方案

for all u ∈  V :
  degree[u] = 0
  for all (u; w) ∈  E:
    degree[u] = degree[u] + 1
for all u ∈  V :
  twodegree[u] = 0
  for all (u; w) ∈  E:
    twodegree[u] = twodegree[u] + degree[w]

有人可以解释[u]在这种情况下的程度,以及twodegree [u] = twodegree [u] + degree [w]应该是u的邻居程度的总和吗?

2 个答案:

答案 0 :(得分:2)

此处,degree[u]是节点u的度数(即与其相邻的节点数)。你可以看到这是由第一个循环计算出来的,它循环遍历图中的所有边,并为图中的每个边增加degree[u]

然后,第二个循环遍历图中的每个节点,并计算其所有邻居的度数之和。它使用degree[u]预先计算的事实,以便在O(m + n)时间内运行。

希望这有帮助!

答案 1 :(得分:0)

除了@templatetypedef所说的以外,语句twodegree[u] = twodegree[u] + degree[w]只是跟踪u的二次度,同时它迭代地(或累加地)增加其邻居(临时存储)的度数。在w