Induction and Recursion… and Reduction
In this chapter, I lay the foundations for your algorithm design skills. Algorithm design can be a hard thing to teach, because there are no clear recipes to follow. There are some foundational principles, though, and one that pops up again and again is the principle of abstraction. I’m betting you’re quite familiar with several kinds of abstraction already—most importantly, procedural (or functional) abstraction and object orientation. Both of these approaches let you isolate parts of your code and minimize the interactions between them so you can focus on a few concepts at a time.
KeywordsDirected Acyclic Graph Internal Node Inductive Step Recursive Call Sorting Algorithm
Unable to display preview. Download preview PDF.
- Manber, U. (1989). Introduction to Algorithms: A Creative Approach. Addison-Wesley.Google Scholar
- Manna, Z. (1974). Mathematical Theory of Computation. McGraw-Hill Book Company.Google Scholar
- Okasaki, C. (1999). Purely Functional Data Structures. Cambridge University Press.Google Scholar
- Pólya, G. (2009). How To Solve It: A New Aspect of Mathematical Method. Ishi Press.Google Scholar
- Rabhi, F. A. and Lapalme, G. (1999). Algorithms: A Functional Approach. Addison-Wesley.Google Scholar
- Simionato, M. (2006). The Python 2.3 method resolution order. [http://python.org/download/releases/2.3/mro]
- Skiena, S. S. (2008). The Algorithm Design Manual. Springer, second edition.Google Scholar
- Soltys, M. (2010). An Introduction to the Analysis of Algorithms. World Scientific.Google Scholar