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
?在这种情况下,您可以使用fromNetworkX
:
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时,运行时间会很长(可能是由于错误?”):请提供一个