networkx中的'Squaring'图表

时间:2017-04-19 04:57:26

标签: python graph networkx

假设我有一个包含节点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)

当我在python中实现G^2作为邻接列表(使用字典)时,从G^2获取G不需要很长时间。但现在我正在使用NetworkX,当我尝试获取G^2时,运行需要很长时间(可能是由于某个错误?)

因此,不是编写自己的代码,而是在NetworkX中是否有内置函数或与之相关的库以上述方式构造G^2

1 个答案:

答案 0 :(得分: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和任何其他边缘之间找到优势。