无向图重新排序顶点

时间:2012-05-12 11:09:02

标签: python graph numpy

给定邻接矩阵和顶点的新排序我们如何在python中置换图形?这个任务有没有库?

1 个答案:

答案 0 :(得分: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,{{1}应该是xrange。)