【问题标题】:Python networkx, how do I add x amount of edges per node?Python networkx,如何为每个节点添加 x 数量的边?
【发布时间】:2021-02-17 20:43:50
【问题描述】:

我在python中有一个使用networkx的基本网络图,我想做的是为每个节点添加特定数量的边,而不是自己直接确定边。

import networkx as nx
import matplotlib.pyplot as plt

hosts = 100
nodes = list(range(1,(hosts+1)))

H=nx.Graph()
H.add_nodes_from(nodes)
nx.draw_random(H)

所以对于这个图,我想做的是指定“每个节点两条边”,然后让 python 计算结果。这可能吗?

非常感谢。

【问题讨论】:

  • 您是要在每个节点上添加两条边,使边的总数是节点数的两倍,还是要让每个节点的度数为 2?
  • 可以,但是默认不行。你必须为它编写代码。你关心哪个节点连接到哪个节点,还是你关心的都是随机的?
  • @kaya3,我希望每个节点有 2 度,没有循环。
  • 当我发表评论时,我不知道下面答案中的方法存在。我会简单地重新发明轮子,但您可以使用H = nx.configuration_model([2] * hosts) 简单地做到这一点。默认情况下,节点将从 0 开始编号,但您可以remap them。如果对所提供的答案有什么不满意的地方,您可以在那里要求进一步澄清。
  • 如果 Fony Lew's 解决了您的问题,请考虑将其标记为已接受。

标签: python networkx


【解决方案1】:

您的问题听起来像是图中配置模型的概念,它将返回具有给定度数序列的随机图。

查看networkx.generators.degree_seq.configuration_model 文档

例如一个度数为 [0, 1, 2, 3, 4] 的图:

import networkx as nx
import matplotlib.pyplot as plt

H = nx.configuration_model([i for i in range(5)])

nx.draw_random(H)

请注意,度数之和必须是偶数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多