在 python 中生成具有规定度分布的网络(图)
Generating a network(graph) with a prescribed degree distribution in python
我的问题是如何在 python 中使用 numpy 和 networkX(其他模块可以工作,但目前我专注于这两个)生成具有 1000 个节点和给定度分布的随机网络图,如图所示在图中,k 是边的数量,P(k) 是节点连接一定数量的边的概率。非常感谢。 degree distribution
p_k = [0, .1, .35, .25, .2, .1, .04, .01, .02, .02, .01]
k = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
这里是 100 个节点的实现。
请注意,我修改了你原来的概率总和为 1。
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
p_k = [0, .01, .35, .25, .2, .1, .04, .01, .01, .02, .01]
k = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
expected_degree_sequence = np.random.choice(
k,
100,
p = p_k
)
G = nx.configuration_model(expected_degree_sequence)
nx.draw(G)
plt.show()
我的问题是如何在 python 中使用 numpy 和 networkX(其他模块可以工作,但目前我专注于这两个)生成具有 1000 个节点和给定度分布的随机网络图,如图所示在图中,k 是边的数量,P(k) 是节点连接一定数量的边的概率。非常感谢。 degree distribution
p_k = [0, .1, .35, .25, .2, .1, .04, .01, .02, .02, .01]
k = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
这里是 100 个节点的实现。
请注意,我修改了你原来的概率总和为 1。
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
p_k = [0, .01, .35, .25, .2, .1, .04, .01, .01, .02, .01]
k = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
expected_degree_sequence = np.random.choice(
k,
100,
p = p_k
)
G = nx.configuration_model(expected_degree_sequence)
nx.draw(G)
plt.show()