Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ... Skript in PDF - Theoretische Informatik - Technische Universität ...

iti.cs.tu.bs.de
von iti.cs.tu.bs.de Mehr von diesem Publisher
18.09.2013 Aufrufe

80 KAPITEL 3. TURINGMASCHINEN ist. Wir können sie wie folgt als ” normale“ TM beschreiben, wobei der Initialzustand (q0, s0) auch final ist: M = (Q, Σ, δ, (q0, s0), (q0, s0)) mit den folgenden Übergangsregeln: ((q0, s0), s) → ((q1, s), R) für alle s ∈ Σ ((q1, s), s ′ ) → ((q1, s), R) für alle s ′ ∈ Σ, s ′ = s ((q1, s), #) → ((q0, s0), #). Zum Beispiel wird die Eingabe stt(t = s) wie folgt berechnet: ((q0, s0), stt) ⊢ ((q1, s), stt) ⊢ ((q1, s), stt) ⊢ ((q1, s), stt#) ⊢ ((q0, s0), stt#). Hier hält die TM und akzeptiert. 3.2.3 TM mit erweitertem Bandalphabet Manchmal ist es geschickt, zusätzliche (Hilfs-)Symbole auf das Band schreiben zu dürfen, die nicht zum Eingabealphabet gehören. Das bedeutet, dass außer dem Eingabealphabet Σ noch ein Bandalphabet Γ mit Σ ⊆ Γ gegeben wird und die Übergangsfunktion δ mit allen Symbolen aus Γ arbeitet, d.h., δ ist eine partielle Funktion mit Definitionsbereich Q×(Γ∪{#}) und Wertebereich Q×(Γ∪{#, L, R}). Eine TM mit erweitertem Bandalphabet ist also ein 6-Tupel M = (Q, Σ, Γ, δ, q0, qF) wobei Σ ⊆ Γ das Eingabealphabet und δ : Q × (Γ ∪ {#}) → Q × (Γ ∪ {#, L, R}) eine partielle Funktion ist. Die Sprache, die M akzeptiert, ist die Sprache L(M) ⊆ Σ ∗ aller Wörter über dem (kleineren) Eingabealphabet Σ, für die M im Finalzustand hält. Beispiel 2. Eine 1-Band TM, die die Sprache {a n b n c n ; n ≥ 1} akzeptiert. Hier haben wir Σ = {a, b, c}, und wir benutzen Γ = {a, b, c, [, ]}. Die TM wird erst die Eingabe mit [ und ] umklammern: (q0, a) → (q0, L) (q0, #) → (q0, [ ) (q0, [ ) → (q1, R) (q1, x) → (q1, R) füR x = a, b, c (q1, #) → (q1, ] ). Jetzt kann sie die TM von Beispiel 3 in Abschnitt 3.1 simulieren. Bemerkung 2. Für jede TM mit erweitertem Bandalphabet M gibt es eine ( ” normale“) TM, die M simuliert. Das Eingabealphabet der neuen TM ist das Bandalphabet Γ von M. Wir überprüfen zuerst (unter Verwendung eines zusätzlichen Gedächtnisses, das Σ beinhaltet), ob jedes Symbol der Eingabe in Σ liegt. Falls nein, hält die TM und akzeptiert nicht. Falls ja, wird weiter wie bei M berechnet. 3.2.4 TM mit mehrspurigem Band Wir arbeiten hier mit einer Modifikation von TM, die darin besteht, dass das Band in k Spuren unterteilt wird, die alle gleichzeitig gelesen werden. Stellen wir uns erst vor, dass k = 2 ist. Wir schreiben Symbole aus dem Eingabealphabet Σ = Σ1 auf Spur 1 und Symbole eines Hilfsalphabetes Σ2 auf Spur 2: . . . # 0 1 0 0 1 # # # . . . . . . # # a # b # # a # ⇑ . . .

3.2. MODIFIKATIONEN VON TURINGMASCHINEN 81 Die Maschine entscheidet in jedem Schritt abhängig vom Zustand und dem Inhalt beider Spuren (1) was der nächste Zustand wird und (2) ob sich der Kopf bewegt oder beide Spuren gleichzeitig überschrieben werden. Eine 2-Spur-TM ist eigentlich eine TM im vorher definierten Sinne, deren Bandalphabet aus Paaren (s1, s2), mit s1 ∈ Σ1 und s2 ∈ Σ2, geformt wird. Die einzige Ausnahme ist das Paar (#, #), das jetzt als Blank-Symbol dient. Also ist eine 2- Spur-TM einfach eine TM mit dem Eingabealphabet Σ = Σ1 × Σ2 − {(#, #)}. Analoges gilt für k-spurige Maschinen, die auf der i-ten Spur Symbole aus Σi tragen (i = 1, . . .,k): das sind also die ” normalen“ TM mit Eingabealphabet Σ = Σ1 × Σ2 × · · · × Σk − {(#, #, . . .,#)} und mit dem Blanksymbol (#, #, . . . , #). Beispiel 3. Primzahltest Wir zeigen, wie man eine 3-spurige TM konstruiert, die die Sprache L aller Primzahlen (in binärer Darstellung) akzeptiert. Hiermit kann man auch gut die Idee von Turing illustrieren, dass jeder Algorithmus mit einer TM automatisiert werden kann. Wir verwenden hier den primitiven Algorithmus, der jede Zahl n durch alle Testzahlen 2, 3, 4, . . ., n − 1 teilt und n akzeptiert, falls alle Divisionen einen positiven Rest ergeben. EINGABESPUR TESTZAHLSPUR HILFSSPUR . . . 1 0 1 1 1 . . . . . . 1 0 1 . . . . . . 1 0 1 1 1 ⇑ . . . q0 Die Spuren der TM sind (1) Eingabespur, die während der Berechnung unverändert bleibt, (2) Testzahlspur, die am Anfang mit 1 beschriftet wird und in jedem Berechnungsdurchgang um eins vergrößert wird (sodass in dem ersten Berechnungsdurchgang durch 2 dividiert wird, im zweiten mit 3, usw.) und (3) eine Hilfsspur. Wir schreiben am Anfang also die gegebene Zahl n = 1, 2, 3, . . . auf Spur 1, die Zahl 1 auf Spur 2 und nichts auf Spur 3. Der Initialzustand q0 überprüft (durch Vergleich mit Spur 2), ob auf Spur 1 eine Zahl n ≥ 2 steht. Im Fall von n = 0 oder n = 1, wird der Zustand q0 zu q−, einem nicht-finalen Haltezustand verändert. (Also werden 0 und 1 nicht akzeptiert.) Falls n ≥ 2 ist, werden Berechnungsdurchgänge rekursiv durchgeführt, die man wie folgt beschreiben kann: Anfang eines Berechnungsdurchganges: Spur 1 wird auf Spur 3 kopiert. Die Zahl auf Spur 2 wird um 1 vergrößert. Die Spuren 1 und 2 werden verglichen und falls die Zahlen gleich sind, wird der Zustand zu q+, einem finalen Haltezustand geändert (die Eingabe wird also akzeptiert, denn keine Zahl kleiner n, die n teilt, wurde gefunden). Rumpf eines Berechnungsdurchganges: Die Zahl von Spur 3 wird durch die auf Spur 2 dividiert (z.B. durch wiederholte Subtraktion). Ende eines Berechnungsdurchganges: Jetzt steht auf Spur 3 der Rest der Eingabe modulo der Testzahl. Falls der Rest 0 ist, wird der Zustand zu q− verändert. Falls der Rest positiv ist, wird der Kopf nach links zum ersten Symbol 1 von Spur 1 geschoben und ein neuer Berechnungsdurchgang beginnt. Es ist leicht einzusehen, dass sich diese informale Beschreibung der Turingmaschine relativ einfach durch eine formal definierte TM realisieren lässt.

80 KAPITEL 3. TURINGMASCHINEN<br />

ist. Wir können sie wie folgt als ” normale“ TM beschreiben, wobei der Initialzustand<br />

(q0, s0) auch f<strong>in</strong>al ist:<br />

M = (Q, Σ, δ, (q0, s0), (q0, s0))<br />

mit den folgenden Übergangsregeln:<br />

((q0, s0), s) → ((q1, s), R) für alle s ∈ Σ<br />

((q1, s), s ′ ) → ((q1, s), R) für alle s ′ ∈ Σ, s ′ = s<br />

((q1, s), #) → ((q0, s0), #).<br />

Zum Beispiel wird die E<strong>in</strong>gabe stt(t = s) wie folgt berechnet:<br />

((q0, s0), stt) ⊢ ((q1, s), stt) ⊢ ((q1, s), stt) ⊢ ((q1, s), stt#) ⊢ ((q0, s0), stt#).<br />

Hier hält die TM und akzeptiert.<br />

3.2.3 TM mit erweitertem Bandalphabet<br />

Manchmal ist es geschickt, zusätzliche (Hilfs-)Symbole auf das Band schreiben zu<br />

dürfen, die nicht zum E<strong>in</strong>gabealphabet gehören. Das bedeutet, dass außer dem<br />

E<strong>in</strong>gabealphabet Σ noch e<strong>in</strong> Bandalphabet Γ mit Σ ⊆ Γ gegeben wird und die<br />

Übergangsfunktion δ mit allen Symbolen aus Γ arbeitet, d.h., δ ist e<strong>in</strong>e partielle<br />

Funktion mit Def<strong>in</strong>itionsbereich Q×(Γ∪{#}) und Wertebereich Q×(Γ∪{#, L, R}).<br />

E<strong>in</strong>e TM mit erweitertem Bandalphabet ist also e<strong>in</strong> 6-Tupel<br />

M = (Q, Σ, Γ, δ, q0, qF)<br />

wobei Σ ⊆ Γ das E<strong>in</strong>gabealphabet und<br />

δ : Q × (Γ ∪ {#}) → Q × (Γ ∪ {#, L, R})<br />

e<strong>in</strong>e partielle Funktion ist. Die Sprache, die M akzeptiert, ist die Sprache<br />

L(M) ⊆ Σ ∗<br />

aller Wörter über dem (kle<strong>in</strong>eren) E<strong>in</strong>gabealphabet Σ, für die M im F<strong>in</strong>alzustand<br />

hält.<br />

Beispiel 2. E<strong>in</strong>e 1-Band TM, die die Sprache {a n b n c n ; n ≥ 1} akzeptiert. Hier<br />

haben wir Σ = {a, b, c}, und wir benutzen Γ = {a, b, c, [, ]}. Die TM wird erst die<br />

E<strong>in</strong>gabe mit [ und ] umklammern:<br />

(q0, a) → (q0, L)<br />

(q0, #) → (q0, [ )<br />

(q0, [ ) → (q1, R)<br />

(q1, x) → (q1, R) füR x = a, b, c<br />

(q1, #) → (q1, ] ).<br />

Jetzt kann sie die TM von Beispiel 3 <strong>in</strong> Abschnitt 3.1 simulieren.<br />

Bemerkung 2. Für jede TM mit erweitertem Bandalphabet M gibt es e<strong>in</strong>e ( ” normale“)<br />

TM, die M simuliert. Das E<strong>in</strong>gabealphabet der neuen TM ist das Bandalphabet<br />

Γ von M. Wir überprüfen zuerst (unter Verwendung e<strong>in</strong>es zusätzlichen<br />

Gedächtnisses, das Σ be<strong>in</strong>haltet), ob jedes Symbol der E<strong>in</strong>gabe <strong>in</strong> Σ liegt. Falls<br />

ne<strong>in</strong>, hält die TM und akzeptiert nicht. Falls ja, wird weiter wie bei M berechnet.<br />

3.2.4 TM mit mehrspurigem Band<br />

Wir arbeiten hier mit e<strong>in</strong>er Modifikation von TM, die dar<strong>in</strong> besteht, dass das Band<br />

<strong>in</strong> k Spuren unterteilt wird, die alle gleichzeitig gelesen werden. Stellen wir uns erst<br />

vor, dass k = 2 ist. Wir schreiben Symbole aus dem E<strong>in</strong>gabealphabet Σ = Σ1 auf<br />

Spur 1 und Symbole e<strong>in</strong>es Hilfsalphabetes Σ2 auf Spur 2:<br />

. . . # 0 1 0 0 1 # # # . . .<br />

. . . # # a # b # # a #<br />

⇑<br />

. . .

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!