0% found this document useful (0 votes)
253 views33 pages

Automata Theory Nfa

This document provides examples and explanations of non-deterministic finite automata (NFA). It defines key concepts such as the difference between DFA and NFA transition functions, NFA acceptance conditions, ɛ-transitions and ɛ-closure. Examples are given to demonstrate how to construct NFAs for various languages over different alphabets.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
253 views33 pages

Automata Theory Nfa

This document provides examples and explanations of non-deterministic finite automata (NFA). It defines key concepts such as the difference between DFA and NFA transition functions, NFA acceptance conditions, ɛ-transitions and ɛ-closure. Examples are given to demonstrate how to construct NFAs for various languages over different alphabets.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Automata Theory

CS411-2015F-04
Non-Determinisitic Finite Automata
David Galles

Department of Computer Science


University of San Francisco
04-0: Non-Determinism
A Deterministic Finite Automata’s transition
function has exactly one transition for each
state/symbol pair
A Non-Deterministic Finite Automata can have 0, 1
or more transitions for a single state/symbol pair
Example: L = {w ∈ {a, b} : w starts with a}
Regular expression?
04-1: NFA Example
Example: L = {w ∈ {a, b} : w starts with a}
a(a+b)*
a,b

a
0 1
04-2: NFA Example
Example: L = {w ∈ {a, b} : w starts with a}
a(a+b)*
a,b

a
0 1

What happens if a ’b’ is seen in state q0 ?


The machine “crashes”, and does not accept
the string
04-3: NFA Example
Example: L = {w ∈ {a, b} : w contains the
substring aa}
Regular Expression?
04-4: NFA Example
Example: L = {w ∈ {a, b} : w contains the
substring aa}
(a+b)*aa(a+b)*
a,b a,b

a a
0 1 2

What happens if a a is seen in state q0 ?


04-5: NFA Example
Example: L = {w ∈ {a, b} : w contains the
substring aa}
(a+b)*aa(a+b)*
a,b a,b

a a
0 1 2

What happens if a a is seen in state q0 ?


Stay in state q0 , or go on to state q1
Multiple Computational Paths (board example)
04-6: NFA Example
Example: L = {w ∈ {a, b} : w contains the
substring aa}

a,b a,b

a a
0 1 2

(q0, abaa) (q0, baa) (q0,aa) (q0, a) (q0, ε) reject

(q1, ε) reject
crash
(q1, baa) reject
(q1, a)
(q2, ε) accept

Does this machine accept abaa?


04-7: NFA Acceptance
If there is any computational path that accepts a
string, then the machine accepts the string
Two ways to think about NFAs:
Magic “Oracle”, which always picks the correct
path to take
Try all possible paths
04-8: NFA Example
Example: L = {w ∈ {a, b} : w contains the
substring aa}
a,b a,b

a a
0 1 2

If a string contains aa, will there be a


computational path that accepts it?
If a string does not contain aa, will there be a
computational path that accepts it?
04-9: NFA Definition
Difference between a DFA and an NFA
DFA has exactly only transition for each
state/symbol pair
δ : (K × Σ) 7→ K
NFA has 0, 1 or more transitions for each
state/symbol pair
04-10: NFA Definition
Difference between a DFA and an NFA
DFA has exactly only transition for each
state/symbol pair
Transition function: δ : (K × Σ) 7→ K
NFA has 0, 1 or more transitions for each
state/symbol pair
Transition relation: ∆ ⊆ ((K × Σ) × K)
04-11: NFA Definition
A NFA is a 5-tuple M = (K, Σ, ∆, s, F )
K Set of states
Σ Alphabet
∆ : (K × Σ) × K is a Transition relation
s ∈ K Initial state
F ⊆ K Final states
04-12: Fun with NFA
Create an NFA for:

All strings over {a, b} that start with a and end with
b
04-13: Fun with NFA
Create an NFA for:

All strings over {a, b} that start with a and end with
b

a,b

a b
0 1 3
(example compuational paths for ababb, abba, bbab)
04-14: Fun with NFA
Create an NFA for:

All strings over {0, 1} that contian 0110 or 1001


04-15: Fun with NFA
Create an NFA for:

All strings over {0, 1} that contian 0110 or 1001

0,1 1 1 0,1
1 1 1 0
0

0 3
1 1
0 0
1 1 1
04-16: ǫ-Transitions
ǫ transition consumes no input
NFA (with ǫ transitions) for (ab)*(aab)*

