2012-05-12 25 views
0

鑑於鄰接矩陣和頂點我們如何能夠在置換蟒圖的一個新的排序?這個任務有沒有圖書館?無向圖重新排序頂點

+0

可能重複[Python的圖形庫(http://stackoverflow.com/questions/606516/python-graph-library) – talonmies

回答

3

您只需用手構建新的鄰接矩陣。 old是舊鄰接矩陣,和perm是,對於每個新頂點存儲舊的名稱,即,如果頂點j移動到頂點i然後perm[i] == j的載體。

import numpy as np 

def rearrange(old, perm): 
    n = old.shape[0] 
    new = np.zeros_like(old) 

    for x in xrange(n): 
     for y in xrange(x+1): # only need to traverse half the matrix 
      # the matrix is symmetric (because of undirectedness) 
      new[y, x] = new[x, y] = old[perm[x], perm[y]] 
    return new 

(請注意,我假設你正在存儲您的鄰接矩陣作爲一個n × n numpy的陣列密集矩陣。此外,爲Python 3.x中,xrange應該是range。)