2017-04-19 17 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)网络x中的“平方”图表

当我在Python中使用G^2作为邻接列表(使用字典)时,从G获取G^2并不需要很长时间。但现在我使用NetworkX,当我试图获得G^2,它需要很长的时间来运行(可能是由于一个错误?)

因此,而不是写我自己的代码,有一个内置功能NetworkX或与之相关的库以上述方式构建G^2

+0

“但现在我正在使用networkX,当我尝试获取G^2时,需要很长时间才能运行(可能是由于错误?)”:请提供一个[MCVE] – Joel

回答

1

您是否在讨论给定图的Graph power?在这种情况下,你可以使用一个power functionNetworkX

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')] 

注意,此方法将无法连接未连接的边缘,所以在上面的代码,如果你不加“一”和“c”之间的边缘,你将不会得到c和任何onther边缘之间的边缘。