a+ba+b q0q0 q1q1 q4q4 q2q2 q3q3 abb Motsvarande RE = ( a+b )* abb
DFA för ( a + b ) * abb s0s0 a s1s1 b s3s3 b s4s4 s2s2 a b b a a a b
Minimering av DFA s0s0 a s1s1 b s3s3 b s4s4 s2s2 a b b a a a b s 0, s 2 a s1s1 b s3s3 b s4s4 b a a a b sluttillstån d
DFA Minimization a ( b + c )* The subset construction q0q0 q1q1 a q4q4 q5q5 b q6q6 q7q7 c q3q3 q8q8 q2q2 q9q9 s3s3 s2s2 s0s0 s1s1 c b a b b c c Final states
Then, apply the minimization algorithm to produce the minimal DFA s3s3 s2s2 s0s0 s1s1 c b a b b c c s0s0 s1s1 a b + c final states
AB C D E
0 q
q0q0 q2q2 q1q1 a a b b b a
q0q0 q2q2 q1q1 a a b b b a
123456
Ratio(x,2)
Greater?
Sipser 2.10 p. 105
AB C D E
AB C D E
0 q
q0q0 q2q2 q1q1 a a b b b a
q0q0 q2q2 q1q1 a a b b b a
123456
Ratio(x,2)
Greater?
AB C D E
0 q
q0q0 q2q2 q1q1 a a b b b a
q0q0 q2q2 q1q1 a a b b b a
123456
Ratio(x,2)
Greater?
Sipser 2.10 p. 105
q0q0 q1q1 q2q2 q3q3 q4q4 b/x,R #,R #/b,R x/#,R a,L b,L #,L a,R b,R a,R b,R a,R #,R Q = {q 0, q 1, q 2, q 3, q 4 } = {a, b, x, #} B = # = {a, b} q 0 is the start state F = {q 4 } baabab###….. Accepted? Input:
Turingmaskin 1 – vad gör den? q0q0 q1q1 q2q2 q3q3 q4q4 b/x,R #,R #/b,R x/#,R a,L b,L #,L a,R b,R a,R b,R a,R #,R Q = {q 0, q 1, q 2, q 3, q 4 } = {a, b, x, #} B = # = {a, b} q 0 is the start state F = {q 4 } baabab###….. Accepteras? Input:
Turingmaskin 1 Initialt har den tapepekaren på första tecknet i inputsträngen. Strängen baabab är input och den strängen accepteras. Vid acceptans har tapen utseendet #aa#a##bbb och tapepekaren pekar på första b:et efter ##. Det maskinen gör är ersätta alla b:n med #:n i orginalsträngen och ge alla b:n som output sist. (Jag tror att q2->q2 genom a,R skulle kunna tas bort samt att q2->q2 #,b/R skulle kunna ersättas med q2->q2 #,b/L. Men jag är inte 100% säker och maskinen fungerar ju fint som den är. )
q0q0 q1q1 q2q2 q3q3 q4q4 q5q5 q6q6 #,R a,R #,R c,R z,R a,R y,R a/x,Rb/y,R b,R z,R c/z,L a,L b,L c,L x,L y,L z,L x,R #,R y,R z,R b,R c,R #,R b,R c,R #,R Q = {q 0,...,q 6 } = {a,b,c,x,y,z,#} B = # = {a,b,c} start state = q 0 F = {q 6 } aabbcc###….. Accepteras? Turingmaskin 2 – vad gör den? Input:
q0q0 q1q1 q2q2 q3q3 q4q4 q5q5 q6q6 #,R a,R #,R c,R z,R a,R y,R a/x,Rb/y,R b,R z,R c/z,L a,L b,L c,L x,L y,L z,L x,R #,R y,R z,R b,R c,R #,R b,R c,R #,R Q = {q 0,...,q 6 } = {a,b,c,x,y,z,#} B = # = {a,b,c} start state = q 0 F = {q 6 } aabbcc###….. Accepteras? Turingmaskin – vad gör den? Input:
Turingmaskin 2 Initialt har maskinen tapepekaren på första tecknet i inputsträngen. Strängen aabbcc är input. Den accepteras och då har tapen utseendet xxyyzz## och tapepekaren pekar på andra #:et på högersidan. Den har matchat uttrycket a n b n c n där n 1.
Q = {q 0,...,q 9 } = {a,1,#} B = # = {1} start state = q 0 F = {q 9 } Turingmaskin 3 – vad gör den? q0q0 q1q1 q2q2 q3q3 1/a,R #,R 1/a,R 1,R q4q4 #,R #/1,L 1,L #,L q5q5 a/1,R#,L 1,L #,L q6q6 a/1,R q7q7 1 x #1 y ## q8q8 q9q9 1,R #,R 1,R Input: Output?
Turingmaskin 3 Initialt har maskinen tapepekaren på första tecknet i inputsträngen. Turingmaskinen tar in två tal på unär form x och y. Den beräknar funktionen F(x,y) = x y och skriver sin output sist så att tapen efter körd funktion har utseendet 1 x #1 y #o där 1 x #1 y är orginalinput och o output. Vid färdig körning pekar tapepekaren på första 1:an i outputen.
Aug tenta