What is Educator Book?
What is original terminology?
What is complexity theory?
To the educator this book is intended as an upper-level undergraduate or introductory graduate text in computer science theory. It contains a mathematical treatment of the subject, designed around theorems and proofs. I have made some effort to accommodate students with little prior experience in proving theorems, though more experienced students will have an easier time. My primary goal in presenting the material has been to make it clear and interesting. In so doing, i have emphasized intuition and “the big picture” In the subject over some lower level details. For example, even though i present the method of proof by induction in chapter 0 along with other mathematical preliminaries, it doesn’t play an important role subsequently. Generally, i do not present the usual induction proofs of the correctness of various constructions concerning automata. If presented clearly, these constructions convince and do not need further argument.
An induction may confuse rather than enlighten because induction itself is a rather sophisticated technique that many find mysterious. Belaboring the obvious with copyright 2012 cengage learning. All rights reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the ebook and/or echapter(s). Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage learning reserves the right to remove additional content at any time if subsequent rights restrictions require it. Preface to the first edition xiii an induction risks teaching students that a mathematical proof is a formal manipulation instead of teaching them what is and what is not a cogent argument.
A second example occurs in parts two and three, where i describe algorithms in prose instead of pseudocode. I don’t spend much time programming turing machines (or any other formal model). Students today come with a programming background and find the church–turing thesis to be self-evident. Hence i don’t present lengthy simulations of one model by another to establish their equivalence. Besides giving extra intuition and suppressing some details, i give what might be called a classical presentation of the subject material. Most theorists will find the choice of material, terminology, and order of presentation consistent with that of other widely used textbooks.
I have introduced original terminology in only a few places, when i found the standard terminology particularly obscure or confusing. For example, i introduce the term mapping reducibility instead of many–one reducibility. Practice through solving problems is essential to learning any mathematical subject. In this book, the problems are organized into two main categories called exercises and problems. The exercises review definitions and concepts. The problems require some ingenuity. Problems marked with a star are more difficult. I have tried to make the exercises and problems interesting challenges. The first edition introduction to the theory of computation first appeared as a preliminary edition in paperback. The first edition differs from the preliminary edition in several substantial ways. The final three chapters are new: Chapter 8 on space complexity; chapter 9 on provable intractability; and chapter 10 on advanced topics in complexity theory.
Chapter 6 was expanded to include several advanced topics in computability theory. Other chapters were improved through the inclusion of additional examples and exercises. Comments from instructors and students who used the preliminary edition were helpful in polishing chapters 0–7. Of course, the errors they reported have been corrected in this edition. Chapters 6 and 10 give a survey of several more advanced topics in computability and complexity theories. They are not intended to comprise a cohesive unit in the way that the remaining chapters are. These chapters are included to allow the instructor to select optional topics that may be of interest to the serious student. The topics themselves range widely. Some, such as turing reducibility and alternation, are direct extensions of other concepts in the book. Others, such as decidable logical theories and cryptography, are brief introductions to large fields. Feedback to the author the internet provides new opportunities for interaction between authors and readers. I have received much e-mail offering suggestions, praise, and criticism, and reporting errors for the preliminary edition. Please continue to correspond Copyright 2012 cengage learning. All rights reserved.
May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the ebook and/or echapter(s). Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage learning reserves the right to remove additional content at any time if subsequent rights restrictions require it. Xiv preface to the first edition i try to respond to each message personally, as time permits. The e-mail address for correspondence related to this book. A web site that contains a list of errata is maintained. Other material may be added to that site to assist instructors and students.
Let me know what you would like to see there. The location for that site is Acknowledgments i could not have written this book without the help of many friends, colleagues, and my family. I wish to thank the teachers who helped shape my scientific viewpoint and educational style. Five of them stand out. My thesis advisor, manuel blum, is due a special note for his unique way of inspiring students through clarity of thought, enthusiasm, and caring. He is a model for me and for many others. I am grateful to richard karp for introducing me to complexity theory, to john addison for teaching me logic and assigning those wonderful homework sets, to juris hartmanis for introducing me to the theory of computation, and to my father for introducing me to mathematics, computers, and the art of teaching. This book grew out of notes from a course that i have taught at mit for the past 15 years. Students in my classes took these notes from my lectures.
I hope they will forgive me for not listing them all. My teaching assistants over the years—avrim blum, thang bui, benny chor, andrew chou, stavros cosmadakis, aditi dhagat, wayne goddard, parry husbands, dina kravets, jakov kucan, brian o’neill, ioana popescu, and alex russell—helped me to edit and expand these notes and provided some of the homework problems. Nearly three years ago, tom leighton persuaded me to write a textbook on the theory of computation. I had been thinking of doing so for some time, but it took tom’s persuasion to turn theory into practice. I appreciate his generous advice on book writing and on many other things.
I wish to thank eric bach, peter beebee, cris calude, marek chrobak, anna chefter, guang-ien cheng, elias dahlhaus, michael fischer, steve fisk, lance fortnow, henry j. Friedman, jack fu, seymour ginsburg, oded goldreich, brian grossman, david harel, micha hofri, dung t. Huynh, neil jones, h. Chad lane, kevin lin, michael loui, silvio micali, tadao murata, christos papadimitriou, vaughan pratt, daniel rosenband, brian scassellati, ashish sharma, nir shavit, alexander shen, ilya shlyakhter, matt stallmann, perry susskind, y. C. Tay, joseph traub, osamu watanabe, peter widmayer, david williamson, derick wood, and charles yang for comments, suggestions, and assistance as the writing progressed. The following people provided additional comments that have improved this book: Isam m. Abdelhameed, eric allender, shay artzi, michelle atherton, rolfe blodgett, al briggs, brian e. Brooks, jonathan buss.