# static.fitness.game

##### Random graphs from vertex fitness scores

This function generates a non-growing random graph with edge probabilities proportional to node fitness scores.

- Keywords
- graphs

##### Usage

```
static.fitness.game (no.of.edges, fitness.out, fitness.in,
loops = FALSE, multiple = FALSE)
```

##### Arguments

- no.of.edges
- The number of edges in the generated graph.
- fitness.out
- A numeric vector containing the fitness of each vertex. For directed graphs, this specifies the out-fitness of each vertex.
- fitness.in
- 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 directe - loops
- Logical scalar, whether to allow loop edges in the graph.
- multiple
- Logical scalar, whether to allow multiple edges in the graph.

##### Details

This game generates a directed or undirected random graph where the
probability of an edge between vertices $i$ and $j$ depends on
the fitness scores of the two vertices involved. For undirected graphs,
each vertex has a single fitness score. For directed graphs, each
vertex has an out- and an in-fitness, and the probability of an edge
from $i$ to $j$ depends on the out-fitness of vertex $i$
and the in-fitness of vertex $j$.
The generation process goes as follows. We start from $N$
disconnected nodes (where $N$ is given by the length of the fitness
vector). Then we randomly select two vertices $i$ and $j$, with
probabilities proportional to their fitnesses. (When the generated
graph is directed, $i$ is selected according to the out-fitnesses
and $j$ is selected according to the in-fitnesses). If the
vertices are not connected yet (or if multiple edges are allowed), we
connect them; otherwise we select a new pair. This is repeated until
the desired number of links are created.
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
`degree.sequence.game`

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
`static.power.law.game`

which generates the fitnesses for
you with a given exponent.

##### Value

- An igraph graph, directed or undirected.

##### concept

Random graph model

##### References

Goh K-I, Kahng B, Kim D: Universal behaviour of load distribution
in scale-free networks. *Phys Rev Lett* 87(27):278701, 2001.

##### Examples

```
N <- 10000
g <- static.fitness.game(5*N, sample((1:50)^-2, N, replace=TRUE))
degree.distribution(g)
plot(degree.distribution(g, cumulative=TRUE), log="xy")
```

*Documentation reproduced from package igraph, version 0.6.5-2, License: GPL (>= 2)*