Theory of Computation

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Learn the skills and acquire the intuition to assess the theoretical limitations of computer programmingOffering an accessible approach to the topic, Theory of Computation focuses on the metatheory of computing and the theoretical boundaries between what various computational models can do and not do—from the most general model, the URM (Unbounded Register Machines), to the finite automaton. A wealth of programming-like examples and easy-to-follow explanations build the general theory gradually, which guides readers through the modeling and mathematical analysis of computational phenomena and provides insights on what makes things tick and also what restrains the ability of computational processes.Recognizing the importance of acquired practical experience, the book begins with the metatheory of general purpose computer programs, using URMs as a straightforward, technology-independent model of modern high-level programming languages while also exploring the restrictions of the URM language. Once readers gain an understanding of computability theory—including the primitive recursive functions—the author presents automata and languages, covering the regular and context-free languages as well as the machines that recognize these languages. Several advanced topics such as reducibilities, the recursion theorem, complexity theory, and Cook's theorem are also discussed. Features of the book include:A review of basic discrete mathematics, covering logic and induction while omitting specialized combinatorial topicsA thorough development of the modeling and mathematical analysis of computational phenomena, providing a solid foundation of un-computabilityThe connection between un-computability and un-provability: Gödel's first incompleteness theoremThe book provides numerous examples of specific URMs as well as other programming languages including Loop Programs, FA (Deterministic Finite Automata), NFA (Nondeterministic Finite Automata), and PDA (Pushdown Automata). Exercises at the end of each chapter allow readers to test their comprehension of the presented material, and an extensive bibliography suggests resources for further study.Assuming only a basic understanding of general computer programming and discrete mathematics, Theory of Computation serves as a valuable book for courses on theory of computation at the upper-undergraduate level. The book also serves as an excellent resource for programmers and computing professionals wishing to understand the theoretical limitations of their craft.

Author(s): George Tourlakis
Edition: 1
Publisher: Wiley
Year: 2012

Language: English
Pages: 389

Cover......Page 1
Title Page......Page 5
Contents......Page 9
Preface......Page 13
1.1 Sets and Logic; Naïvely......Page 21
1.1.1 A Detour via Logic......Page 22
1.1.2 Sets and their Operations......Page 47
1.1.3 Alphabets, Strings and Languages......Page 59
1.2 Relations and Functions......Page 60
1.3 Big and Small Infinite Sets; Diagonalization......Page 71
1.4.1 Complete, or Course-of-Values, Induction......Page 81
1.4.2 Simple Induction......Page 84
1.4.4 The Equivalence of Induction and the Least Principle......Page 85
1.5 Why Induction Ticks......Page 88
1.6 Inductively Defined Sets......Page 89
1.7 Recursive Definitions of Functions......Page 98
1.8 Additional Exercises......Page 105
2.1 A Theory of Computability......Page 111
2.1.1 A Programming Framework for Computable Functions......Page 112
2.1.2 Primitive Recursive Functions......Page 123
2.1.3 Simultaneous Primitive Recursion......Page 136
2.1.4 Pairing Functions......Page 138
2.1.5 Iteration......Page 143
2.2 A Programming Formalism for the Primitive Recursive Functions......Page 145
2.2.1 PR vs. L......Page 155
2.2.2 Incompleteness of PR......Page 159
2.3 URM Computations and their Arithmetization......Page 161
2.4 A Double Recursion that Leads Outside the Primitive Recursive Function Class......Page 167
2.4.1 The Ackermann Function......Page 168
2.4.2 Properties of the Ackermann Function......Page 169
2.4.3 The Ackermann Function Majorizes All the Functions of PR......Page 173
2.4.4 The Graph of the Ackermann Function is in PR_*......Page 175
2.5 Semi-computable Relations; Unsolvability......Page 178
2.6 The Iteration Theorem of Kleene......Page 192
2.7 Diagonalization Revisited: Unsolvability via Reductions......Page 195
2.7.1 More Diagonalization......Page 196
2.7.2 Reducibility via the S-m-n Theorem......Page 203
2.7.3 More Dovetailing......Page 216
2.7.4 Recursive Enumerations......Page 222
2.8 Productive and Creative Sets......Page 229
2.9 The Recursion Theorem......Page 232
2.9.1 Applications of the Recursion Theorem......Page 234
2.10 Completeness......Page 237
2.11 Unprovability from Unsolvability......Page 241
2.11.1 Supplement: ϕ_x(x)↑ is Expressible in the Language of Arithmetic......Page 249
2.12 Additional Exercises......Page 254
3 A Subset of the URM Language; FA and NFA......Page 261
3.1.1 The Flow-Diagram Model......Page 263
3.1.2 Some Closure Properties......Page 271
3.1.3 How to Prove that a Set is Not Acceptable by a FA; Pumping Lemma......Page 273
3.2 Nondeterministic Finite Automata......Page 277
3.2.1 From FA to NFA and Back......Page 280
3.3 Regular Expressions......Page 286
3.3.1 From a Regular Expression to NFA and Back......Page 288
3.4 Regular Grammars and Languages......Page 297
3.4.1 From a Regular Grammar to a NFA and Back......Page 302
3.4.2 Epilogue on Regular Languages......Page 305
3.5 Additional Exercises......Page 307
4 Adding a Stack to a NFA: Pushdown Automata......Page 313
4.1 The PDA......Page 314
4.2 PDA Computations......Page 315
4.2.1 ES vs AS vs ES+AS......Page 320
4.3 The PDA-acceptable Languages are the Context Free Languages......Page 325
4.4 Non Context Free Languages; Another Pumping Lemma......Page 332
4.5 Additional Exercises......Page 342
5.1 Adding a Second Stack; Turing Machines......Page 345
5.1.1 Turing Machines......Page 350
5.1.2 NP-Completeness......Page 358
5.1.3 Cook's Theorem......Page 362
5.2 Axt, Loop Program, and Grzegorczyk hierarchies......Page 370
5.3 Additional Exercises......Page 390
Bibliography......Page 395
Index......Page 399