Trick(七)——list of lists 行和、列和的计算
如果以邻接矩阵(元素为0/1(true/false))的形式表示图结构,则各个顶点的出度:各行的行和,各个顶点的入度:各列的列和。
考虑如下的图结构:
使用邻接集的字典表示法对该图结构做如下表示:
G = {
'a':set('bcdef'),
'b':set('ce'),
'c':set('d'),
'd':set('e'),
'e':set('f'),
'f':set('cgh'),
'g':set('fh'),
'h':set('fh')
}
每一个顶点的出度,只需计算每一个顶点对应的集合的大小即可;
每一个顶点的入度,我们要统计其在右侧的集合中出现的次数。
out_degrees = dict((u, 0) for u in G)
in_degrees = dict((u, 0) for u in G)
for u in G:
out_degrees[u] = len(G[u])
for u in G:
for v in G[u]:
in_degrees[v] += 1
结果:
{'c': 1, 'f': 3, 'h': 2, 'b': 2, 'a': 5, 'e': 1, 'd': 1, 'g': 2}
{'c': 3, 'f': 4, 'h': 3, 'b': 1, 'a': 0, 'e': 3, 'd': 2, 'g': 1}