380 likes | 400 Views
Learn how to convert NFAs to DFAs and manipulate regular expressions to construct languages. Explore the power of automata theory!
E N D
Fall 2010 The Chinese University of Hong Kong CSCI 3130: Automata theory and formal languages NFA to DFA conversionand regular expressions Andrej Bogdanov http://www.cse.cuhk.edu.hk/~andrejb/csc3130
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, thenit is also the language of some DFA.
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
NFA to DFA conversion intuition 0, 1 1 0 NFA: q0 q1 q2 0 0 0 1 q0 or q1 q0 or q2 DFA: q0 1 1
NFA to DFA conversion intuition 0, 1 1 0 NFA: q0 q1 q2 0 0 0 1 {q0, q1} {q0, q2} DFA: q0 1 1
Converting via the general method 0, 1 1 0 NFA: q0 q1 q2 0 1 DFA: 1 {q0} {q0, q1} 1 0, 1 0 0 1 0 1 Æ {q0, q2} {q0, q1, q2} {q1} 0 0, 1 0 {q2} {q1, q2} 1
Converting via the general method After eliminating the dead states and transitions, we end up with the same picture 0 1 1 {q0} {q0, q1} 1 0, 1 0 0 1 0 1 Æ {q0, q2} {q0, q1, q2} {q1} 0 0, 1 0 {q2} {q1, q2} 1
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
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)
Eliminating e-transitions 0 , 1 q0 q1 q2 eNFA: 0 Transition table of corresponding NFA: inputs 0 1 q0 {q1, q2} {q0, q1, q2} q1 {q0, q1, q2} Æ states q2 Æ Æ q0, q1, q2 Accepting states of NFA:
Eliminating e-transitions 0 , 1 q0 q1 q2 NFA: 0 0 0 0, 1 0 q0 q1 q2 NFA without es: 0 0, 1
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 e a qi e e e a qi q5 q2 q0 qj e q5 a a qi qj qi e e e q9 q7 q3 qf
Eliminating e-transitions 0 , 1 q0 q1 q2 NFA: 0 0 0 , 1 0 0 q0 q1 q2 NFA without es: 0 0 , 1
String concatenation s = 011 t = 101 st = 011101 ts = 101011 ss = 011011 sst = 011011101 s = a1…an st = a1…anb1…bm t = b1…bm
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: sL1, tL2} Ln = {s1s2...sn: s1, s2, ..., snL} L1 L2 = {s: sL1orsL2}
Example L1 = {0, 01} L2 = {e, 1, 11, 111, …} any number of 1s = {0, 01, 011, 0111, …} {01, 011, 0111, …} L1L2 = {0, 01, 011, 0111, …} 0 followed by any number of 1s L12 = {00, 001, 010, 0101} L22 = L2 (n ≥ 1) L2n = L2 L1 L2 = {0, 01, e,1, 11, 111, ...}
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 isL1* and L2*? L* = L0L1L2 …
Example L1 = {0, 01} L2 = {e, 1, 11, 111, …} any number of 1s L12 = {00, 001, 010, 0101} L22 = L2 (n ≥ 1) L2n = L2 L1*: 00100001 is in L1* is not in L1* 00110001 L2* = L20L21L22 … is not in L1* 10010001 = {e}L21L22 … = L2 L1*are all strings that start with 0 and do not contain consecutive 1s L2*=L2
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, or1 followed by any number of 0s
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
Examples S = {0, 1} 01* = 0(1*) = {0, 01, 011, 0111, …} 0 followed by any number of 1s (01*)(01) = {001, 0101, 01101, 011101, …} 0 followed by any number of 1s and then 01
Examples strings of length 1 0+1 = {0, 1} (0+1)* = {e, 0, 1, 00, 01, 10, 11, …} any string (0+1)*010 any string that ends in 010 (0+1)*01(0+1)* any string that contatins the pattern 01
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 oflength a multiple of 3 (0+1)(0+1)(0+1) strings of length 3
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
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 011010110 ✗ ✓ ✓ ✓ ✓ 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
Examples (1+01+001)*(+0+00) ends in at most two 0s there can be at most two 0s betweenconsecutive 1s there are never three consecutive 0s Guess: (1+01+001)*(+0+00) = {x: x does not contain 000} 0110010110 e 00 0010010
Examples • Write a regular expression forall strings with two consecutive 0s. S = {0, 1} (anything) 00 (anything else) (0+1)*00(0+1)*
Examples • Write a regular expression forall strings that do not contain two consecutive 0s. S = {0, 1} 0110101101010 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)
Examples • Write a regular expression forall strings with an even number of 0s. S = {0, 1} even number of zeros = (two zeros)* two zeros = 1*01*01* (1*01*01*)*
Main theorem for regular languages A language is regular if and only if it is the language of some DFA NFA regularexpression DFA regular languages
Road map regularexpression NFA NFAwithout e DFA
0 q0 q1 0 q2 q3 q0 q1 q0’ q1’ M2 1 q4 q5 Examples: regular expression → NFA • R1 = 0 • R2 = 0 + 1 • R3 = (0 + 1)* M2
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*.
General method NFA regular expr Æ q0 q0 e a q0 q1 symbol a RS q0 q1 MS MR
General method continued NFA regular expr MR q0 q1 R + S MS R* q0 q1 MR
Road map regularexpression NFA NFAwithout e DFA