2017-04-19 19 views
0

グラフGは、ノードがa, b, cで、エッジが(a,b)であるとします。 G^2は、ノード(a,a), (a,b), (b,b), (a,c)など、およびエッジ((a,a),(a,b)), ((a,b),(b,b))などを持つことになります。ノードペアは対称ですので、(a,b) = (b,a)です。networkxの 'Squaring'グラフ

Pythonで隣接リスト(辞書を使用)としてG^2を実装すると、をGから取得するのに時間がかかりません。しかし今ではNetworkXを使用していますが、G^2を取得しようとすると、実行に時間がかかります(おそらくバグのためでしょうか)。

自分のコードを書く代わりに、上記の方法でG^2を構築するNetworkXまたはそれに関連するライブラリ?

+0

「今はnetworkXを使用していますが、G^2を取得しようとすると(おそらくバグのために)時間がかかります」:[MCVE] – Joel

答えて

1

あなたは特定のグラフについてGraph powerについて話していますか?この場合、あなたはNetworkXからpower functionを使用することができます。

import networkx as nx 
g = nx.Graph() 
g.add_edge('a','b') 
g.add_edge('a','c') 
g_2 = nx.power(g, 2) 
g_2.nodes() 
>>>> ['a', 'c', 'b'] 
g_2.edges() 
>>> [('a', 'c'), ('a', 'b'), ('c', 'b')] 

注意をあなたが「A」と「C」の間にエッジを追加しない場合は、この方法は、上記のコードでは、ように、あなたを未接続端を接続しないことcと任意のエッジ間のエッジを取得しません。

関連する問題