Download presentation
Presentation is loading. Please wait.
Published byLudvig Gustavsen Modified over 5 years ago
1
NFA to DFA conversion and regular expressions
The Chinese University of Hong Kong Fall 2010 CSCI 3130: Automata theory and formal languages NFA to DFA conversion and regular expressions Andrej Bogdanov
2
NFAs are as powerful as DFAs
Obviously, an NFA can do everything a DFA can do How about the other way? YES If L is the language of some NFA, then it is also the language of some DFA.
3
Converting NFAs into DFAs
We will show a general way to convert every NFA into an equivalent DFA Step 1: Simplify NFA by eliminating e-transitions Step 2: Convert simplified NFA (without es) We do this first
4
NFA to DFA conversion intuition
0, 1 NFA: 1 q0 q1 q2 DFA: 1 q0 or q1 q0 or q2 q0 1 1
5
NFA to DFA conversion intuition
0, 1 NFA: 1 q0 q1 q2 DFA: 1 {q0, q1} {q0, q2} q0 1 1
6
General method NFA DFA states q0, q1, …, qn
Æ, {q0}, {q1}, {q0,q1}, …, {q0,…,qn} one for each subset of states in the NFA initial state q0 {q0} transitions d d’({qi1,…,qik}, a) = d(qi1, a) ∪…∪ d(qik, a) accepting states F Í Q F’ = {S: S contains some state in F}
7
Converting via the general method
0, 1 NFA: 1 q0 q1 q2 0, 1 1 DFA: {q0, q1} {q0, q2} {q0, q1, q2} {q1, q2} {q0} {q1} {q2} Æ
8
Converting via the general method
After eliminating the dead states and transitions, we end up with the same picture 1 1 {q0} {q0, q1} 1 0, 1 1 1 Æ {q1} {q0, q2} {q0, q1, q2} 0, 1 {q2} {q1, q2} 1
9
Why the method works At the end, the DFA accepts when it is in a state that contains some accepting state of NFA So the DFA accepts only when the NFA accepts too After reading n symbols, the DFA is in state {qi1,…,qik} if and only if the NFA is in one of the states qi1,…,qik
10
Converting NFAs into DFAs
We will show a general way to convert every NFA into an equivalent DFA Step 1: Simplify NFA by eliminating e-transitions Step 2: Convert simplified NFA (without es)
11
Eliminating e-transitions
, 1 eNFA: q0 q1 q2 Transition table of corresponding NFA: inputs 1 q0 {q0, q1, q2} {q1, q2} q1 {q0, q1, q2} Æ states q2 Æ Æ Accepting states of NFA: q0, q1, q2
12
Eliminating e-transitions
, 1 NFA: q0 q1 q2 0, 1 NFA without es: q0 q1 q2 0, 1
13
Eliminating e-transitions: General method
For every pair of states qi, qj and every symbol a Î S, replace every path like For every accept state qf, make accepting all states connected to it via es: q4 qi q5 a e qi q5 q2 q0 qj e a qi a qi qj a e q9 q7 q3 qf
14
Eliminating e-transitions
, 1 NFA: q0 q1 q2 , 1 NFA without es: q0 q1 q2 , 1
15
Regular expressions
16
String concatenation s = 011 t = 101 st = 011101 ts = 101011
ss = sst = s = a1…an st = a1…anb1…bm t = b1…bm
17
Operations on languages
The concatenation of languages L1 and L2 is The n-th power of Ln is The union of L1 and L2 is L1L2 = {st: s L1, t L2} Ln = {s1s2...sn: s1, s2, ..., sn L} L1 L2 = {s: s L1 or s L2}
18
Example L1 = {0, 01} L2 = {e, 1, 11, 111, …} any number of 1s L1L2
= {0, 01, 011, 0111, …} {01, 011, 0111, …} = {0, 01, 011, 0111, …} 0 followed by any number of 1s L12 = {00, 001, 010, 0101} L22 = L2 L2n = L2 (n ≥ 1) L1 L2 = {0, 01, e, 1, 11, 111, ...}
19
Operations on languages
The star of L are all strings made up of zero or more chunks from L: This is always infinite, and always contains e Example: L1 = {01, 0}, L2 = {e, 1, 11, 111, …}. What is L1* and L2*? L* = L0 L1 L2 …
20
Example L1 = {0, 01} L2 = {e, 1, 11, 111, …} any number of 1s L12
= {00, 001, 010, 0101} L22 = L2 L2n = L2 (n ≥ 1) L1*: is in L1* is not in L1* L2* = L20 L21 L22 … is not in L1* = {e} L21 L22 … = L2 L1* are all strings that start with 0 and do not contain consecutive 1s L2* = L2
21
Constructing languages with operations
Let’s say S = {0, 1} We can construct languages by starting with simple ones, like {0}, {1} and combining them {0}({0}{1})* 0(0+1)* all strings that start with 0 ({0}{1}*)({1}{0}*) 01*+10* 0 followed by any number of 1s, or 1 followed by any number of 0s
22
Regular expressions A regular expression over S is an expression formed using the following rules: The symbol Æ is a regular expression The symbol e is a regular expression For every a S, the symbol a is a regular expression If R and S are regular expressions, so are R+S, RS and R*. A language is regular if it is represented by a regular expression
23
Examples S = {0, 1} 01* = 0(1*) = {0, 01, 011, 0111, …}
0 followed by any number of 1s (01*)(01) = {001, 0101, 01101, , …} 0 followed by any number of 1s and then 01
24
Examples 0+1 = {0, 1} strings of length 1 (0+1)*
any string (0+1)*010 any string that ends in 010 (0+1)*01(0+1)* any string that contatins the pattern 01
25
Examples ((0+1)(0+1))*+((0+1)(0+1)(0+1))*
all strings whose length is even or a mutliple of 3 = strings of length 0, 2, 3, 4, 6, 8, 9, 10, 12, ... ((0+1)(0+1))* strings of even length (0+1)(0+1) strings of length 2 ((0+1)(0+1)(0+1))* strings of length a multiple of 3 (0+1)(0+1)(0+1) strings of length 3
26
Examples ((0+1)(0+1)+(0+1)(0+1)(0+1))*
strings that can be broken in blocks, where each block has length 2 or 3 (0+1)(0+1)+(0+1)(0+1)(0+1) strings of length 2 or 3 (0+1)(0+1) strings of length 2 (0+1)(0+1)(0+1) strings of length 3
27
Examples ((0+1)(0+1)+(0+1)(0+1)(0+1))*
strings that can be broken in blocks, where each block has length 2 or 3 e ✓ 1 ✗ 10 ✓ 011 ✓ 00110 ✓ ✓ this includes all strings except those of length 1 ((0+1)(0+1)+(0+1)(0+1)(0+1))* = all strings except 0 and 1
28
Examples (1+01+001)*(+0+00) ends in at most two 0s
there can be at most two 0s between consecutive 1s there are never three consecutive 0s Guess: ( )*(+0+00) = {x: x does not contain 000} e 00
29
Examples Write a regular expression for all strings with two consecutive 0s. S = {0, 1} (anything) 00 (anything else) (0+1)*00(0+1)*
30
Examples Write a regular expression for all strings that do not contain two consecutive 0s. S = {0, 1} blocks ending in 1 last block (1 + 01) ... at most one 0 in every block ending in 1 (e + 0) ... and at most one 0 in the last block (1 + 01)*(e + 0)
31
Examples Write a regular expression for all strings with an even number of 0s. S = {0, 1} even number of zeros = (two zeros)* two zeros = 1*01*01* (1*01*01*)*
32
Main theorem for regular languages
A language is regular if and only if it is the language of some DFA NFA regular expression DFA regular languages
33
Road map regular expression NFA NFA without e DFA
34
Examples: regular expression → NFA
q0 q1 q0 q1 q2 q3 q4 q5 1 M2 q0’ q1’ M2
35
Regular expressions A regular expression over S is an expression formed using the following rules: The symbol Æ is a regular expression The symbol e is a regular expression For every a S, the symbol a is a regular expression If R and S are regular expressions, so are R+S, RS and R*.
36
General method Æ e regular expr NFA q0 q0 a q0 q1 symbol a RS q0
MR MS q1
37
General method continued
regular expr NFA MR R + S q0 q1 MS R* q0 MR q1
38
Road map regular expression NFA NFA without e DFA
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.