Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 FORMAL LANGUAGES, AUTOMATA AND COMPUTABILITY 15-453 (For next time: Read Chapter 1.3 of the book)

Similar presentations


Presentation on theme: "1 FORMAL LANGUAGES, AUTOMATA AND COMPUTABILITY 15-453 (For next time: Read Chapter 1.3 of the book)"— Presentation transcript:

1 1 FORMAL LANGUAGES, AUTOMATA AND COMPUTABILITY 15-453 (For next time: Read Chapter 1.3 of the book)

2 2 1 0 0 q1q1 q2q2 q3q3 q4q4 ε

3 3 Q is the set of states Σ is the alphabet  : Q  Σ ε → 2 Q is the transition function Q 0  Q is the set of start states F  Q is the set of accept states A non-deterministic finite automaton (NFA) is a 5-tuple N = (Q, Σ, , Q 0, F) 2 Q is the set of subsets of Q and Σ ε = Σ  {ε}

4 4 1 0 0 q1q1 q2q2 q3q3 q4q4 N = (Q, Σ, , Q 0, F) Q = {q 1, q 2, q 3, q 4 } Σ = {0,1} Q 0 = {q 1, q 2 } F = {q 4 }  Q ε 0 1ε q1q1 q2q2 q3q3 q4q4

5 5 1 0 0 q1q1 q2q2 q3q3 q4q4 N = (Q, Σ, , Q 0, F) Q = {q 1, q 2, q 3, q 4 } Σ = {0,1} Q 0 = {q 1, q 2 } F = {q 4 }  Q 0 1ε q1q1 {q 3 }  q2q2  {q 4 }  q3q3  {q2}{q2} q4q4  ε

6 6 1 0 0 q1q1 q2q2 q3q3 q4q4 N = (Q, Σ, , Q 0, F) Q = {q 1, q 2, q 3, q 4 } Σ = {0,1} Q 0 = {q 1, q 2 } F = {q 4 }  Q ε, 0 0 1ε q1q1 {q 3 }  q2q2  {q 4 }  q3q3 {q 2,q 4 }  {q2}{q2} q4q4  00  L(N)? 01  L(N)?

7 7 Let w  Σ* and suppose w can be written as w 1... w n where w i  Σ ε (ε is viewed as representing the empty string ) Then N accepts w if there are r 0, r 1,..., r n  Q such that 1.r 0  Q 0 2.r i+1   (r i, w i+1 ) for i = 0,..., n-1, and 3.r n  F A language L is recognized by an NFA N if L = L (N). L(N) = the language of machine N = set of all strings machine N accepts

8 8 1 0 0 q1q1 q2q2 q3q3 q4q4 N = (Q, Σ, , Q 0, F) Q = {q 1, q 2, q 3, q 4 } Σ = {0,1} Q 0 = {q 1, q 2 } F = {q 4 }  Q ε, 0 0 1ε q1q1 {q 3 }  q2q2  {q 4 }  q3q3 {q 2,q 4 }  {q2}{q2} q4q4  00  L(N)? 01  L(N)?

9 9 Q = 2 Q  : Q  Σ → Q  (R,  ) =  ε(  (r,  ) ) rRrR q 0 = ε(Q 0 ) F = { R  Q | f  R for some f  F } FROM NFA TO DFA Input: N = (Q, Σ, , Q 0, F) Output: M = (Q, Σ, , q 0, F) * For R  Q, the ε-closure of R, ε(R) = {q that can be reached from some r  R by traveling along zero or more ε arrows}, *

10 10 a a, b a 2 3 1 b ε Given: NFA N = ( {1,2,3}, {a.b}, , {1}, {1} ) Construct: equivalent DFA M ε({1}) = {1,3} N

11 11 a a, b a 2 3 1 b ε Given: NFA N = ( {1,2,3}, {a,b}, , {1}, {1} ) Construct: equivalent DFA M ε({1}) = {1,3} N N = ( Q, Σ, , Q 0, F ) = (Q, Σ, , q 0, F)  ab  {1}  {2} {2,3} {3} {1,3}  {1,2} {2,3} {1,3} {2} {2,3} {1,2,3} {3} {1,2,3} {2,3} q 0 =

12 12 a a, b a 2 3 1 b ε Given: NFA N = ( {1,2,3}, {a,b}, , {1}, {1} ) Construct: equivalent DFA M ε({1}) = {1,3} N N = ( Q, Σ, , Q 0, F ) = (Q, Σ, , q 0, F)  ab  {1}  {2} {2,3} {3} {1,3}  {1,2} {2,3} {1,3} {2} {2,3} {1,2,3} {3} {1,2,3} {2,3} q 0 =

