Python 数据结构与算法——图出度和入度的计算

来源:互联网 发布:ipad 看图软件 编辑:程序博客网 时间:2024/05/18 00:45

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}
0 0
原创粉丝点击