Advances in algorithmic theory have shown that the traditionally separate areas of discrete optimization, linear programming, and nonlinear optimization are closely linked. This book offers an introduction to the whole subject. It investigates the mathematical structures and principles underlying the design of efficient algorithms.