13 13 REGULAR LANGUAGES CLOSED UNDER STAR Let L be a regular language and M be a DFA for L We construct an NFA N that recognizes L* 0 0,1 0 0 1 1 1 ε ε ε

14 14 Formally: Input: M = (Q, Σ, , q 1, F) Output: N = (Q, Σ, , {q 0 }, F) Q = Q  {q 0 } F = F  {q 0 }  (q,a) = {  (q,a)} {q1}{q1} {q1}{q1}  if q  Q and a ≠ ε if q  F and a = ε if q = q 0 and a = ε if q = q 0 and a ≠ ε  else DFA NFA

15 15 Show: L (N) = L* 1.L (N)  L* 2. L (N)  L*

16 16 1. L (N)  L* Assume w = w 1 …w k is in L*, where w 1,…,w k  L We show N accepts w by induction on k Base Cases: k = 0 k = 1 Inductive Step: Assume N accepts all strings v = v 1 …v k  L*, v i  L and let u = u 1 …u k u k+1  L*, v j  L Since N accepts u 1 …u k (by induction) and M accepts u k+1, N must accept u (w = ε) (w  L)

17 17 Assume w is accepted by N, we show w  L* If w = ε, then w  L* If w ≠ ε accept ε ε  L* 2. L (N)  L* By induction

18 18 REGULAR LANGUAGES ARE CLOSED UNDER REGULAR OPERATIONS Union: A  B = { w | w  A or w  B } Intersection: A  B = { w | w  A and w  B } Negation:  A = { w  Σ* | w  A } Reverse: A R = { w 1 …w k | w k …w 1  A } Concatenation: A  B = { vw | v  A and w  B } Star: A* = { w 1 …w k | k ≥ 0 and each w i  A }

19 19 The PUMPING LEMMA and REGULAR EXPRESSIONS

20 20 SOME LANGUAGES ARE NOT REGULAR B = {0 n 1 n | n ≥ 0} is NOT regular!

21 21 WHICH OF THESE ARE REGULAR C = { w | w has equal number of 1s and 0s} D = { w | w has equal number of occurrences of 01 and 10} NOT REGULAR REGULAR!!!

22 22 THE PUMPING LEMMA Let L be a regular language with |L| =  Then there exists a positive integer P such that 1. |y| > 0 2. |xy| ≤ P 3. xy i z  L for any i ≥ 0 if w  L and |w| ≥ P then w = xyz, where:

23 23 Let P be the number of states in M Assume w  L is such that |w| ≥ P q0q0 qiqi qjqj q |w| … There must be j > i such that q i = q j Let M be a DFA that recognizes L 1. |y| > 0 2. |xy| ≤ P 3. xy i z  L for any i ≥ 0 We show w = xyz x

24 24 USING THE PUMPING LEMMA Use the pumping lemma to prove that B = {0 n 1 n | n ≥ 0} is not regular Hint: Assume B is regular Let B = L(M), for DFA M, and let P be larger than the number of states in M Try pumping s = 0 P 1 P

25 25 USING THE PUMPING LEMMA Use the pumping lemma to prove that B = {0 n 1 n | n ≥ 0} is not regular Hint: Assume B is regular, and try pumping s = 0 P 1 P If B is regular, s can be split into s = xyz, where for any i ≥ 0, xy i z is also in B If y is all 0s: xyyz has more 0s than 1s If y is all 1s: xyyz has more 1s than 0s If y has both 1s and 0s: xyyz will have some 1s before some 0s

26 26 Use the pumping lemma to prove that C = { w | w has an equal number of 0s and 1s} is not regular Hint: Try pumping s = 0 P 1 P If C is regular, s can be split into s = xyz, where for any i ≥ 0, xy i z is also in C and |xy| ≤ P

27 27 WHAT DOES D LOOK LIKE? (0(0  1)*0)  (1(0  1)*1)  1  0  ε D = { w | w has equal number of occurrences of 01 and 10} = { w | w = 1, w = 0, w = ε or w starts with a 0 and ends with a 0 or w starts with a 1 and ends with a 1 }

28 28 REGULAR EXPRESSIONS  is a regular expression representing {  } ε is a regular expression representing {ε}  is a regular expression representing  If R 1 and R 2 are regular expressions representing L 1 and L 2 then: (R 1 R 2 ) represents L 1  L 2 (R 1  R 2 ) represents L 1  L 2 (R 1 )* represents L 1 *

