# Automata Tutorial

Automata theory is a branch of the theory of computation. It deals with the study of abstract machines and their capacities for computation. An abstract machine is called the automata. It includes the design and analysis of automata, which are mathematical models that can perform computations on strings of symbols according to a set of rules.

Theory of computation is the branch of computer science that studies the nature and ranges of computation. It includes analysis and design of algorithms computation systems, formal languages, automata theory, compatibility theory, and complexity theory.

In this Automata Tutorial, you’ll learn all the basic to advanced topics like Regular languages and finite automata, Context free Grammar and Context-free language, turning machines, etc.

Table of Content

### Recent Articles on Theory Of Computation

## Automata – Introduction

## Regular Expression and Finite Automata

- Finite Automata Introduction
- Arden’s Theorem and Challenging Applications | Set 2
- L-graphs and what they represent
- Hypothesis (language regularity) and algorithm (L-graph to NFA)
- Regular Expressions,Regular Grammar and Regular Languages
- How to identify if a language is regular or not
- Arden’s Theorem
- Finite Automata from Regular Expressions
- Star Height of Regular Expression and Regular Language
- Generating regular expression from finite automata
- Designing Deterministic Finite Automata (Set 1)
- Designing Deterministic Finite Automata (Set 2)
- DFA for Strings not ending with “THE”
- DFA of a string with at least two 0’s and at least two 1’s
- DFA for accepting the language L = { a
^{n}b^{m}| n+m=even } - DFA machines accepting odd number of 0’s or/and even number of 1’s
- DFA of a string in which 2nd symbol from RHS is ‘a’
- Union process in DFA
- Concatenation process in DFA
- DFA in LEX code which accepts even number of zeros and even number of ones.
- NFA to DFA Conversion
- Program to Implement NFA with epsilon move to DFA Conversion
- Minimization of DFA
- Reversal process in DFA
- Complementation process in DFA
- Kleene’s Theorem Part-1
- MEALY and MOORE Machines
- Difference between Mealy machine and Moore machine

>> Practice problems on finite automata

>> Practice problems on finite automata | Set 2

>> Quiz on Regular Languages and Finite Automata

## CFG (Context Free Grammar)

- Relationship between grammar and language
- Simplifying Context Free Grammars
- Closure Properties of Context Free Languages(CFL)
- Union & Intersection of Regular languages with CFL
- Converting Context Free Grammar to Chomsky Normal Form
- Converting Context Free Grammar to Greibach Normal Form
- Pumping Lemma
- Check if the language is Context Free or Not
- Ambiguity in Context Free Grammar
- Operator grammar and precedence parser
- Context-sensitive Grammar (CSG) and Language (CSL)

## PDA (Pushdown Automata)

- Pushdown Automata
- Pushdown Automata Acceptance by Final State
- Construct Pushdown Automata for given languages
- Construct Pushdown Automata for all length palindrome
- Detailed Study of PushDown Automata
- NPDA for accepting the language L = {a
^{n}b^{m}c^{n}| m,n>=1} - NPDA for accepting the language L = {a
^{n}b^{n}c^{m}| m,n>=1} - NPDA for accepting the language L = {a
^{n}b^{n}| n>=1} - NPDA for accepting the language L = {a
^{m}b^{(2m)}| m>=1} - NPDA for accepting the language L = {a
^{m}b^{n}c^{p}d^{q}| m+n=p+q ; m,n,p,q>=1} - Construct Pushdown automata for L = {0
^{n}1^{m}2^{m}3^{n}| m,n ? 0} - Construct Pushdown automata for L = {0
^{n}1^{m}2^{(n+m)}| m,n ? 0} - NPDA for accepting the language L = {a
^{m}b^{n}c^{(n+m)}| m,n ? 1} - NPDA for accepting the language L = {a
^{m}b^{(n+m)}c^{n}| m,n ? 1} - NPDA for accepting the language L = {a
^{2m}b^{3m}| m ? 1} - NPDA for accepting the language L = {a
^{m}b^{(2m+1)}| m ? 1} - NPDA for accepting the language L = {a
^{i}b^{j}c^{k}d^{l}| i==k or j==l,i>=1,j>=1} - Construct Pushdown automata for L = {a
^{(2*m)}c^{(4*n)}d^{n}b^{m}| m,n ? 0} - Construct Pushdown automata for L = {0
^{n}1^{m}2^{(n+m)}| m,n ? 0} - NPDA for L = {0
^{i}1^{j}2^{k}| i==j or j==k ; i , j , k >= 1} - NPDA for accepting the language L = {a
^{n}b^{(2n)}| n>=1} U {anbn | n>=1} - NPDA for the language L ={w?{a,b}*| w contains equal no. of a’s and b’s}

>> Quiz on Context Free Languages and Pushdown Automata

## Turing Machine

- Turing Machine
- Turing Machine for addition
- Turing machine for subtraction | Set 1
- Turing machine for multiplication
- Turing machine for copying data
- Construct a Turing Machine for language L = {0
^{n}1^{n}2^{n}| n?1} - Construct a Turing Machine for language L = {ww
^{r}| w ? {0, 1}} - Construct a Turing Machine for language L = {ww | w ? {0,1}}
- Construct Turing machine for L = {a
^{n}b^{m}a^{(n+m)}| n,m?1} - Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i*j = k; i, j, k ? 1} - Turing machine for 1’s and 2’s complement
- Recursive and Recursive Enumerable Languages
- Turing Machine for subtraction | Set 2
- Halting Problem
- Theory of Computation | Applications of various Automata
- Turing Machine as Comparator

>> Quiz on Turing Machines and Recursively Enumerable Sets

## Decidability

- Decidable and undecidable problems
- Decidability
- Undecidability and Reducibility
- NP-Completeness | Set 1 (Introduction)
- Proof that Hamiltonian Path is NP-Complete
- Proof that vertex cover is NP complete
- Computable and non-computable problems

## Quick Links :

- Last Minute Notes(LMNs)
- ‘Quizzes’ on Theory Of Computation !
- ‘Practice Problems’ on Theory of Computation !

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.