(a + (a + b)( + aa)+ + b) = (a (( + ) + b) + aa)+ = (a [x+ + = + b)( + aa)* x*] = (a [(x + = (x*y*)* = (x* + b)(*(aa)*)* y)* + y*)*] = (a + b)((aa)*)* = (a [(x*)* = + b)(aa)* x*] Find an FA that accepts all strings over {a, that or end with or b} aa bb. RE that accepts all strings that with or Step 1: begin aa bb: (aa + bb)(a + b)* Step 2: RE that accepts all strings that with or end aa bb: (a + b)*(aa + bb) RE that accepts all strings that with or Step 3: begin or end aa bb: (aa + (a + bb)(a + b)* + b)*(aa + bb) Step 4: NFA for (aa + bb)(a + b)*: Step 5: NFA for (a + b)*(aa + bb): Step 6: -NFA for (aa + (a + bb)(a + b)* + b)*(aa + bb): Equivalent NFA: Draw the transition diagram of the DFA accepting the languages over {0, 1} The set of all strings that has at least two 0’s. The set of all strings that does not end in 0010. Step 1: DFA that accepts strings that with 0010: end DFA that accepts strings that with 0010: Step 2: does not end
(a + b)( + aa)+ + (a + b) = (a + b) (( + aa)+ + ) = (a + b)( + aa)* [x+ + = x*] = (a + b)(*(aa)*)* [(x + y)* = (x*y*)* = (x* + y*)*] = (a + b)((aa)*)* = (a + b)(aa)* [(x*)* = x*] Find an FA that accepts all strings over {a, b} that or end with aa or bb. Step 1: RE that accepts all strings that begin with aa or bb: (aa + bb)(a + b)* Step 2: RE that accepts all strings that end with aa or bb: (a + b)*(aa + bb) Step 3: RE that accepts all strings that begin or end with aa or bb: (aa + bb)(a + b)* + (a + b)*(aa + bb) Step 4: NFA for (aa + bb)(a + b)*: Step 5: NFA for (a + b)*(aa + bb): Step 6: -NFA for (aa + bb)(a + b)* + (a + b)*(aa + bb): Equivalent NFA: Draw the transition diagram of the DFA accepting the languages over {0, 1} The set of all strings that has at least two 0’s. The set of all strings that does not end in 0010. Step 1: DFA that accepts strings that end with 0010: Step 2: DFA that accepts strings that does not end with 0010:
Automata_Study_Guide.docx