# Theory of Automata

The theory of automata is the study of abstract machines and computation problems. The computation problems can be solved using these abstract machines. The abstract machine is called the automata or automaton.

Circles and arrows represent automata. Circles represent states, and arrows represent transitions. Automata takes some input strings as input, and this input goes through some states and may be entered in the final state.

## Basic Elements in Theory of Automata

Following are some essential elements of the theory of Automata.

### 1. Symbols

Symbols involve letters, the alphabet, or any picture.

Example: 1, a, b, #

### 2. Sigma (∑)

Sigma is a finite set of symbols known as an alphabet, denoted by ∑.

Examples: ∑ = {a, b} , ∑ = {A, B, C, D} , ∑ = {0, 1, ….., 5]

### 3. Grammar

Grammar is common to represent a Set of Production Rules with the letter ‘P’.

Example: Production P : S → aAb, aA → aaAb, A → ε. Where S → aAb is one the production rule.

### 4. Language

Grammar uses production rules to create the set of strings. Language refers to the collection of these strings. A language formed over Sigma (Σ) can be finite or infinite.

Example: 01

Language (L) = {Set of string of length 2} = {xx, yy, xy, yx}        //  Finite Language

Example: 02

L2 = {Set of all strings starts with ‘x’} = {x, xx, x, xyy, xyyyy, xyxyxyyyx, ………,}      //  Infinite Language

### 5. String

It is a collection of some symbols from the Sigma. The symbol ‘W’ denotes the string.

Example: If ∑ = {x, y}, then various strings that can be generated from ∑ are {x, y, xxx, xyxy, yy, xyy, …..,}.

An empty string, also known as an epsilon string, is a string that contains no symbols or has zero occurrences of symbols. Symbol ‘ε’ denotes the epsilon string. A string’s length refers to the number of characters it contains. Symbol ‘|w|’ denotes the length of that string. If the string is w= 010, its length is 3.

## Theory of Automata Notations

The following diagram represents the notations used in automata theory.

Important: Languages are generated according to their grammar and accepted or rejected by automata machines. Automata are abstract machines that accept or reject regular languages.

Note: “It is possible to express all regular languages using Regular Expressions.”

## Theory of Automata Table

The following table presents information about different types of automata and their respective recognized languages and computational abilities. Each automaton type ranges from regular to ω-regular language classes. The purpose of the table is to demonstrate the varying computational capacities of different automata models.

Automata Machine Recognized Languages Computational Power
Finite Automaton (FA) Regular Languages Limited to Regular Languages
Two-Way Finite Automaton Regular Languages Same as Finite Automaton
Mealy Machine Output depends on state and input Limited to Regular Languages
Moore Machine Output depends only on the state Limited to Regular Languages
Pushdown Automaton (PDA) Context-Free Languages More powerful than Finite Automaton
Linear Bounded Automaton (LBA) Context-Sensitive Languages More powerful than PDA
Nested Stack Automaton Certain types of nested structures More expressive than PDAs
Register Machine Integer functions Turing-equivalent
Turing Machine (TM) Recursively Enumerable Languages The most powerful model of computation
Multi-Tape Turing Machine Recursively Enumerable Languages Same as the Turing Machine
Non-deterministic Turing Machine (NDTM) Recursively Enumerable Languages Same as the Turing Machine
Deterministic Büchi Automaton ω-limit Languages Recognizes languages with infinite words satisfying Büchi acceptance condition
Nondeterministic Büchi Automaton ω-Regular Languages Recognizes languages with infinite words satisfying Büchi acceptance condition
Weighted Automaton Weighted Languages Assign weights to infinite words
Rabin Automaton, Streett Automaton, Parity Automaton, Muller Automaton ω-Regular Languages Recognize various classes of ω-regular languages

## Applications of Automata Theory

Following are the applications of automata theory

1. Compiler Design: Utilizes automata theory for lexical analysis and parsing in compiler construction.
2. Parsing and Syntax Analysis: Uses context-free grammars and pushdown automata for analyzing syntax in compilers.
3. Lexical Analysis: Applies regular expressions and finite automata to identify tokens in programming language source code.
4. Natural Language Processing (NLP): Involves language recognition and syntax analysis for applications like speech recognition.
5. Software Engineering: Utilizes automata for specifying and verifying correctness in software systems.
6. Model Checking: Verifies system specifications to ensure correctness in hardware and software.
7. Network Protocol Design: Uses finite state machines to model and analyze network protocol behavior.
8. DNA Computing: Applies automata concepts for solving computational problems using DNA strands.
9. Formal Verification: Uses automata for verifying correctness in hardware and software systems.
10. Regular Expressions in Text Processing: Widely used for searching and data extraction tasks.
11. Databases: Applies finite automata and regular expressions for query processing and pattern matching.
12. VLSI Design: Utilizes automata theory in modeling and optimizing sequential circuits in VLSI.
13. Robotics: Implements finite state machines to model and control robot behavior based on sensory input.