This book shows how runtime behavior can be analyzed in a rigorous way & for combinatorial optimization in particular. It presents well-known problems such as minimum spanning trees, shortest paths, maximum matching, & covering & scheduling problems.