我该如何优化这个伪代码

时间:2017-12-08 19:45:05

标签: python matrix optimization networkx

我是python中的新用户...我知道这个问题非常原始,但我的项目有很多集合,我需要有效和快速的代码

我想生成一个if条件的矩阵。 例如:           M =矩阵(m [i,j]如果条件1和条件2和......)

如何优化以下伪代码?

import networkx as nx
import numpy as np
#G=nx.graph()
#G.neighbors(node)
def seidel_matrix(G):
    n=nx.number_of_nodes(G)
    x=np.zeros((n,n))
    for i in range(n):
        for j in range(n):
            if i==j:
                x[i][j]=0
            elif i in G.neighbors(j):
                x[i][j]=-1
            else:
                x[i][j]=1
    return x

1 个答案:

答案 0 :(得分:0)

可能有多种方法可以做到这一点。现在,您正在遍历每个可能的边缘。如果有很多非边缘,这是一个糟糕的选择。绕过实际存在的每个边缘会更快。

x = np.ones((n,n))  #default entry is 1.
for u, v in G.edges():   #get edges right
    x[u][v] = -1
    x[v][u] = -1 #assuming undirected network
for u in G.nodes():  #get diagonal right.
    x[u][u] = 0

请注意,这假设节点标记为01,...,n-1