1 Introduction 1
2 Fundamentals of the Analysis of Algorithm Efficiency 41
3 Brute Force and Exhaustive Search 97
4 Decrease-and-Conquer 131
5 Divide-and-Conquer 169
6 Transform-and-Conquer 201
7 Space and Time Trade-Offs 253
8 Dynamic Programming 283
9 Greedy Technique 315
10 Iterative Improvement 345
11 Limitations of Algorithm Power 387
12 Coping with the Limitations of Algorithm Power 423
Epilogue 471
APPENDIX A Useful Formulas for the Analysis of Algorithms 475
APPENDIX B Short Tutorial on Recurrence Relations 479
References 493
Hints to Exercises 503
Index 547