What Can Be Computed?:A Practical Guide to the Theory of Computation
Release Finelybook 出版日期：2018-05-01
An accessible and rigorous textbook for introducing undergraduates to computer science theory
What Can Be Computed? is a uniquely accessible yet rigorous introduction to the most profound ideas at the heart of computer science. Crafted specifically for undergraduates who are studying the subject for the first time, and requiring minimal prerequisites, the book focuses on the essential fundamentals of computer science theory and features a practical approach that uses real computer programs (Python and Java) and encourages active experimentation. It is also ideal for self-study and reference.
The book covers the standard topics in the theory of computation, including Turing machines and finite automata, universal computation, nondeterminism, Turing and Karp reductions, undecidability, time-complexity classes such as P and NP, and NP-completeness, including the Cook-Levin Theorem. But the book also provides a broader view of computer science and its historical development, with discussions of Turing’s original 1936 computing machines, the connections between undecidability and Gödel’s incompleteness theorem, and Karp’s famous set of twenty-one NP-complete problems.
Throughout, the book recasts traditional computer science concepts by considering how computer programs are used to solve real problems. Standard theorems are stated and proven with full mathematical rigor, but motivation and understanding are enhanced by considering concrete implementations. The book’s examples and other content allow readers to view demonstrations of―and to experiment with―a wide selection of the topics it covers. The result is an ideal text for an introduction to the theory of computation.
An accessible and rigorous introduction to the essential fundamentals of computer science theory, written specifically for undergraduates taking introduction to the theory of computation
Features a practical, interactive approach using real computer programs (Python in the text, with forthcoming
Java alternatives online) to enhance motivation and understanding
Gives equal emphasis to computability and complexity
Includes special topics that demonstrate the profound nature of key ideas in the theory of computation
Lecture slides and Python programs are available at whatcanbecomputed.com
Part I:COMPUTABILITY THEORY
P2 WHAT IS A COMPUTER PROGRAM?
3 SOME IMPOSSIBLE PYTHON PROGRAMS
JP4 WHAT IS A COMPUTATIONAL PROBLEM?
JP5 TURING MACHINES:THE SIMPLEST COMPUTERS
IP 6 UNIVERSAL COMPUTER PROGRAMS:PROGRAMS THAT CAN DO
JP7 REDUCTIONS:HOW TO PROVE A PROBLEM IS HARD
IP 8 NONDETERMINISM:MAGIC OR REALITY?
IP 9 FINITE AUTOMATA:COMPUTING WITH LIMITED RESOURCES
Part I:COMPUTATIONAL COMPLEXITY THEORY
JP 10 COMPLEXITY THEORY:WHEN EFFICIENCY DOES MATTER
P 11 Poly AND EXpO:THE TWO MOST FUNDAMENTAL COMPLEXITY CLASSES
IP 12 PolyCheck AND NPoly:HARD PROBLEMS THAT ARE EASY TO VERIFY
P 13 POLYNOMIAL-TIME MAPPING REDUCTIONS:PROVING X IS AS EASY ASY
JP 14 NP-COMPLETENESS:MOST HARD PROBLEMS ARE EQUALLY HARD
Part lIl:ORIGINS AND APPLICATIONS
P 15 THE ORIGINAL TURING MACHINE
P 16 YOU CAN’T PROVE EVERYTHING THAT’S TRUE
JP 17 KARP’S 21 PROBLEMS
P 18 CONCLUSION:WHAT WILL BE COMPUTED?