340 likes | 444 Views
Fall 2009. The Chinese University of Hong Kong. CSC 3130: Automata theory and formal languages. NFA to DFA conversion and 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
E N D
Fall 2009 The Chinese University of Hong Kong CSC 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 • But can it do more? • Theorem NO! If a language L is accepted by some NFA, thenit is also accepted by some DFA.
Proof of theorem • 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
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 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
Proof of theorem • 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 state qi and every symbol aÎ S, replace every path out of qi like • For every accept state qf, make accepting all states connected to it via es: q4 e e e e a a qi q5 q2 q0 q5 qi e q5 a a qi q5 qi e e e q9 q7 q3 qf
Operations on strings • Given two strings s = a1…an and t = b1…bm, we define their concatenationst = a1…anb1…bm • We define snas the concatenation ss…sn times s = abb, t = cba st = abbcba s = 011 s3 = 011011011
Operations on languages • The concatenation of languages L1 and L2 is • Similarly, we write Ln for LL…L (n times) • The union of languages L1L2 is the set of all strings that are in L1 or in L2 • Example:L1 = {01, 0}, L2 = {e, 1, 11, 111, …}.What isL1L2 and L1L2? L1L2 = {st: s L1, t L2}
Operations on languages • The star (Kleene closure) 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 …
Constructing languages with operations • Let’s fix an alphabet, say S = {0, 1} • We can construct languages by starting with simple ones, like {0}, {1} and combining them {0}({0}{1})*all strings that start with 0 0(0+1)* ({0}{1}*)({1}{0}*) 01*+10*
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 divisible by 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 divisible by 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 • Theorem 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
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