# Graph enumeration

The complete list of all free trees on 2,3,4 labeled vertices: ${\displaystyle 2^{2-2}=1}$ tree with 2 vertices, ${\displaystyle 3^{3-2}=3}$ trees with 3 vertices and ${\displaystyle 4^{4-2}=16}$ trees with 4 vertices.

In combinatorics, an area of mathematics, graph enumeration describes a class of combinatorial enumeration problems in which one must count undirected or directed graphs of certain types, typically as a function of the number of vertices of the graph.[1] The pioneers in this area of mathematics were Pólya,[2] Cayley [3] and Redfield.[4]

In some graphical enumeration problems, the vertices of the graph are considered to be labeled in such a way as to be distinguishable from each other, while in other problems any permutation of the vertices is considered to form the same graph. In general, labeled problems tend to be easier to solve than unlabeled problems.[5] As with combinatorial enumeration more generally, the Pólya enumeration theorem is an important tool for dealing with symmetries such as this.

Some important results in this area include the following.

• The number of labeled n-vertex undirected graphs is 2n(n − 1)/2.[6]
• The number of labeled n-vertex directed graphs is 2n(n − 1).[7]
• The number Cn of connected labeled n-vertex undirected graphs satisfies the recurrence relation[8]
${\displaystyle C_{n}=2^{n \choose 2}-{\frac {1}{n}}\sum _{k=1}^{n-1}k{n \choose k}2^{n-k \choose 2}C_{k}.}$
from which one may easily calculate, for n = 1, 2, 3, ..., that the values for Cn are
1, 1, 4, 38, 728, 26704, 1866256, ...(sequence A001187 in OEIS)
${\displaystyle 2^{n-4}+2^{\lfloor (n-4)/2\rfloor }.}$

## Enumerating Graphs on A Degree Sequence

Given a degree sequence d one can enumerate all the graphs with degree sequence d using an algorithm. One such algorithm given by Blitzstein and Diaconis [10] is as follows;

INPUT: a graphical sequence d=(d1d2, ..., dn).

1. Let E be an empty list of edges.
2. If d = 0, terminate with output E.
3. Choose the least i with di a minimal positive entry.
4. Compute the candidate list J={j≠i : {i,j} ∉ E and (d1d2, ...,di − 1,..., dj − 1, ..., dn)  is graphical.}
5. Pick j ∈ J with probability proportional to its degree in d.
6. Add edge {i,j} to E and update d to (d1d2, ...,di − 1,..., dj − 1, ..., dn
7. Repeat steps 4-6 until the degree of i is 0.

OUTPUT: E

This algorithm generates a random graph with the given degree sequence. Running the algorithm repeatedly will generate all graphs with degree sequence d.

## References

1. {{#invoke:citation/CS1|citation |CitationClass=book }}
2. Kombinatorische Anzahlbestimmungen für Gruppen, Graphen und chemische Verbindungen. Acta Math. 68 (1937), 145-254