Automata
Automata
Finite
Automata
Let me show you a
machine so simple
that you can
understand it in
less than two
minutes
11 1
0
0,1
1
0111 111 1
0 0
0 0
q0 q12
q1 1
0
0,1
1
q0 q2
0 0
The alphabet of a finite automaton is the
set where the symbols come from: 1
{0,1}
q3
The language of a finite automaton is the
set of strings thatwww.cs.cmu.edu/~rudich
itSteven
accepts
Rudich:
q0 0,1
L(M) =All
strings of 0s and 1s
Steven Rudich:
www.cs.cmu.edu/~rudich
0 0
1
q0 q1
1
Steven Rudich:
www.cs.cmu.edu/~rudich
Notation
An alphabet Σ is a finite set (e.g., Σ = {0,1})
0
q1
0,1
1
* q0
0
q0
1
q1
1
q1 q2 q2
q0
M q2
0 0 q2 q3 q2
1 q3 q0 q2
q3
Steven Rudich:
www.cs.cmu.edu/~rudich
Build an automaton that accepts all and
only those strings that contain 001
0,1
1 0
0 0 1
q q0 q00 q001
1
Steven Rudich:
www.cs.cmu.edu/~rudich
A language is regular if it is
recognized by a deterministic
finite automaton
Steven Rudich:
www.cs.cmu.edu/~rudich
Union Theorem
Given two languages, L1 and L2,
define the union of L1 and L2 as
L1 L2 = { w | w L1 or w L2 }
Steven Rudich:
www.cs.cmu.edu/~rudich
Theorem: The union of two regular
languages is also a regular
language
Proof Sketch: Let
M1 = (Q1, Σ, 1, 1q0, F1) be finite automaton for
L1
2
and
M2 = (Q2, Σ, 2, q0, F2) be finite automaton for
We
L2 want to construct a finite automaton
M = (Q, Σ, , q0, F) that recognizes L = L1
L2
Steven Rudich:
www.cs.cmu.edu/~rudich
Idea: Run both M1 and M2 at the same
time!
Q= pairs of states, one from M1 and one from M2
= { (q1, q2) | q1 Q1 and q2 Q2 }
= Q1 Q2
Steven Rudich:
www.cs.cmu.edu/~rudich
Theorem: The union of two regular
languages is also a regular
language
0
0
1
q0 q1
1 1
1
0
p0 p1
Steven Rudich:
0
www.cs.cmu.edu/~rudich
Automaton for Union
1
q0,p0 q1,p0
1
0 0
0 0
1
q0,p1 q1,p1
1
Steven Rudich:
www.cs.cmu.edu/~rudich
Automaton for
Intersection
1
q0,p0 q1,p0
1
0 0
0 0
1
q0,p1 q1,p1
1
Steven Rudich:
www.cs.cmu.edu/~rudich
Theorem: The union of two regular
languages is also a regular
language
Corollary: Any finite language is
regular
Steven Rudich:
www.cs.cmu.edu/~rudich
The Regular Operations
Union: A B = { w | w A or w B }
Intersection: A B = { w | w A and w B }
Negation: A = { w | w A }
Concatenation: A B = { vw | v A and w B }
Steven Rudich:
www.cs.cmu.edu/~rudich
Regular Languages Are
Closed Under The
Regular Operations
We have seen part of the proof for
Union. The proof for intersection is
very similar. The proof for negation is
easy.
Steven Rudich:
www.cs.cmu.edu/~rudich
The “Grep” Problem
Input: Text T of length t, string S of length n
Problem: Does string S appear inside text T?
Naïve method:
Coke Machines
Thermostats (fridge)
Elevators
b a
a
b
b
Letterbox principle:
If the average number
of letters per box is x,
then some box will
have at least x letters
(similarly, some box
has at most x)
Theorem: L= {anbn | n > 0 } is not regular
Proof (by contradiction):
Assume that L is regular
Then there exists a machine M with k
states that accepts L
For each 0 i k, let Si be the state M is
in after reading ai
$i,j k such that Si = Sj, but i j
M will do the same thing on aibi and ajbi
But a valid M must reject ajbi and accept aibi
Deterministic Finite
Automata
• Definition
• Testing if they accept a string
• Building automata
Regular Languages
• Definition
• Closed Under Union,
Here’s
What You Intersection, Negation
• Using Pigeonhole Principle to
Need to
Know… show language ain’t regular