This monograph is a slightly revised version of my PhD thesis [86],
com- pleted in the Department of Computer Science at the University of
Edin- burgh in June 1988, with an additional chapter summarising more
recent developments. Some of the material has appeared in the form of
papers [50,88]. The underlying theme of the monograph is the study of
two classical problems: counting the elements of a finite set of
combinatorial structures, and generating them uniformly at random. In
their exact form, these prob- lems appear to be intractable for many
important structures, so interest has focused on finding efficient
randomised algorithms that solve them ap- proxim ly, with a small
probability of error. For most natural structures the two problems are
intimately connected at this level of approximation, so it is natural to
study them together. At the heart of the monograph is a single
algorithmic paradigm: sim- ulate a Markov chain whose states are
combinatorial structures and which converges to a known probability
distribution over them. This technique has applications not only in
combinatorial counting and generation, but also in several other areas
such as statistical physics and combinatorial optimi- sation. The
efficiency of the technique in any application depends crucially on the
rate of convergence of the Markov chain.