Python 資料結構與演算法——圖出度和入度的計算
阿新 • • 發佈:2019-01-25
如果以鄰接矩陣(元素為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}