gpt4 book ai didi

python - 如何使用networkx生成随机网络但保持原始节点度?

转载 作者:行者123 更新时间:2023-12-01 02:16:38 28 4
gpt4 key购买 nike

我有一个网络,如何使用networkx生成随机网络但确保每个节点保留与原始网络相同的程度?我的第一个想法是获取邻接矩阵,并在矩阵的每一行中执行随机操作,但这种方式有点复杂,例如需要避免自连接(这在原始网络中是看不到的)并重新标记节点。谢谢!

最佳答案

我相信您正在寻找的是 expected_degree_graph 。它根据预期度数序列生成随机图,其中列表中的每个度数对应于一个节点。它甚至还包括一个禁止自循环的选项!

您可以使用 networkx.degree 获取学位列表。以下是如何在 networkx 2.0+ 中一起使用它们的示例(level 在 1.0 中略有不同):

import networkx as nx
from networkx.generators.degree_seq import expected_degree_graph

N,P = 3, 0.5
G = nx.generators.random_graphs.gnp_random_graph(N, P)
G2 = expected_degree_graph([deg for (_, deg) in G.degree()], selfloops=False)

请注意,使用expected_ Degree_graph不能保证每个节点都有准确的度数;顾名思义,给定每个度数的预期值,它是概率性的。如果你想要更具体的东西,你可以使用 configuration_model ,但是它不能防止平行边缘或自循环,因此您需要修剪这些边缘并自行更换边缘。

关于python - 如何使用networkx生成随机网络但保持原始节点度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321963/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com