Full Transcript

**University of Science and Technology** **Faculty of Computer Science and Information Technology** **Theory of Computation** **Lecture (1): AUTOMATA, COMPUTABILITY, AND COMPLEXITY** **Instructor: Prof. Noureldien A. Noureldien** **I N T R O D U C T I O N** We begin with an overview of those a...

**University of Science and Technology** **Faculty of Computer Science and Information Technology** **Theory of Computation** **Lecture (1): AUTOMATA, COMPUTABILITY, AND COMPLEXITY** **Instructor: Prof. Noureldien A. Noureldien** **I N T R O D U C T I O N** We begin with an overview of those areas in the theory of computation that we present in this course. **0.1** **AUTOMATA, COMPUTABILITY, AND COMPLEXITY** This course focuses on three traditionally central areas of the theory of computation: automata, computability, and complexity. They are linked by the question: **What are the fundamental capabilities and limitations of computers?** This question goes back to the 1930s when mathematical logicians first began to explore the meaning of computation. Technological advances since that time have greatly increased our ability to compute and have brought this question out of the realm of theory into the world of practical concern. In each of the three areas---automata, computability, and complexity---this question is interpreted differently, and the answers vary according to the interpretation. Following this introductory chapter, we explore each area in a separate part of this book. Here, we introduce these parts in reverse order because by starting from the end you can better understand the reason for the beginning. **COMPLEXITY THEORY** Computer problems come in different varieties; some are easy, and some are hard. For example, the sorting problem is an easy one. Say that you need to arrange a list of numbers in ascending order. Even a small computer can sort a million numbers rather quickly. Compare that to a scheduling problem. Say that you must find a schedule of classes for the entire university to satisfy some reasonable constraints, such as that no two classes take place in the same room at the same time. The scheduling problem seems to be much harder than the sorting problem. If you have just a thousand classes, finding the best schedule may require centuries, even with a supercomputer. **What makes some problems computationally hard and others easy?** It has been intensively researched for over 40 years. In one important achievement of complexity theory thus far, researchers have discovered an elegant scheme for classifying problems according to their computational difficulty. Using this scheme, we can demonstrate a method for giving evidence that certain problems are computationally hard, even if we are unable to prove that they are. You have several options when you confront a problem that appears to be computationally hard. One applied area that has been affected directly by complexity theory is the ancient field of cryptography. In most fields, an easy computational problem is preferable to a hard one because easy ones are cheaper to solve. Cryptography is unusual because it specifically requires computational problems that are hard, rather than easy. Secret codes should be hard to break without the secret key or password. Complexity theory has pointed cryptographers in the direction of computationally hard problems around which they have designed revolutionary new code. This is the central question of complexity theory. Remarkably, we don't know the answer to it, though it **COMPUTABILITY THEORY** During the first half of the twentieth century, mathematicians such as Kurt G¨odel, Alan Turing, and Alonzo Church discovered that certain basic problems cannot be solved by computers. One example of this phenomenon is the problem of determining whether a mathematical statement is true or false. It seems like a natural for solution by computer because it lies strictly within the realm of mathematics. But no computer algorithm can perform this task. Among the consequences of this profound result was the development of ideas concerning theoretical models of computers that eventually would help lead to the construction of actual computers. The theories of computability and complexity are closely related. In complexity theory, the objective is to classify problems as easy ones and hard ones; whereas in computability theory, the classification of problems is by those that are solvable and those that are not. Computability theory introduces several of the concepts used in complexity theory. **AUTOMATA THEORY** Automata theory deals with the definitions and properties of mathematical models of computation. These models play a role in several applied areas of computer science. One model, called the finite automaton, is used in text processing, compilers, and hardware design. Another model, called the context-free grammar, is used in programming languages and artificial intelligence. Automata theory is an excellent place to begin the study of the theory of computation. The theories of computability and complexity require a precise definition of a computer. Automata theory allows practice with formal definitions of computation as it introduces concepts relevant to other non-theoretical areas of computer science.

Use Quizgecko on...
Browser
Browser