1 / 38

NFA to DFA Conversion and Regular Expressions

Learn how to convert NFAs to DFAs and manipulate regular expressions to construct languages. Explore the power of automata theory!

Download Presentation

NFA to DFA Conversion and Regular Expressions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  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, thenit 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 1 0 NFA: q0 q1 q2 0 0 0 1 q0 or q1 q0 or q2 DFA: q0 1 1

  5. 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

  6. General method

  7. 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

  8. 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

  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 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:

  12. Eliminating e-transitions 0  , 1 q0 q1 q2 NFA: 0 0 0 0, 1 0 q0 q1 q2 NFA without es: 0 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 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

  14. Eliminating e-transitions 0  , 1 q0 q1 q2 NFA: 0 0 0 , 1 0 0 q0 q1 q2 NFA without es: 0 0 , 1

  15. Regular expressions

  16. String concatenation s = 011 t = 101 st = 011101 ts = 101011 ss = 011011 sst = 011011101 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L1orsL2}

  18. 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, ...}

  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 isL1* 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 (n ≥ 1) L2n = L2 L1*: 00100001 is in L1* is not in L1* 00110001 L2* = L20L21L22 … is not in L1* 10010001 = {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, or1 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, 011101, …} 0 followed by any number of 1s and then 01

  24. 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

  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 oflength 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 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

  28. 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

  29. Examples • Write a regular expression forall strings with two consecutive 0s. S = {0, 1} (anything) 00 (anything else) (0+1)*00(0+1)*

  30. 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)

  31. 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*)*

  32. 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

  33. Road map   regularexpression NFA NFAwithout e DFA

  34. 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

  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 NFA regular expr Æ q0 q0 e a q0 q1 symbol a    RS q0 q1 MS MR

  37. General method continued NFA regular expr MR   q0 q1 R + S   MS     R* q0 q1 MR

  38. Road map    regularexpression NFA NFAwithout e DFA

More Related