2017-12-08 9 views
-2

を最適化することができます...私は行列を生成したい私はその質問には非常に原始的な知っているが、私のプロジェクトは、セットの多くを持っていると私は効果的かつ迅速なコードはどのように私はPythonで新しいユーザー午前、この擬似コード

が必要条件の場合。例えば : 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 
+2

Gはあなたのケースであるか、十分な情報にコードを追加してください? G.neighborsは何をしていますか? – Gahan

+0

希望する出力は行列の対角線上で0、辺がない場合は+1、存在する場合は-1が表示されます。あれは正しいですか? – Joel

+0

Gahan私はちょうど私の質問を編集して申し訳ありません。はい私の欲望はのように見える –

答えて

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

関連する問題