a
1 1
b
ε
a a
1 1 1

b
04-17: ǫ-Transitions
Create an NFA (with ǫ-transitions) for:

All strings over {a, b, c} that are missing at least


one letter. For example, aabba, cbbc, ccacc ∈ L,
while abbc 6∈ L
04-18: ǫ-Transitions
Create an NFA (with ǫ-transitions) for:

All strings over {a, b, c} that are missing at least


one letter. For example, aabba, cbbc, ccacc ∈ L,
while abbc 6∈ L

ε ε ε

1 2 3

a,b b,c a,c

abcb, bbab, abbab, abc


04-19: Yet More Formalism
ǫ-closure
ǫ-closure(q ) = set of all states that can be
reached following zero or more ǫ-transitions
from state q .
04-20: ǫ-closure
ǫ-closure examples

ε a
0 1 2

a b c ε
ε b

3 4 5 6
ε ε a
(quick review: What is L[M]?)
04-21: ǫ-closure
ǫ-closure examples

ε a
0 1 2

a b c ε
ε b

3 4 5 6
ε ε a
L[M] = {a, aa, ba, ca, aba}
04-22: ǫ-closure
ǫ-closure examples

ε a
0 1 2

a b c ε
ε b

3 4 5 6
ε ε a

ǫ-closure(q0 ) =
ǫ-closure(q3 ) =
ǫ-closure(q2 ) =
ǫ-closure(q5 ) =
04-23: ǫ-closure
ǫ-closure examples

ε a
0 1 2

a b c ε
ε b

3 4 5 6
ε ε a

ǫ-closure(q0 ) = {q0 , q1 , q4 , q5 }
ǫ-closure(q3 ) = {q3 , q4 , q5 }
ǫ-closure(q2 ) = {q2 , q6 }
ǫ-closure(q5 ) = {q5 }
04-24: ǫ-closure – Sets
ǫ-closure
ǫ-closure(q ) = set of all states that can be
reached following zero or more ǫ-transitions
from state q .
Can extend ǫ-closure to a set of states
S
ǫ-closure(S ) = {A : q ∈ S ∧ ǫ-closure(q) = A}
04-25: NFA Definition (revised)
A NFA is a 5-tuple M = (K, Σ, ∆, s, F )
K Set of states
Σ Alphabet
∆ : (K × (Σ ∪ {ǫ})) × K is a Transition relation
s ∈ K Initial state
F ⊆ K Final states
04-26: NFA ⊢M
Binary relation ⊢M : What machine M yields in one
step
⊢M ⊆ (K × Σ∗ ) × (K × Σ∗ )
⊢M = {((q1 , aw), (q2 , w)) : q1 , q2 ∈ KM , w ∈
Σ∗M , a ∈ ΣM ∪ {ǫ}, ((q1 , a), q2 ) ∈ ∆M }
Binary relation ⊢∗M : Transitive, reflexive closure of
⊢M
04-27: NFA Languages
L[M ] – Language defined by NFA M
L[M ] = {w : (sM , w) ⊢∗M (f, ǫ) for some
f ∈ FM ∗}
LN F A = {L : ∃N F A M, L[M ] = L}
04-28: NFA Examples
Create an NFA for the language
Give an NFA for the language L = All strings
over {0,1} that contain two pairs of adjacent 0’s
separated by an even number of symbols. So,
0100110011, 01100101100101, and 01001000
are in the language, but 0100100, 1011001,
and 0111011 are not in the language.
04-29: NFA Examples
Create an NFA for the language
Give an NFA for the language L = All strings
over {0,1} that contain two pairs of adjacent 0’s
separated by an even number of symbols. So,
0100110011, 01100101100101, and 01001000
are in the language, but 0100100, 1011001,
and 0111011 are not in the language.

0,1 0,1

0 0 0 0

0,1 0,1
04-30: NFA Examples
Create an NFA for the language
L = All strings over {a,b} that have an a as one
of the last 3 charaters in the string. So, a, baab,
bbbab, aabbaaabb ∈ L, but bb, baabbb,
bbabbbbb 6∈ L
04-31: NFA Examples
Create an NFA for the language
L = All strings over {a,b} that have an a as one
of the last 3 charaters in the string. So, a, baab,
bbbab, aabbaaabb ∈ L, but bb, baabbb,
bbabbbbb 6∈ L

a,b

a b b

You might also like