ABSTRACT

A bestseller in its French edition, this book is original in its construction and its success in the French market demonstrates its appeal. It is based on three principles: (1) An organization of the chapters by families of algorithms: exhaustive search, divide and conquer, etc. On the contrary, there is no chapter devoted only to a systematic exposure of, say, algorithms on strings. Some of these will be found in different chapters. (2) For each family of algorithms, an introduction is given to the mathematical principles and the issues of a rigorous design, with one or two pedagogical examples. (3) For the most part, the book details 150 problems, spanning seven families of algorithms. For each problem, a precise and progressive statement is given. More importantly, a complete solution is detailed, with respect to the design principles that have been presented; often, some classical errors are pointed out. Roughly speaking, two-thirds of the book is devoted to the detailed rational construction of the solutions.

chapter 2|22 pages

Complexity of an algorithm

chapter 3|64 pages

Specification, invariants, and iteration

chapter 4|40 pages

Reduce and conquer, recursion

chapter 5|110 pages

Generate and test

chapter 6|28 pages

Branch and bound

chapter 7|80 pages

Greedy algorithms

chapter 8|216 pages

Divide and conquer

chapter 9|160 pages

Dynamic programming