barabasi.game(n, power = 1, m = NULL, out.dist = NULL, out.seq = NULL,
out.pref = FALSE, zero.appeal = 1, directed = TRUE,
algorithm = c("psumtree", "psumtree-multiple", "bag"),
start.graph = NULL)
out.dist
and
out.seq
are omitted or NULL.out.seq
argument is omitted or NULL.psumtree
uses a partial prefix-sum tree to generate
the graph, this algorithm can handle any power
and
zero.appeal
values and never generates multiple edges.NULL
or an igraph graph. If a graph, then
the supplied graph is used as a starting graph for the preferential
attachment algorithm. The graph should have at least one vertex. If
a graph is supplied here and the out.seq
We start with a single vertex and no edges in the first time
step. Then we add one vertex in each time step and the new vertex
initiates some edges to old vertices. The probability that an old vertex
is chosen is given by
$$P[i] \sim k_i^\alpha+a$$
where $k_i$ is the in-degree of vertex $i$ in the
current time step (more precisely the number of adjacent edges of
$i$ which were not initiated by $i$ itself) and
$\alpha$ and $a$ are parameters given by the
power
and zero.appeal
arguments.
The number of edges initiated in a time step is given by the m
,
out.dist
and out.seq
arguments. If out.seq
is
given and not NULL then it gives the number of edges to add in a
vector, the first element is ignored, the second is the number of
edges to add in the second time step and so on. If out.seq
is
not given or null and out.dist
is given and not NULL then it is
used as a discrete distribution to generate the number of edges in
each time step. Its first element is the probability that no edges
will be added, the second is the probability that one edge is added,
etc. (out.dist
does not need to sum up to one, it normalized
automatically.) out.dist
should contain non-negative numbers
and at east one element should be positive.
If both out.seq
and out.dist
are omitted or NULL then
m
will be used, it should be a positive integer constant and
m
edges will be added in each time step.
barabasi.game
generates a directed graph by default, set
directed
to FALSE
to generate an undirected graph. Note
that even if an undirected graph is generated $k_i$ denotes
the number of adjacent edges not initiated by the vertex itself and
not the total (in- + out-) degree of the vertex, unless the
out.pref
argument is set to TRUE
.
random.graph.game
g <- barabasi.game(10000)
degree.distribution(g)
Run the code above in your browser using DataCamp Workspace