假设我有一个包含节点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
?
答案 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
和任何其他边缘之间找到优势。