Finite Automata: Reading: Chapter 2
Finite Automata: Reading: Chapter 2
Reading: Chapter 2
1
Finite Automaton (FA)
■ Informally, a state diagram that comprehensively
captures all possible states and transitions that a
machine can take while responding to a stream or
sequence of input symbols
■ Recognizer for “Regular Languages”
2
Deterministic Finite Automata
- Definition
■ A Deterministic Finite Automaton (DFA)
consists of:
■ Q ==> a finite set of states
■ ∑ ==> a finite set of input symbols (alphabet)
■ q0 ==> a start state
■ F ==> set of accepting states
■ δ ==> a transition function, which is a mapping
between Q x ∑ ==> Q
■ A DFA is defined by the 5-tuple:
■ {Q, ∑ , q0,F, δ }
3
What does a DFA do on
reading an input string?
■ Input: a word w in ∑*
■ Question: Is w acceptable by the DFA?
■ Steps:
■ Start at the “start state” q0
■ For every input symbol in the sequence w do
■ Compute the next state from the current state, given the
current input symbol in w and the transition function
■ If after all symbols in w are consumed, the current
state is one of the accepting states (F) then accept
w;
■ Otherwise, reject w.
4
Regular Languages
■ Let L(A) be a language recognized by a
DFA A.
■ Then L(A) is called a “Regular Language”.
5
The Chomsky Hierachy
• A containment hierarchy of classes of formal languages
Regul
ar Context-
Context-
(DFA) free Recursively-
sensitive
(PDA) enumerable
(LBA)
(TM)
6
Example #1
■ Build a DFA for the following language:
■ L = {w | w is a binary string that contains 01 as a substring}
■ Steps for building a DFA to recognize L:
■ ∑ = {0,1}
■ Decide on the states: Q
■ Designate start state and final state(s)
■ δ: Decide on the transitions:
■ “Final” states == same as “accepting states”
■ Other states == same as “non-accepting states”
7
Regular expression: (0+1)*01(0+1)*
8
Example #2
Clamping Logic:
■ A clamping circuit waits for a ”1” input, and turns on forever.
However, to avoid clamping on spurious noise, we’ll design a
DFA that waits for two consecutive 1s in a row before
clamping on.
■ Build a DFA for the following language:
L = { w | w is a bit string which contains the substring
11}
■ State Design:
■ q0 : start state (initially off), also means the most recent input
was not a 1
■ q1: has never seen 11 but the most recent input was a 1
■ q2: has seen 11 at least once
9
Example #3
■ Build a DFA for the following language:
L = { w | w is a binary string that has even
number of 1s and even number of 0s}
■ ?
10
Extension of transitions (δ) to
Paths (δ)
■ δ (q,w) = destination state from state q
on input string w
■ δ (q,wa) = δ (δ(q,w), a)
■ δ (q0,wa) = ?
11
Language of a DFA
A DFA A accepts string w if there is a
path from q0 to an accepting (or final)
state that is labeled by w
12
Non-deterministic Finite
Automata (NFA)
■ A Non-deterministic Finite Automaton
(NFA)
■ is of course “non-deterministic”
■ Implying that the machine can exist in more
than one state at the same time
■ Transitions could be non-deterministic
1 q
q
• Each transition function therefore
…
j
i 1 q maps to a set of states
k
13
Non-deterministic Finite
Automata (NFA)
■ A Non-deterministic Finite Automaton (NFA)
consists of:
■ Q ==> a finite set of states
■ ∑ ==> a finite set of input symbols (alphabet)
■ q0 ==> a start state
■ F ==> set of accepting states
■ δ ==> a transition function, which is a mapping
between Q x ∑ ==> subset of Q
■ An NFA is also defined by the 5-tuple:
■ {Q, ∑ , q0,F, δ }
14
How to use an NFA?
■ Input: a word w in ∑*
■ Question: Is w acceptable by the NFA?
■ Steps:
■ Start at the “start state” q0
■ For every input symbol in the sequence w do
■ Determine all possible next states from all current states, given
the current input symbol in w and the transition function
■ If after all symbols in w are consumed and if at least one of
the current states is a final state then accept w;
■ Otherwise, reject w.
15
Regular expression: (0+1)*01(0+1)*
16
Note: Omitting to explicitly show error states is just a matter of design convenience
(one that is generally followed for NFAs), and
i.e., this feature should not be confused with the notion of non-determinism.
18
Extension of δ to NFA Paths
■ Basis: δ (q,ε) = {q}
■ Induction:
■ Let δ (q0,w) = {p1,p2…,pk}
■ δ (pi,a) = Si for i=1,2...,k
■ Then, δ (q0,wa) = S1 U S2 U … U Sk
19
Language of an NFA
■ An NFA accepts w if there exists at
least one path from the start state to an
accepting (or final) state that is labeled
by w
■ L(N) = { w | δ(q0,w) ∩ F ≠ Φ }
20
Advantages & Caveats for NFA
■ Great for modeling regular expressions
■ String processing - e.g., grep, lexical analyzer
21
Technologies for NFAs
■ Micron’s Automata Processor (introduced in 2013)
■ 2D array of MISD (multiple instruction single data)
fabric w/ thousands to millions of processing
elements.
■ 1 input symbol = fed to all states (i.e., cores)
■ Non-determinism using circuits
■ http://www.micronautomata.com/
22
But, DFAs and NFAs are equivalent in their power to capture langauges !!
26
Idea: To avoid enumerating all of
power set, do
“lazy creation of states”
δD 0 1 δD 0 1
δN 0 1
Ø Ø Ø [q0] [q0,q1] [q0]
q0 {q0,q1} {q0} [q0] {q0,q1} {q0} [q0,q1] [q0,q1] [q0,q2]
q1 Ø {q2} [q1] Ø {q2} *[q0,q2] [q0,q1] [q0]
*q2 Ø Ø *[q2] Ø Ø
[q0,q1] {q0,q1} {q0,q2}
*[q0,q2] {q0,q1} {q0} 0. Enumerate all possible subsets
*[q1,q2] Ø {q2} 1. Determine transitions
*[q0,q1,q2] {q0,q1} {q0,q2} 2. Retain only those states
reachable from {q0}
27
NFA to DFA: Repeating the example
using LAZY CREATION
■ L = {w | w ends in 01} 1 0
NFA: DFA: 0
[q
1
[q
0,1 [q 0
, 0
,
0
] q1 0 q2
q 0 q 1 q ] ]
1
0 1 2
δN 0 1 δD 0 1
q0 {q0,q1} {q0} [q0] [q0,q1] [q0]
q1 Ø {q2} [q0,q1] [q0,q1] [q0,q2]
*q2 Ø Ø *[q0,q2] [q0,q1] [q0]
Main Idea:
Introduce states as you go
(on a need basis)
28
Correctness of subset construction
Theorem: If D is the DFA constructed
from NFA N by subset construction,
then L(D)=L(N)
■ Proof:
29
A bad case where
#states(DFA)>>#states(NFA)
■ L = {w | w is a binary string s.t., the kth symbol
from its end is a 1}
31
A few subtle properties of
DFAs and NFAs
■ The machine never really terminates.
■ It is always waiting for the next input symbol or making
transitions.
■ The machine decides when to consume the next symbol from
the input and when to ignore it.
■ (but the machine can never skip a symbol)
■ => A transition can happen even without really consuming an
input symbol (think of consuming ε as a free token) – if this
happens, then it becomes an ε-NFA (see next few slides).
■ A single transition cannot consume more than one (non-ε)
symbol.
32
FA with ε-Transitions
■ We can allow explicit ε-transitions in finite
automata
■ i.e., a transition from one state to another state
without consuming any additional input symbol
■ Explicit ε-transitions between different states
introduce non-determinism.
■ Makes it easier sometimes to construct NFAs
Definition: ε -NFAs are those NFAs with at
least one explicit ε-transition defined.
■ ε -NFAs have one more column in their
transition table 33
Example of an ε-NFA
L = {w | w is empty, or if non-empty will end in 01}
0,1
q 0 q 1 q
■ ε-closure of a state q,
ECLOSE(q), is the set
ε 0 1 2
of all states (including
start q
’0 itself) that can be
reached from q by
δE 0 1
ε repeatedly making an
*q’0 Ø Ø {q’0,q0}
ECLOSE(q’0) arbitrary number of
q0 {q0,q1} {q0} {q0} ECLOSE(q0) ε-transitions.
q1 Ø {q2} {q1} ECLOSE(q1)
*q2 Ø Ø {q2}
ECLOSE(q2)
34
To simulate any transition:
Step 1) Go to all immediate destination states.
Step 2) From there go to all their ε-closure states as well.
Example of an ε-NFA
L = {w | w is empty, or if non-empty will end in 01}
0,1
q 0 q 1 q
Simulate for w=101:
ε 0 1 2
q 0’
q ε ε
start
’0 q 0’ q0
1 1
δE 0 1 Ø q0
ε x 0
ECLOSE(q’0)
*q’0 Ø Ø {q’0,q0} q1
q0 {q0,q1} {q0} {q0} ECLOSE(q0) 1
q1 Ø {q2} {q1} q2
*q2 Ø Ø {q2}
35
To simulate any transition:
Step 1) Go to all immediate destination states.
Step 2) From there go to all their ε-closure states as well.
start q q
’0 3
δE 0 1
ε
*q’0 Ø Ø {q’0,q0,q3}
q0 {q0,q1} {q0} {q0,q3}
q1 Ø {q2} {q1}
*q2 Ø Ø {q2}
q3 Ø {q2} {q3}
36
Equivalency of DFA, NFA, ε-NFA
■ Theorem: A language L is accepted by
some ε-NFA if and only if L is accepted by
some DFA
■ Implication:
■ DFA ≡ NFA ≡ ε-NFA
■ (all accept Regular Languages)
37
Eliminating ε-transitions
Let E = {QE,∑,δE,q0,FE} be an ε-NFA
Goal: To build DFA D={QD,∑,δD,{qD},FD} s.t. L(D)=L(E)
Construction:
1. QD= all reachable subsets of QE factoring in ε-closures
2. qD = ECLOSE(q0)
3. FD=subsets S in QD s.t. S∩FE≠Φ
4. δD: for each subset S of QE and for each input symbol a∈∑:
■ Let R= U δE(p,a) // go to destination states
■ δD(S,a) p=inU
s
ECLOSE(r)// from there, take a union
of all their ε-closures
r in R
q 0 q 1 q
ε 0 1 2
start q
’0
δE 0 1 δD 0 1
ε
*q’0 Ø Ø {q’0,q0} *{q’0,q0}
q0 {q0,q1} {q0} {q0} …
q1 Ø {q2} {q1}
*q2 Ø Ø {q2}
39
Example: ε-NFA DFA
L = {w | w is empty, or if non-empty will end in 01}
0,1 0
{q0, 0
q 0 q 1 q {q0,
0 q 1} 1 q 2}
ε 0 1 2
{q’0 0
1
start q start , 1
q
’0 q 0} 1
ECLOSE union 0
δE 0 1 δD 0 1
ε
*q’0 Ø Ø {q’0,q0} *{q’0,q0} {q0,q1} {q0}
q0 {q0,q1} {q0} {q0} {q0,q1} {q0,q1} {q0,q2}
q1 Ø {q2} {q1} {q0} {q0,q1} {q0}
*q2 Ø Ø {q2} *{q0,q2} {q0,q1} {q0}
40
Summary
■ DFA
■ Definition
■ Transition diagrams & tables
■ Regular language
■ NFA
■ Definition
■ Transition diagrams & tables
■ DFA vs. NFA
■ NFA to DFA conversion using subset construction
■ Equivalency of DFA & NFA
■ Removal of redundant states and including dead states
■ ε-transitions in NFA
■ Pigeon hole principles
■ Text searching applications 41