Python ';平方';networkx中的图

Python ';平方';networkx中的图,python,graph,networkx,Python,Graph,Networkx,假设我有一个带有节点a,b,c和边(a,b)的图G。G^2将具有节点(a,a)、(a,b)、(b,b)、(a,c),以及边((a,a)、(a,b)),((a,b)、(b,b)),等等。节点对是对称的,因此(a,b)=(b,a) 当我在python中将G^2实现为一个邻接列表(使用字典)时,从G获取G^2并不需要很长时间。但现在我使用的是NetworkX,当我试图获得G^2时,运行起来需要很长时间(可能是因为一个bug?) 因此,除了编写我自己的代码之外,NetworkX中是否有内置函数或与之相关

假设我有一个带有节点
a,b,c
和边
(a,b)
的图
G
。G^2将具有节点
(a,a)、(a,b)、(b,b)、(a,c)
,以及边
((a,a)、(a,b)),((a,b)、(b,b))
,等等。节点对是对称的,因此
(a,b)=(b,a)

当我在python中将
G^2
实现为一个邻接列表(使用字典)时,从
G
获取
G^2
并不需要很长时间。但现在我使用的是
NetworkX
,当我试图获得
G^2
时,运行起来需要很长时间(可能是因为一个bug?)

因此,除了编写我自己的代码之外,NetworkX中是否有内置函数或与之相关的库以上述方式构造
G^2
?在这种情况下,您可以使用from
NetworkX

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
和任何其他边之间的边。

“但现在我使用的是networkX,当我尝试获得G^2时,运行时间会很长(可能是由于错误?”):请提供一个