【问题标题】:'Tiling' a graph in NetworkX在 NetworkX 中“平铺”图形
【发布时间】:2016-06-01 09:00:45
【问题描述】:

那么,如果我在 NetworkX 中创建了一个基本图表,有没有办法“平铺”它,这样它可以多次乘以图表?如果它们仍然连接,那就太好了。我已经尝试过一些像 nx.Union() 这样的 fcn,但它似乎覆盖了图表,而不是多次相乘。我找不到任何似乎可以做到这一点的 fcn,有什么想法吗?

编辑:输入将是一个最多包含 50 个节点的图形。输出将是相同的图,但迭代 n 次(这样输出图中有 n50 个节点)。但是,我希望连接原始图的迭代,因此要么覆盖一些节点(st 输出节点''n(输入边))

这有意义吗?

【问题讨论】:

  • 你能提供一个示例输入并解释输出是什么吗?我不确定你在问什么。
  • 嗨乔尔,我已经编辑了更多描述!
  • 一方面,我完全不明白你的意思。您想向现有图表添加新节点吗?要添加新边吗?

标签: python networking graph networkx


【解决方案1】:

您正在寻找的函数是 nx.disjoint_union,它可以让您添加两个图形并赋予它们不同的节点值。

 def n_disjoint_unions(G, n):
     H = nx.Graph()
     for _ in range(n):
         H = nx.disjoint_union(H, nx.copy(G))
     return H

但是,您需要指定连接这些新图表的方式。

【讨论】:

  • 我更接近了...我有 this 代表 n=3。现在,我希望所有这些都连接起来,也许它们之间有边(或共享一组节点)。有没有聪明的方法来做到这一点?我正在考虑查看循环内节点的度中心性,如果它们足够低,则将它们连接起来。
  • @jdg 您可以在原始节点中选择一个节点来连接所有副本吗?但实际上,您的目标是什么?这将有助于找出最佳选择。
  • 我的目标基本上是让网络任意大,这样我们可以测试一些连通性算法。文件需要连接并且很大的原因是我们可以运行一些速度测试,看看哪个最适合非常大的网络......我创建了一个小算法,可以找到连接度最低的节点并将它们连接到其他的,形成一个连接的网络。它似乎工作正常,但需要概括......还有其他方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多