在python中生成幂律度分布

2024-10-03 13:17:33 发布

您现在位置:Python中文网/ 问答频道 /正文

n为网络的大小,t为幂律指数。目标是生成一个由n个顶点组成的随机图G,其幂律度分布由t指定

有几种现有的答案:(1)answer 1和(2)answer 2,它们都使用random.paretovariate()函数。但是,这并不能保证生成的序列是有效的度序列

我还检查了networkx,没有找到任何生成幂律度序列的函数。在Python中有没有实现这一点的方法


Tags: 方法函数答案answer网络networkx目标序列
1条回答
网友
1楼 · 发布于 2024-10-03 13:17:33

您可以使用networkx来实现这一点。is_graphical函数允许您确定powerlaw_sequence函数的结果是否为有效的度序列。一旦我们生成了一个有效的序列,我们就可以从中创建一个随机图


    from networkx.generators.degree_seq import random_degree_sequence_graph
    from networkx.algorithms.graphical import is_graphical
    from networkx.utils.random_sequence import powerlaw_sequence
    
    
    n, t = 10, 2
    while True:  # Continue generating sequences until one of them is graphical
        seq = sorted([int(round(d)) for d in powerlaw_sequence(n, t)], reverse=True)  # Round to nearest integer to obtain DISCRETE degree sequence
        if is_graphical(seq):
            break
    G = random_degree_sequence_graph(seq, tries=100)  # Adjust number of tries as you see fit
    print(sorted(d for _, d in G.degree()))

相关问题 更多 >