'This remarkable volume presents persuasive evidence that computer applications obey beautiful unities: within the significant classes considered, the problems that are not known to be polynomial time computable are all reducible to each other by a small number of elegant techniques. The treatment is original, comprehensive and thought provoking.' Leslie Valiant, Harvard University, Massachusetts 'This book provides a thorough study of the complexity of counting. These basic problems arise in statistical physics, optimization, algebraic combinatorics and computational complexity. The past fifteen years of research have led to a (surprisingly clean) complete characterization of their complexity in the form of a 'dichotomy theorem', whose proof is the main goal of this volume. Along the way, the authors provide detailed explanations of basic methods for studying such problems, including holographic algorithms and reductions. The book is very well written and organized, and should be useful to researchers and graduate students in the fields above.' Avi Wigderson, Institute for Advanced Study, Princeton, New Jersey 'This book would make an excellent introduction to the field of counting complexity for a mathematically literate reader with little or no background in computational complexity Many of the results included in the book are recent, and have not appeared in book form before. As such, this thorough, self-contained treatment of the subject makes a very valuable contribution to the literature.' Kitty Meeks, MathSciNet 'There's no doubt in my mind that anyone interested in computational complexity would benefit greatly by reading it. It is a remarkable and indispensable book about a deep and important topic.' Frederic Green, SIGACT News