【问题标题】:'Squaring' graph in networkxnetworkx中的“平方”图
【发布时间】:2017-04-19 04:57:26
【问题描述】:

假设我有一个带有节点 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时,需要很长时间才能运行(可能是由于错误?)

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

【问题讨论】:

  • "但是现在我用的是networkX,当我尝试获取G^2时,运行需要很长时间(可能是bug?)":请提供minimal reproducible example

标签: python graph networkx


【解决方案1】:

您是在谈论给定图表的Graph power 吗?在这种情况下,您可以使用来自NetworkXpower 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 和任何其他边之间的边。

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多