✬ ✩ The University of Melbourne Dept. of Computer Science and Software Eng. 433–330 Theory of Computation Harald Søndergaard Lecture 1 Introduction ✫ ✪ 1-0
✬ ✩ Welcome to 433–330 http://www.cs.mu.oz.au/330/ Michael Sipser. Introduction to the Theory of Computation . PWS Publ., 1997. • Formal languages, grammars and recognisers; • Models of computation: finite state machines, pushdown automata, Turing machines; • Computability: the Church-Turing thesis, decidability, reducibility; • Complexity: the classes P and NP, NP-complete problems, space complexity; • Cryptography (from a complexity point of view); • If time: Partial recursive functions, quantum computing. ✫ ✪ 1-1
✬ ✩ Questions, questions, . . . What are the fundamental capabilities of a computer? What is “computable”? Are there limits, in principle, to what we can compute? What is an algorithm? How are algorithms and functions related? What is a useful taxonomy of computing power? Are there limits, in practice, to what we can compute? Why are some problems computationally hard? What is a useful taxonomy for “hardness” of problems? ✫ ✪ 1-2
✬ ✩ Formal Languages Closely related to the theory of computation. Here: language = set of strings. We can classify languages according to what sort of rules (grammars) are allowed in describing how strings are generated. We can then consider a machine’s ability to act as a recogniser for a language. yes string no ✫ ✪ 1-3
✬ ✩ Machines vs Languages Finite Regular automata Pushdown Context-free automata Linear-bounded Context automata sensitive Halting Decidable Turing machines Turing Turing machines recognisable ✫ ✪ 1-4
✬ ✩ The Universal Computer A hundred years ago, a “computer” was a human (typically female) employed to do tedious numerical calculations: “Your application to work as a computer in the observatory has been successful.” Fifty years ago even computing pioneers had difficulty grasping the universality of mechanised computing: “If it should turn out that the basic logics of a machine designed for the numerical solution of differential equations coincide with the logics of a machine intended to make bills for a department store, I would regard this as the most amazing coincidence that I have ever encountered.” (Howard Aiken) ✫ ✪ 1-5
✬ ✩ The Universal Computer (cont.) And yet, 350 years ago, Hobbes, in discussing automated reasoning, wrote: “We must not think that computations, that is, ratiocination, has place only in numbers.” Leibniz, shortly after, outlined the great scope he saw for mechanised computing, in all fields of science, navigation, finance, and even law. He called for the development of a “universal language” as a vehicle for expressing knowledge and communicating it to a machine. Problems in human affairs could eventually be handled by a machine, with disputants agreeing to resolve differences by calculating: “Calculemus.” ✫ ✪ 1-6
✬ ✩ The Universal Computer (cont.) 150 years ago, Babbage had the same broad ideas of what a machine might be able to do. He said about his “analytical engine” that “it could do everything except compose country dances.” Fifty years ago, Turing elaborated that position, suggesting that the range of things an electronic computer might be able to do was amazingly wide. Of course, Turing also understood the limitations of computing, as well as anybody at the time. ✫ ✪ 1-7
✬ ✩ The Entscheidungsproblem Around 1930, first-order logic had been found to have a sound and complete axiomatisation. What was then considered the principal outstanding problem of mathematical logic was the so-called Entscheidungsproblem: whether there is a decision procedure for first-order logic. If the answer was yes (as was commonly assumed) then every theory that can be formalised in first-order logic would have an algorithm for deciding the truth of assertions in that theory. Inspired by G¨ odel, Turing set out to prove that the answer was no. For this, he needed a rigorous definition of “algorithm”. ✫ ✪ 1-8
✬ ✩ Algorithms What is an algorithm? read x and y while x != y if (x>y) let x = x-y else let y = y-x return x A procedure for solving a problem, a recipe? Mechanistic? Finitely described? Deterministic? Providing an answer in finite time? Written in which language? Written for which machine? Is it essentially a function? gcd ( x, y ) = max { z | ∃ u, v : x = uz ∧ y = vz } ✫ ✪ 1-9
✬ ✩ Models of Computability Turing machines (A. Turing, 1936) Lambda calculus (A. Church, 1936) Partial recursive functions (S. Kleene, 1936) Post systems (E. Post, 1943) Markov algorithms (A. Markov, 1954) While programs Register machines Horn clauses . . . ✫ ✪ 1-10
✬ ✩ The Church-Turing Thesis The class of computable functions is exactly the class of functions that can be realised by � insert your favourite model here � External evidence: All the above models are “equivalent” in spite of the fact that they all look very different, and were developed independently. Internal evidence: It seems that no matter how we “extend” any of them, we fail to get something that is more powerful. ✫ ✪ 1-11
Recommend
More recommend