Induction and Recursion… and Reduction

  • Magnus Lie Hetland


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.


Directed Acyclic Graph Internal Node Inductive Step Recursive Call Sorting Algorithm 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Manber, U. (1988). Using induction to design algorithms. Communications of the ACM, 31(11):1300–1313.CrossRefGoogle Scholar
  2. Manber, U. (1989). Introduction to Algorithms: A Creative Approach. Addison-Wesley.Google Scholar
  3. Manna, Z. (1974). Mathematical Theory of Computation. McGraw-Hill Book Company.Google Scholar
  4. Okasaki, C. (1999). Purely Functional Data Structures. Cambridge University Press.Google Scholar
  5. Pólya, G. (2009). How To Solve It: A New Aspect of Mathematical Method. Ishi Press.Google Scholar
  6. Rabhi, F. A. and Lapalme, G. (1999). Algorithms: A Functional Approach. Addison-Wesley.Google Scholar
  7. Simionato, M. (2006). The Python 2.3 method resolution order. []
  8. Skiena, S. S. (2008). The Algorithm Design Manual. Springer, second edition.Google Scholar
  9. Soltys, M. (2010). An Introduction to the Analysis of Algorithms. World Scientific.Google Scholar

Copyright information

© by Magnus Lie Hetland 2010

Authors and Affiliations

  • Magnus Lie Hetland

There are no affiliations available

Personalised recommendations