29 29 PRECEDENCE Tightest Star (“*”) Concatenation (“.”, “”) LoosestUnion (“  ”, “+”, “|”)

30 30 R2R2 R1*R1*( EXAMPLE R 1 *R 2  R 3 = ())  R3R3

31 31 { w | w has exactly a single 1 } 0*10*

32 32 What language does  * represent? {ε}{ε}

33 33 { w | w has length ≥ 3 and its 3rd symbol is 0 } 000(0  1)*  010(0  1)*  100(0  1)*  110(0  1)* = (0  1)(0  1)0(0  1)*

34 34 { w | every odd position of w is a 1 } 1((0  1)1)*(0  1  ε)  ε Also (1(0  1))*(1  ε)

35 35 EQUIVALENCE L can be represented by a regexp  L is a regular language

36 36 L can be represented by a regexp  L is a regular language Given regular expression R, we show there exists NFA N such that R represents L(N) Induction on the length of R:

37 37 Given regular expression R, we show there exists NFA N such that R represents L(N) Induction on the length of R: Base Cases (R has length 1): R =  (matches a single symbol)  R = ε (matches the empty string) R =  (matches nothing)

38 38 Inductive Step: Assume R has length k > 1 and that any regular expression of length < k represents a language that can be recognized by an NFA Three possibilities for R: R = R 1  R 2 R = R 1 R 2 R = (R 1 )* (Union Theorem!)

39 39 L can be represented by a regexp  L is a regular language Have Shown

40 40 Transform (1(0  1))* to an NFA 1ε1,0 ε

41 41 L can be represented by a regexp  L is a regular language 

42 42 L can be represented by a regexp  L is a regular language  Proof idea: Transform an NFA for L into a regular expression by removing states and re- labeling the arrows with regular expressions

43 43 NFA ε ε ε ε ε Add unique and distinct start and accept states While machine has more than 2 states: Pick an internal state, rip it out and re-label the arrows with regexps, to account for the missing state 0 1 0

44 44 NFA ε ε ε ε ε While machine has more than 2 states: Pick an internal state, rip it out and re-label the arrows with regexps, to account for the missing state 01*0

45 45 q1q1 b a ε q2q2 a,b ε q0q0 q3q3 R(q 0,q 3 ) = (a*b)(a  b)*

46 46 q2q2 a,b ε a*b q0q0 q3q3 R(q 0,q 3 ) = (a*b)(a  b)*

47 47 (a*b)(a  b)* q0q0 q3q3 R(q 0,q 3 ) = (a*b)(a  b)*

48 48 q3q3 q2q2 b a b q1q1 b a a ε ε ε bb

49 49 q2q2 b a b q1q1 a a ε ε ε bb a  ba b

50 50 bb  (a  ba)b*a a  ba q2q2 b q1q1 a ε ε bb b b  (a  ba)b* = R(q 1,q 1 ) (bb  (a  ba)b*a)* (b  (a  ba)b*)

51 51 Convert the NFA to a regular expression q3q3 q2q2 b b q1q1 a a, b ε ε ε b (a  b)b*b bb*b (a  b)b*b(bb*b)* (a  b)b*b(bb*b)*a

52 52 ((a  b)b*b(bb*b)*a)*  ((a  b)b*b(bb*b)*a)*(a  b)b*b(bb*b)*

53 53 Formally: Run CONVERT(G): (return regexp) If #states = 2 return the expression on the arrow going from q start to q accept Add q start and q accept to create G If #states > 2

54 54 Formally:Add q start and q accept to create G If #states > 2 select q rip  Q different from q start and q accept define Q = Q – {q rip } define R as: R(q i,q j ) = R(q i,q rip )R(q rip,q rip )*R(q rip,q j )  R(q i,q j ) return CONVERT(G) Run CONVERT(G): (return regexp) } Defines: G (GNFA)

55 55 CONVERT(G) is “equivalent” to G Proof by induction on k (number of states in G) Base Case: k = 2 Inductive Step: Assume claim is true for k-1 states We first note that G and G are “equivalent” But, by the induction hypothesis, G is “equivalent” to CONVERT(G) And CONVERT(G) is equivalent to CONVERT(G ) QED

56 56 ε

57 57 DFA NFA Regular Language Regular Expression DEF

58 58 Read Chapter 1.3 of the book for next time


Download ppt "1 FORMAL LANGUAGES, AUTOMATA AND COMPUTABILITY 15-453 (For next time: Read Chapter 1.3 of the book)"

Similar presentations


Ads by Google