This function generates a non-growing random graph with edge probabilities proportional to node fitness scores.
sample_fitness(
no.of.edges,
fitness.out,
fitness.in = NULL,
loops = FALSE,
multiple = FALSE
)
The number of edges in the generated graph.
A numeric vector containing the fitness of each vertex. For directed graphs, this specifies the out-fitness of each vertex.
If NULL
(the default), the generated graph will be
undirected. If not NULL
, then it should be a numeric vector and it
specifies the in-fitness of each vertex.
If this argument is not NULL
, then a directed graph is generated,
otherwise an undirected one.
Logical scalar, whether to allow loop edges in the graph.
Logical scalar, whether to allow multiple edges in the graph.
An igraph graph, directed or undirected.
This game generates a directed or undirected random graph where the
probability of an edge between vertices
The generation process goes as follows. We start from
It can be shown that the expected degree of each vertex will be
proportional to its fitness, although the actual, observed degree will not
be. If you need to generate a graph with an exact degree sequence, consider
sample_degseq
instead.
This model is commonly used to generate static scale-free networks. To
achieve this, you have to draw the fitness scores from the desired power-law
distribution. Alternatively, you may use sample_fitness_pl
which generates the fitnesses for you with a given exponent.
Goh K-I, Kahng B, Kim D: Universal behaviour of load distribution in scale-free networks. Phys Rev Lett 87(27):278701, 2001.
# NOT RUN {
N <- 10000
g <- sample_fitness(5*N, sample((1:50)^-2, N, replace=TRUE))
degree_distribution(g)
# }
# NOT RUN {
plot(degree_distribution(g, cumulative=TRUE), log="xy")
# }
Run the code above in your browser using DataLab