2011-07-21 17 views
3

Python用にigraphを使用して、無次元の無向グラフを読み取る最良の方法を知りたいと思います。たとえば、0が1にリンクされ、2が他のノードに接続されていないノードである単純なグラフがあるとします。以下が許可されていないので、すべての行は、エッジでなければならないので、私は、edgelist形式(Graph.Read_Edgelist(...))からそれを読むためにIGRAPHを取得できませんでした:Python用のigraphでDisconectedグラフを読む

0 1 
2 

私がしてきましたこの場合、隣接行列が私の唯一の最良の選択肢であるかどうか疑問に思っています。むしろ、私はそれを見てデータを理解することができる形式(マトリックス形式の場合は本当に難しい)です。

ありがとうございます!

答えて

1

孤立した頂点を許可するLGL形式があります(Graph.Read_LGL参照)。形式は次のようになります:

# nodeID 
nodeID2 
nodeID3 
# nodeID2 
nodeID4 
nodeID5 
nodeID 
# isolatedNode 
# nodeID5 

私はあなたが基本的な考えを得ると思います。ハッシュマークで始まる行は、新しいノードが定義されていることを示します。この後、行は、定義されたばかりのノードの近傍を指定します。隔離されたノードが必要な場合は、その行にハッシュマークが付加されたノードIDを指定し、次のノードに進みます。

LGL形式の詳細については、hereを参照してください。

igraphもサポートするGML formatは、かなり読みやすい形式です。

+0

私は次のような問題があります:私は2つの異なるグラフでいくつかの計算をしていますが、グラフを読んだ後、igraphはノードのIDを再ラベル付けします。 ids。そのため、たとえば、あるグラフでエッジ(1,4)を取得すると、もう一方のエッジで同じエッジになるかどうかはわかりません。 igraphにノードのIDのラベルを付けないよう強制することは可能ですか? – Paulo

+0

LGLまたはNCOL形式を使用する場合、元のIDは「名前」頂点属性に保持されます。また、すべてのIDが数値で重みがない場合は、単純なエッジリスト形式を使用してください。 –

関連する問題