Es sei die akzeptierende Turing-Maschine
´M = ({a,b,c}, Z, z_0, {q_1, q_2}, delta, {q_1})´
mit
´Z = {z_0, z_1, z_2, z_3, z_4, z_5, z_a, z_a^', z_b, z_b^', z_E, z_E^' , z_(kE), z_(kE)^', q_1, q_2}´
und
´bb delta´ | ´z_0´ | ´z_1´ | ´z_2´ | ´z_3´ | ´z_4´ | ´z_5´ |
---|---|---|---|---|---|---|
´∗´ | ´(q_2,∗,N)´ | ´(q_2,∗,N)´ | ´(z_3,∗,L)´ | ´(z_4,∗,R)´ | ´(q_2,∗,R)´ | ´(z_E,∗,L)´ |
´a´ | ´(z_1,a,R)´ | ´(z_1,a,R)´ | ´(z_2,a,R)´ | ´(z_3,a,L)´ | ´(z_a,∗,R)´ | ´(z_(kE),a,L)´ |
´b´ | ´(z_1,b,R)´ | ´(z_1,b,R)´ | ´(z_2,b,R)´ | ´(z_3,b,L)´ | ´(z_b,∗,R)´ | ´(z_(kE),b,L)´ |
´c´ | ´(q_2,c,R)´ | ´(z_2,c,R)´ | ´(q_2,c,N)´ | ´(z_3,c,L)´ | ´(q_2,c,R)´ | ´(q_2,c,N)´ |
´bb delta´ | ´z_a´ | ´z_a^'´ | ´z_b´ | ´z_b^'´ |
---|---|---|---|---|
´∗´ | ´(q_2,∗,N)´ | ´(z_a^',∗,R)´ | ´(q_2,∗,N)´ | ´(z_b^',∗,R)´ |
´a´ | ´(z_a,a,R)´ | ´(z_5,∗,R)´ | ´(z_b,a,R)´ | ´(q_2,a,N)´ |
´b´ | ´(z_a,b,R)´ | ´(q_2,b,N)´ | ´(z_b,b,R)´ | ´(z_5,∗,R)´ |
´c´ | ´(z_a^',c,R)´ | ´(q_2,c,N)´ | ´(z_b^',b,R)´ | ´(q_2,c,N)´ |
´bb delta´ | ´z_E´ | ´z_E^'´ | ´z_(kE)´ | ´z_(kE)^'´ |
---|---|---|---|---|
´∗´ | ´(z_E,∗,L)´ | ´(q_1,∗,N)´ | ´(z_(kE),∗,L)´ | ´(q_2,∗,N)´ |
´a´ | ´(z_E,a,L)´ | ´(q_2,∗,N)´ | ´(z_(kE),a,L)´ | ´(z_3,a,L)´ |
´b´ | ´(z_E,b,L)´ | ´(q_2,∗,N)´ | ´(z_(kE),b,L)´ | ´(z_3,a,L)´ |
´c´ | ´(z_E^',c,L)´ | ´(q_2,∗,N)´ | ´(z_(kE)^',c,L)´ | ´(q_2,c,N)´ |
gegeben.
Bestimme folgende Mengen:
- Die von ´M´ akzeptierten Wörter ´T(M)´
- Die Wörter, auf denen ´M´ stoppt, aber nicht akzeptiert
- Die Wörter, auf denen ´M´ nicht stoppt
Mittels der Zustände ´z_0, z_1, z_2´ läuft die Maschine von links nach rechts über das Wort und prüft dabei, dass auf dem Band ein Wort ´xcy´ mit ´x in {a,b}^+´ und ´y in {a,b}^(**)´ steht (durch ´z_0´ und den Übergang zu ´z_1´ wird gesichert, dass am Anfang ein ´a´ oder ´b´ steht; durch den Übergang von ´z_1´ zu ´z_2´ wird ein ´c´ im Wort gesichert; ´z_2´ sichert, dass nach ´c´ nur noch ´a´s und ´b´s kommen). Entsprechend ´z_3´ erfolgt ein Rücklauf an den Wortanfang. Im Zustand ´z_4´ steht der Kopf nun über dem ersten Buchstaben, sagen wir ´x´. Dieser wird gelöscht und sich in ´z_x´ gemerkt. Nun erfolgt ein Lauf nach rechts - beim Lesen von c ein Wechsel in ´z_x^'´ - bis der erste von ´**´ verschiedene Buchstabe hinter ´c´ gefunden ist. Wird ein solcher gefunden, so wird getestet, ob es ´x´ ist; im negativen Fall wird nicht akzeptiert, im positiven Fall wird der Buchstabe auch gelöscht und ein Schritt nach rechts gegangen. Mittels ´z_5´ wird festgestellt, ob der gelöschte Buchstabe das Wortende war (Zustand ´z_E´ = Ende) oder nicht (Zustand ´z_(kE)´ = kein Ende). Nun erfolgt ein Rücklauf, wobei am ´c´ in ´z_E^'´ bzw. ´z_(kE)^'´ übergegangen wird. War das Wortende schon erreicht (´z_E´ und ´z_E^'´), wird akzeptiert, falls vor dem ´c´ kein ´a´ oder ´b´ steht; ansonsten wird abgelehnt. War das Wortende noch nicht erreicht, wird endlos nach links gegangen, falls vor dem ´c´ nichts mehr steht, ansonsten wird der Prozess (mittels ´z_3´ und ´z_4´) erneut eingeleitet.
- ´T(M) = {xcx | x in {a,b}^+}´
- ´{xyzcxy'z' | x in {a, b}^(**),´´y, y' in {a, b}, y != y', z, z' in {a, b}^(**)} uu ´´{xycx | x,y in {a,b}^+} uu ´´{a,b}^(**) uu ´´{cw | w in {a,b,c}^(**) | ´´{w | w in {a,b,c}^(**), ´´|w|_c > 1}´
- ´{xcxy | x in {a,b}^(**), y in {a,b}^+}´
HPI, 2014-04-01, Theoretische Informatik 2, Aufgabe 1
2014-07-21 11:02:34 UTC
2014-07-23 19:09:38 UTC