Abschnitt 1.5: Turing-Berechenbarkeit - Universität Kassel
Abschnitt 1.5: Turing-Berechenbarkeit - Universität Kassel
Abschnitt 1.5: Turing-Berechenbarkeit - Universität Kassel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
<strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
A.M. <strong>Turing</strong> (1937): Maschinenmodell zur exakten Beschreibung des<br />
Begriffs „effektiv berechenbar“<br />
✎☞<br />
✍✌Stift<br />
✘✘✘<br />
✘✘✘<br />
<br />
<br />
<br />
❅ ❅<br />
Mensch<br />
a<br />
b<br />
c b<br />
Rechenblatt<br />
a b b c<br />
endliche<br />
Kontrolle<br />
<strong>Turing</strong>maschine<br />
Lese-/Schreibkopf<br />
Eine <strong>Turing</strong>maschine arbeitet auf Wörtern, d.h. auf Ketten von<br />
Buchstaben (oder Zeichen) über einem endlichen Zeichenvorrat<br />
(Alphabet).<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 78 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Ein Alphabet Σ ist eine endliche, nicht-leere Menge, deren Elemente<br />
Buchstaben, Zeichen oder Symbole genannt werden.<br />
Beispiele:<br />
Σ1 := {a, b}<br />
Σ2 := {(,),+,−,∗,/, a}<br />
Σ3 := {0, 1,#}<br />
Durch Hintereinanderschreiben von Zeichen erhält man Wörter.<br />
∀n ≥ 1 : Σn = Wörter der Länge n über Σ<br />
ε = Wort der Länge 0 (leeres Wort)<br />
Σ + := <br />
Σn nicht-leere Wörter über Σ<br />
n≥1<br />
Σ∗ := Σ + ∪{ε} Wörter über Σ<br />
Beispiele:<br />
Σ2 1<br />
Σ∗ 1<br />
= {aa, ab, ba, bb}<br />
= {ε, a, b, aa, ab, ba, bb, aaa,...}<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 79 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Für w ∈ Σ ∗ ist |w| die Länge von w:<br />
|ε| = 0<br />
|w| = n für alle w ∈ Σ n , n ≥ 1.<br />
Für w ∈ Σ ∗ und a ∈ Σ ist |w|a die a-Länge von w:<br />
|ε|a = 0<br />
|wb|a = |w|a für b = a<br />
|wa|a = |w|a + 1<br />
Beachte:<br />
∀u ∈ Σ m ∀v ∈ Σ n : uv ∈ Σ m+n<br />
∀u ∈ Σ m : εu = u = uε<br />
∀u, v, w ∈ Σ ∗ : (uv)w = u(vw)<br />
(Σ ∗ ,·,ε) ist Halbgruppe mit neutralem Element ε (d.h. ein Monoid)<br />
Jedes w ∈ Σ ∗ lässt sich eindeutig als Folge von Zeichen aus Σ<br />
schreiben.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 80 / 309
Lemma 1.25<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Seien u, v, x, y ∈ Σ ∗ mit uv = xy. Dann gilt genau einer der drei<br />
folgenden Fälle:<br />
(1.) |u| = |x| und u = x und v = y.<br />
(2.) |u| > |x|, und es gibt ein z ∈ Σ + mit u = xz und y = zv.<br />
(3.) |u| < |x|, und es gibt ein z ∈ Σ + mit x = uz und v = zy.<br />
Abkürzende Schreibweise:<br />
u 0 = ε, u 1 = u und u n+1 = u n u für alle u ∈ Σ ∗ , n ≥ 1.<br />
Mit R : Σ ∗ → Σ ∗ wird die Spiegelungsfunktion (engl.: reversal)<br />
bezeichnet:<br />
ε R = ε,(ua) R = au R für alle u ∈ Σ ∗ und a ∈ Σ.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 81 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine Teilmenge L von Σ ∗ heißt eine Formale Sprache über Σ.<br />
Beispiele:<br />
(1.) L1 := { w ∈ Σ ∗ 1<br />
| |w| ist eine ungerade Zahl}<br />
(2.) L2 := { korrekt geklammerte arithmetische Ausdrücke über Σ2}<br />
z.B.: (a−a)∗a+a/(a+a)−a ∈ L2<br />
(((a))) ∈ L2<br />
((a+)−a(∈ L2<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 82 / 309
<strong>Turing</strong>maschine (TM)<br />
...<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
unendliches Band<br />
✷ ✷ ✷ ✷ a b c # 0 1 1 0 ✷ ✷<br />
endliche<br />
Kontrolleinheit<br />
Lese-/Schreibkopf<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 83 / 309<br />
...
Definition 1.26<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine <strong>Turing</strong>maschine (TM) ist gegeben durch ein 7-Tupel<br />
M = (Z,Σ,Γ,δ, z0,✷, E):<br />
– Z endliche Zustandsmenge<br />
– Σ Eingabealphabet<br />
– Γ ⊃ Σ Arbeitsalphabet<br />
– z0 ∈ Z Startzustand<br />
– ✷ ∈ ΓΣ Blank (Leerzeichen)<br />
– E ⊆ Z Endzustände<br />
– δ : ((Z E)×Γ) → (Z ×Γ×{L, R, N}) Überführungsfunktion<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 84 / 309
Rechenschritte von M:<br />
δ(z1, a) = (z ′ 1 , b, L):<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
... ✷ ✷ 1 0 a b c ✷ ✷<br />
...<br />
⇓<br />
z 1<br />
✷ ✷ 1 0 b b c ✷ ✷<br />
z ′ 1<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 85 / 309<br />
...<br />
...
δ(z2, a) = (z ′ 2 , b, R):<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
...<br />
✷ ✷ 1 0 a b c ✷ ✷<br />
⇓<br />
z 2<br />
... ✷ ✷ 1 0 b b c ✷ ✷<br />
z ′ 2<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 86 / 309<br />
...<br />
...
δ(z3, a) = (z ′ 3 , b, N):<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
...<br />
✷ ✷ 1 0 a b c ✷ ✷<br />
⇓<br />
z 3<br />
... ✷ ✷ 1 0 b b c ✷ ✷<br />
z ′ 3<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 87 / 309<br />
...<br />
...
Definition 1.27<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine Konfiguration der TM M ist ein Wort k ∈ Γ ∗ ZΓ + .<br />
k deckt den von ✷ verschiedenen Teil des Bandes ab.<br />
Beispiele:<br />
10z1abc, 1z ′ 1 0bbc,<br />
10z2abc, 10bz ′ 2 bc,<br />
10z3abc, 10z ′ 3 bbc<br />
Startkonfiguration für Eingabe x ∈ Σ + : z0x<br />
Startkonfiguration für Eingabe ε : z0✷<br />
Haltekonfiguration: uzv mit z ∈ E.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 88 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Definition 1.28 (Berechnungsrelation ⊢ :)<br />
⎧<br />
a1...amzb1...bn ⊢<br />
Sonderfälle:<br />
⎪⎨<br />
⎪⎩<br />
a1...amz ′ cb2...bn<br />
falls δ(z, b1) = (z ′ , c, N) (m ≥ 0, n ≥ 1)<br />
a1...amcz ′ b2...bn<br />
falls δ(z, b1) = (z ′ , c, R) (m ≥ 0, n ≥ 2)<br />
a1...am−1z ′ amcb2...bn<br />
falls δ(z, b1) = (z ′ , c, L) (m ≥ 1, n ≥ 1)<br />
a1...amzb1 ⊢ a1...amcz ′ ✷ falls δ(z, b1) = (z ′ , c, R).<br />
zb1...bn ⊢ z ′ ✷cb2...bn falls δ(z, b1) = (z ′ , c, L).<br />
⊢ ∗ bezeichnet den reflexiv-transitiven Abschluss von ⊢, d.h.<br />
k ⊢ ∗ k ′ gdw. ∃m ≥ 0∃k0,...,km : k = k0 ⊢ k1 ⊢ ... ⊢ km = k ′<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 89 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine Rechnung von M bei Eingabe x ∈ Σ ∗ ist eine Folge<br />
z0x = k0 ⊢ k1 ⊢ k2 ⊢ ....<br />
Eine Rechnung kann endlich oder unendlich sein.<br />
Eine erfolgreiche Rechnung von M bei Eingabe x ∈ Σ ∗ ist eine<br />
endliche Rechnung z0x = k0 ⊢ k1 ⊢ k2 ⊢ ... ⊢ km−1 ⊢ km,<br />
sodass km eine Haltekonfiguration ist.<br />
T(M) = { x ∈ Σ ∗ | ∃ erfolgreiche Rechnung von M mit Eingabe x }<br />
ist die von M akzeptierte Sprache.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 90 / 309
Beispiel TM für binäres „+1“:<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
M = ({z0, z1, z2, ze},{0, 1},{0, 1,✷},δ, z0,✷,{ze}) mit<br />
δ(z0, 0) = (z0, 0, R), δ(z0, 1) = (z0, 1, R),<br />
δ(z0,✷) = (z1,✷, L)<br />
δ(z1, 0) = (z2, 1, L), δ(z1, 1) = (z1, 0, L),<br />
δ(z1,✷) = (ze, 1, N)<br />
δ(z2, 0) = (z2, 0, L), δ(z2, 1) = (z2, 1, L),<br />
δ(z2,✷) = (ze,✷, R)<br />
Beispielrechnung:<br />
z0101 ⊢ 1z001 ⊢ 10z01 ⊢ 101z0✷<br />
⊢ 10z11✷ ⊢ 1z100✷ ⊢ z2110✷<br />
⊢ z2✷110✷ ⊢ ✷ze110✷,<br />
also z0101 ⊢ ∗ ✷ze110✷.<br />
Bezeichnung für diese TM: Band := Band +1<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 91 / 309
Definition 1.29<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine Funktion f : Σ ∗ → Σ ∗ heißt <strong>Turing</strong>-berechenbar, wenn es eine<br />
<strong>Turing</strong>maschine M gibt, sodass für alle x, y ∈ Σ ∗ gilt:<br />
f(x) = y gdw. z0x ⊢ ∗ M ✷...✷zey✷...✷ (ze ∈ E).<br />
Ist f(x) undefiniert, so ist die Rechnung von M, die mit der<br />
Startkonfiguration z0x beginnt, unendlich, d.h., M hält ausgehend von<br />
z0x nicht an!<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 92 / 309
Beispiele:<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
(1) Die Funktion bin_plus1: {0, 1} ∗ → {0, 1} ∗<br />
ist <strong>Turing</strong>-berechenbar.<br />
(2) Die Funktion R : Σ ∗ → Σ ∗<br />
w ↦→ w R<br />
ist <strong>Turing</strong>-berechenbar.<br />
(3) Die Funktion 2 : Σ ∗ → Σ ∗<br />
w ↦→ ww<br />
ist <strong>Turing</strong>-berechenbar.<br />
bin(n) ↦→ bin(n+1)<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 93 / 309
Definition 1.30<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Sei A ⊆ Σ ∗ . Die Menge A heißt entscheidbar, wenn ihre<br />
charakteristische Funktion χA <strong>Turing</strong>-berechenbar ist:<br />
Beispiel:<br />
χA(w) =<br />
1, falls w ∈ A,<br />
0, falls w ∈ A.<br />
Die Menge A = { w ∈ {a, b} ∗ | |w| ist gerade } ist entscheidbar.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 94 / 309
Definition 1.31<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Sei A ⊆ Σ∗ . Die Menge A heißt semi-entscheidbar, wenn die folgende<br />
Funktion χ ′ A <strong>Turing</strong>-berechenbar ist:<br />
χ ′ A (w) =<br />
1, falls w ∈ A,<br />
undefiniert, falls w ∈ A.<br />
Die <strong>Turing</strong>maschine zur Berechnung von χ ′ A hält also ausgehend von<br />
der Startkonfiguration z0w (w ∈ Σ∗ ) genau dann an, wenn w ∈ A ist.<br />
Lemma 1.32<br />
Jede entscheidbare Menge ist semi-entscheidbar.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 95 / 309
Definition 1.33<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine Funktion f : N k → N heißt <strong>Turing</strong>-berechenbar, wenn es eine<br />
<strong>Turing</strong>maschine M gibt, sodass für alle n1,...,nk, m ∈ N gilt:<br />
f(n1,...,nk) = m gdw. z0bin(n1)#bin(n2)#...#bin(nk)<br />
⊢ ∗ M ✷...✷zebin(m)✷...✷ (ze ∈ E).<br />
Ist f(n1,...,nk) undefiniert, dann hält M ausgehend von der<br />
Startkonfiguration z0bin(n1)#bin(n2)#...#bin(nk) nicht an!<br />
Beispiel:<br />
Die Funktion +1: N → N<br />
n ↦→ n+1<br />
ist <strong>Turing</strong>-berechenbar.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 96 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine Mehrband-<strong>Turing</strong>maschine mit k ≥ 2 Bändern:<br />
endliche<br />
Kontrolle<br />
... a 1 a 2 a 3 a 4 a5 a 6 a7 a 8 a 9<br />
...<br />
b 1 b 2 b 3 b 4 b5 b 6 b7 b 8 b 9<br />
a 10<br />
b 10<br />
... c 1 c 2 c 3 c 4 c5 c 6 c7 c 8 c 9 c 10<br />
δ : (Z ×Γ k ) → (Z ×Γ k ×{L, R, N} k )<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 97 / 309<br />
...<br />
...<br />
...
Beispiel:<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eine 2-Band-<strong>Turing</strong>maschine zur Berechnung der Spiegelungsfunktion<br />
M = ({z0, z1, z2, z3, ze},{a, b},{a, b,✷},δ, z0,✷,{ze}) mit:<br />
δ z0 z1 z2 z3<br />
(a, a) – – – –<br />
(a, b) – – – –<br />
(a,✷) (z1, a,✷, R, N) (z1, a,✷, R, N) (z2,✷, a, L, R) –<br />
(b, a) – – – –<br />
(b, b) – – – –<br />
(b,✷) (z1, b,✷, R, N) (z1, b,✷, R, N) (z2,✷, b, L, R) –<br />
(✷, a) – – – (z3,✷, a, N, L)<br />
(✷, b) – – – (z3,✷, b, N, L)<br />
(✷,✷) (ze,✷,✷, N, N) (z2,✷,✷, L, N) (z3,✷,✷, N, L) (ze,✷,✷, N, R)<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 98 / 309
Eingabe: w = aab<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Startkonfiguration: Band 1<br />
...<br />
...<br />
✷ a a<br />
Beschreibung: (z0aab, z0✷)<br />
✷ ✷ ✷ ✷<br />
z0<br />
b<br />
✷<br />
✷<br />
...<br />
...<br />
Band 2<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 99 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Rechnung:<br />
(z0aab, z0✷) ⊢M (az1ab, z1✷) ⊢M (aaz1b, z1✷)<br />
⊢M (aabz1✷, z1✷) ⊢M (aaz2b✷, z2✷)<br />
⊢M (az2a✷✷, bz2✷) ⊢M (z2a✷✷✷, baz2✷)<br />
⊢M (z2✷✷✷✷✷, baaz2✷) ⊢M (z3✷✷✷✷✷, baz3a✷)<br />
⊢M (z3✷✷✷✷✷, bz3aa✷) ⊢M (z3✷✷✷✷✷, z3baa✷)<br />
⊢M (z3✷✷✷✷✷, z3✷baa✷) ⊢M (ze✷✷✷✷✷,✷zebaa✷)<br />
Haltekonfiguration: Band 1<br />
... ✷ ✷ ✷ ✷ ✷<br />
... ✷ b a a<br />
ze<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 100 / 309<br />
✷<br />
...<br />
...
Satz 1.34<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Zu jeder Mehrband-TM M gibt es eine (Einband-) <strong>Turing</strong>maschine M ′ ,<br />
die dieselbe Funktion berechnet wie M.<br />
Beweis:<br />
Mehrband-<strong>Turing</strong>maschine M mit k Bändern:<br />
... a1 a2 a3 a4 a5 a6 a7 a8 a9 ... Band 1<br />
... b1 b2 b3 b4 b5 b6 b7 b8 b9 ... Band 2<br />
... c1 c2 c3 c4 c5 c6 c7 c8 c9 ... Band 3<br />
Zustand: z<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 101 / 309
Einband-TM M ′ :<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
... ...<br />
a1 a2 a3 a4 a5 a6 a7 a8 a9 ... b1 b2 b3 b4 b5 b6 b7 b8 b9 ...<br />
... c1 c2 c3 c4 c5 c6 c7 c8 c9 ...<br />
*<br />
Band mit 2k “Spuren”<br />
Arbeitsalphabet: Γ ′ := Γ∪(Γ∪{∗}) 2k<br />
*<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 102 / 309<br />
*
Arbeitsweise von M ′ :<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Startkonfiguration: z0w (w ∈ Σ ∗ )<br />
1. Phase:<br />
*<br />
✷ ✷ ✷ ✷ ✷ ✷ ✷ ✷<br />
*<br />
✷ ✷ ✷ ✷ ✷ ✷ ✷ ✷<br />
*<br />
2. Phase: M ′ simuliert M schrittweise.<br />
w<br />
3. Phase: Ergebnis von Spur 1 auf das gesamte Band kopieren. ✷<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 103 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Ist M eine 1-Band-TM, so ist M(i, k) (i ≤ k) die k-Band-TM, die auf<br />
Band i M simuliert, wobei alle anderen Bänder unverändert bleiben.<br />
Beispiele:<br />
(i) Band := Band+1(i, k).<br />
Schreibweise: Band i := Band i + 1<br />
(ii) Band i := Band i − 1.<br />
(iii) Band i := 0.<br />
(iv) Band i := Band j.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 104 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Hintereinanderschalten von TMen<br />
Mi = (Zi,Σ,Γi,δi, zi,✷, Ei), i = 1, 2<br />
M : start → M1 → M2 → stop<br />
M = (Z1 ∪ Z2,Σ,Γ1 ∪Γ2,δ, z1,✷, E2)<br />
mit δ := δ1 ∪δ2 ∪{(ze, a, z2, a, N) | ze ∈ E1, a ∈ Γ1}.<br />
Beispiele:<br />
(i) start<br />
↓<br />
Band := Band + 1<br />
↓<br />
Band := Band + 1<br />
↓<br />
Band := Band + 1 → stop<br />
Schreibweise: Band := Band + 3<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 105 / 309
(ii) start<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
ze1 <br />
M <br />
<br />
M2<br />
ze 2<br />
<br />
stop<br />
M1<br />
<br />
stop<br />
(iii) Band = 0? :<br />
Z := {z0, z1, ja,nein}, E = {ja,nein},<br />
δ : (z0, a) ↦→ (nein, a, N) für a = 0<br />
(z0, 0) ↦→ (z1, 0, R)<br />
(z1, a) ↦→ (nein, a, L) für a = ✷<br />
(z1,✷) ↦→ (ja,✷, L)<br />
Hieraus: Band i=0?<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 106 / 309
(iv)<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
start<br />
Band i = 0?<br />
M<br />
nein<br />
ja<br />
stop<br />
Schreibweise: WHILE Band i = 0 DO M.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 107 / 309
Beobachtung:<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Die <strong>Turing</strong>maschinen bilden eine einfache Programmiersprache:<br />
– Die Funktionen +c und −c (c ∈ N) sowie<br />
f(x1,...,xn) = xi (1 ≤ i ≤ n) sind TM-berechenbar.<br />
– Diese Sprache enthält einfache Wertzuweisungen.<br />
– Sie enthält einfache Abfragen und while-Schleifen.<br />
– Das Hintereinanderschalten von Programmen ist möglich.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 108 / 309
Satz 1.35<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
<strong>Turing</strong>maschinen können WHILE-Programme simulieren, d.h. jede<br />
WHILE-berechenbare Funktion ist auch <strong>Turing</strong>-berechenbar.<br />
Satz 1.36<br />
Jede <strong>Turing</strong>maschine kann durch ein GOTO-Programm simuliert<br />
werden, d.h. jede <strong>Turing</strong>-berechenbare Funktion ist auch<br />
GOTO-berechenbar.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 109 / 309
Beweis:<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Sei M = (Z,Σ,Γ,δ, z1,✷, E) eine TM, die die Funktion f : N k → N<br />
berechnet.<br />
Für alle n1,...,nk ∈ N:<br />
f(n1,...,nk) ist definiert:<br />
z1bin(n1)#bin(n2)#...#bin(nk) ⊢ ∗ M ✷...✷zebin(f(n1,...,nk))✷...✷<br />
f(n1,...,nk) ist nicht definiert:<br />
z1bin(n1)#bin(n2)#...#bin(nk) ⊢M ... ⊢M ... ⊢M ...<br />
GOTO-Programm M ′ zur Simulation von M:<br />
M1 : P1; M2 : P2; M3 : P3<br />
P1 : (n1,...,nk) ↦→ Darstellung der Konfiguration<br />
z1bin(n1)#...#bin(nk) in x, y, z.<br />
P2 : schrittweise Simulation von M auf x, y, z.<br />
P3 : Endwerte von x, y, z ↦→ f(n1,...,nk).<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 110 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Kodierung von TM-Konfigurationen<br />
Z = {z1,...,zk}, Γ = {a1,...,am}, b > |Γ|<br />
Konfiguration: ai 1 ai 2 ...aip zℓaj 1 aj 2 ...ajq<br />
Kodierung: x = (i1i2...ip)b<br />
y = (jq...j2j1)b<br />
z = ℓ<br />
p<br />
mit (i1...ip)b := iµ · bp−µ und (jq...j1)b :=<br />
µ=1<br />
Beispiel Γ = {a1, a2, a3, a4}, b = 5:<br />
Konfiguration: a1a2a1z2a3a4<br />
q<br />
jν · b<br />
ν=1<br />
ν−1<br />
Kodierung: x = (a1a2a1)5 = 1·5 2 + 2·5 1 + 1·5 0 = 36<br />
y = (a4a3)5 = 4·5 1 + 3·5 0 = 23<br />
z = 2<br />
P1 und P3: elementare arithmetische Operationen.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 111 / 309
Beispiel:<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Eingabe: (10, 6).<br />
Kodierung: 0 ↦→ a1, 1 ↦→ a2, # ↦→ a3, ✷ ↦→ a4 und b = 5.<br />
Eingabekonf.: z1bin(10)#bin(6) = z11010#110<br />
= z1a2a1a2a1a3a2a2a1.<br />
WHILE-Programm P1: z ← 1; x ← 0; y ← 0;<br />
WHILE x2 = 0 DO x3 ← (x2 MOD 2)+1;<br />
x2 ← x2 DIV 2;<br />
y ← y ∗ 5+x3<br />
END;<br />
y ← y ∗ 5+3;<br />
WHILE x1 = 0 DO x3 ← (x1 MOD 2)+1;<br />
x1 ← x1 DIV 2;<br />
y ← y ∗ 5+x3<br />
END;<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 112 / 309
GOTO-Programm M2 : P2<br />
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
M2 : a := y MOD b;<br />
IF (z = 1) AND (a = 1) THEN GOTO M1,1;<br />
IF (z = 1) AND (a = 2) THEN GOTO M1,2;<br />
.<br />
IF (z = k) AND (a = m) THEN GOTO Mk,m;<br />
M1,1 : Programmstück zur Simulation von δ(z1, a1)<br />
GOTO M2;<br />
.<br />
Mk,m : Programmstück zur Simulation von δ(zk, am)<br />
GOTO M2;<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 113 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Simulation eines TM-Schritts: δ(zi, aj) = (zi ′, aj ′, L):<br />
ai ...aip zi ajaj ...ajq<br />
1<br />
<br />
2<br />
<br />
x z y<br />
⊢M ai 1 ...ai p−1<br />
<br />
x<br />
zi ′ aip <br />
z<br />
aj ′aj ...ajq 2<br />
<br />
y<br />
GOTO-Programmstück: z := i ′ ;<br />
y := y DIV b;<br />
y := y ∗ b + j ′ ;<br />
y := y ∗ b +(x MOD b);<br />
x := x DIV b;<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 114 / 309
Kapitel 1: <strong>Berechenbarkeit</strong>stheorie <strong>1.5</strong> <strong>Turing</strong>-<strong>Berechenbarkeit</strong><br />
Übersicht<br />
GOTO ↔ WHILE ↔ TM ↔ µ-rekursiv<br />
<br />
<br />
LOOP ↔ prim. rekursiv<br />
Die Ackermannfunktion a(.,.) ist WHILE-berechenbar und total, aber<br />
sie ist nicht LOOP-berechenbar.<br />
Prof. Dr. F. Otto (<strong>Universität</strong> <strong>Kassel</strong>) <strong>Berechenbarkeit</strong> und Formale Sprachen 115 / 309