Automata Theory

About this Course

We begin with a study of finite automata and the languages they can define (the so-called "regular languages." Topics include deterministic and nondeterministic automata, regular expressions, and the equivalence of these language-defining mechanisms. We also look at closure properties of the regular languages, e.g., the fact that the union of two regular languages is also a regular language. We consider decision properties of regular languages, e.g., the fact that there is an algorithm to tell whether or not the language defined by two finite automata are the same language. Finally, we see the pumping lemma for regular languages -- a way of proving that certain languages are not regular languages. Our second topic is context-free grammars and their languages. We learn about parse trees and follow a pattern similar to that for finite automata: closure properties, decision properties, and a pumping lemma for context-free languages. We also introduce the pushdown automaton, whose nondeterministic version is equivalent in language-defining power to context-free grammars. Next, we introduce the Turing machine, a kind of automaton that can define all the languages that can reasonably be said to be definable by any sort of computing device (the so-called "recursively enumerable languages"). We shall learn how "problems" (mathematical questions) can be expressed as languages. That lets us define problems to be "decidable" if their language can be defined by a Turing machine and "undecidable" if not. We shall see some basic undecidable problems, for example, it is undecidable whether the intersection of two context-free languages is empty. Last, we look at the theory of intractable problems. These are problems that, while they are decidable, have almost certainly no algorithm that runs in time less than some exponential function of the size of their input. We meet the NP-complete problems, a large class of intractable problems. This class includes many of the hard combinatorial problems that have been assumed for decades or even centuries to require exponential time, and we learn that either none or all of these problems have polynomial-time algorithms. A common example of an NP-complete problem is SAT, the question of whether a Boolean expression has a truth-assignment to its variables that makes the expression itself true.

Created by: Stanford University

Level: Advanced


Related Online Courses

Real time operating systems (RTOS) play an important role in any embedded system, enabling users to control the time critical functions required to be handled within specific timeframes for the... more
Please Note: Learners who successfully complete this IBM course can earn a skill badge —a detailed, verifiable and digital credential that profiles the knowledge and skills you’ve acquired in thi... more
Reduction of energy consumption of buildings is an important step in the move towards a sustainable economy. How can buildings be made net zero energy, in different climates? This course... more
Source code management systems are where code, ci-scripts, and Infrastructure as Code (IaC) scripts are stored and managed. That means that properly protecting the SCM is an important step towards... more
ビッグデータやAI,いま,そういった言葉が世の中に満ち溢れています。それは,いろいろなことが計算に載るようになって,ビッグデータの利用や,それを使ったAI技術が本格化してきたからです。こうした潮流の中心となる「計算」の活用法を開発してきたのがコンピュータサイエンスという分野です。このコースでは,そのコンピュータサイエンスのエッセンスを学びます。ごく基礎的・入門的なところからはじめ,最先端のコンピュ... more

CONTINUE SEARCH

FOLLOW COLLEGE PARENT CENTRAL