计算无向图中度数的总和

时间:2013-11-18 02:27:32

标签: graph pseudocode

这是我的伪代码:

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

此代码尝试计算无向图中u的邻居的度数(度数 - 你所拥有的邻居的数量或其上的#的边数)之和。但是我无法理解这两个for循环可以有人请解释究竟是什么程度[u] =度[u] +1和twodegree [u] = twodegree [u] +度[w]做,(我知道它的计数学位的总和,但我只是不知道怎么样?有人可以解释一下这个算法在u和w方面是如何工作的吗?

1 个答案:

答案 0 :(得分:0)

此算法假设顶点在列表V中表示为索引。边缘在列表E中表示为元组。我认为此算法适用于基于“for all(u,w)in”的有向边。 E:”。有向边是仅沿一个方向前进的边,所以在元组(u,w)中,u将是边缘离开去w的节点。

    #first loop will calculate the number of edges directly adjacent to each vertex
    for all u in V:
      degree[u]=0  # initializes the number to 0
      for all (u,w) in E:  #find all tuples that contain u
        degree[u] = degree[u]+1 #add 1 for each edge in list
    # The second loop will calculate a slightly different metric but
    # it follows the same algorithm as the first
    for all u in V:
      twodegree[u]=0
      for all (u,w) in E:
        twodegree[u]=twodegree[u]+degree[w]

“E:中的所有(你,w)”包含一个隐含的条件,它创建一个E的子列表,它只包含以u为第一个元素的元组。