This chapter discusses the complexity of a problem by thinking about the best possible algorithm, or computer program, that solves it. It shows that computational complexity theory is not about how to write better programs, but about understanding the underlying structure of different problems as well as asking fundamental questions about them. The chapter first explains problems and solutions by considering a Eulerian path and a Hamiltonian path. It then examines Euclid's algorithm, time and space, and the notion of scaling in physics. It also analyzes the distinction between polynomial functions of n and exponential ones, why this distinction is very important, and why it is so robust with respect to changes in the definition of computation. Finally, the chapter looks at the tractability and mathematical insight into a problem's structure.
Oxford Scholarship Online requires a subscription or purchase to access the full text of books within the service. Public users can however freely search the site and view the abstracts and keywords for each book and chapter.
If you think you should have access to this title, please contact your librarian.