1 Introduction 1
2 Fundamentals of the Analysis of Algorithm Efficiency 41
3 Brute Force 97
4 Divide-and-Conquer 121
5 Decrease-and-Conquer 155
6 Transform-and-Conquer 193
7 Space and Time Tradeoffs 245
8 Dynamic Programming 275
9 Greedy Technique 303
10 Limitations of Algorithm Power 331
11 Coping with the Limitations of Algorithm Power 367
Epilogue 409
APPENDIX A 413
Useful Formulas for the Analysis of Algorithms 413
APPENDIX B 417
Short Tutorial on Recurrence Relations 417
Bibliography 431
Hints to Exercises 439
Index 479