This book is concerned with the optimization problem of maximizing the number of spanning trees of a multigraph. Since a spanning tree is a minimally connected subgraph, graphs and multigraphs having more of these are, in some sense, immune to disconnection by edge failure. We employ a matrix-theoretic approach to the calculation of the number of spanning trees. The authors envision this as a research aid that is of particular interest to graduate students or advanced undergraduate students and researchers in the area of network reliability theory. This would encompass graph theorists of all stripes, including mathematicians, computer scientists, electrical and computer engineers, and operations researchers.--