1. 程式人生 > >Python 資料結構與演算法——圖出度和入度的計算

Python 資料結構與演算法——圖出度和入度的計算

如果以鄰接矩陣(元素為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}