1

我正在尝试从论文中重现算法 5:http: //vlado.fmf.uni-lj.si/pub/networks/doc/ms/rndgen.pdf

我的代码如下:

import random
import numpy as np
from random import randrange
from random import randint
from networkx import empty_graph
def fast_generate_scale_free(n, d):
  #input: number of vertices: n, int
  #minimum degree d, int
  #output: scale-free multigraph 


  G=empty_graph(n)
  M=np.zeros(2 *n *d)
  if d >=1:
    for v in range(0,n):
      for i in range(0, d):
        v= M[int(2*(v*d+i))]
        #draw r uniformly at random
        r=randint(0, 2*(v*d+i))
      
       
        M[int(2*(v*d+i)+1)]=M[r]
        
    for i in range(0, (n*d)):
    
      a=M[int(2*i)]
      b=M[int(2*i+1)]
      G.add_edge(a,b)
     
  return G

本质上,对于 n 和 d 的任何选择,我都会得到 (0,0) 的输出,我怀疑这是由我对 M 数组的初始化引起的。

我会很感激任何帮助,这纯粹是为了我自己的理解。

4

0 回答 0