Die Chomsky-Hierarchie Algorithmentheorie 6. Vorlesung Martin Dietzfelbinger (a) L3 ( L2. (AFS-Vorlesung.) (b) L2 ( L1. (AFS-Vorlesung.) (c) L1 ⊆ {L | L ist rekursiv}. 11. Mai 2006 (d) {L | L ist rekursiv } ⊆ {L | L ist rekursiv aufzählbar}. (e) {L | L ist rekursiv aufzählbar} = L0. FG KTuEA, TU Ilmenau AT – 11.05.2006 FG KTuEA, TU Ilmenau 1.4 Struktur- und Abschlusseigenschaften AT – 11.05.2006 1 (d) L1, L2 sind rekursiv ⇒ L1L2 ist rekursiv. Satz 1.4.1 (e) L ist rekursiv ⇒ L∗ ist rekursiv. Wenn L, L1, L2 ⊆ Σ∗ rekursive Sprachen sind, dann gilt: Beweis: Jeweils Konstruktion einer neuen TM aus gegebenen TMn. (a) L ist rekursiv ⇒ L ist rekursiv. (b) L1, L2 sind rekursiv ⇒ L1 ∩ L2 und L1 ∪ L2 sind rekursiv. (Details: Tafel, Skript, Übung.) (c) L ist rekursiv ⇔ cL ist rekursiv, wo cL(x) = 1, falls x ∈ L 0, sonst die charakteristische Funktion von L bedeutet. FG KTuEA, TU Ilmenau AT – 11.05.2006 2 FG KTuEA, TU Ilmenau AT – 11.05.2006 3 Zu (b): Paralleles Laufenlassen zweier Turingmaschinen (hier: auf demselben Input) Struktur- und Abschlusseigenschaften Satz 1.4.2 Wenn L, L1, L2 ⊆ Σ∗ rekursiv aufzählbare Sprachen sind, dann gilt: (a) L1 ∩ L2 ist rekursiv aufzählbar. ... B B B e i n g a b e B B B ... ... B e i n g a b e B B B B B ... (b) L1 ∪ L2 ist rekursiv aufzählbar. M1 (c) L1L2 ist rekursiv aufzählbar. AKZ M2 (d) L∗ ist rekursiv aufzählbar. Flagregister Beweis: Jeweils Konstruktion einer neuen TM oder NTM aus gegebenen TMn. Zu (c) und (d): Benutze NTM. (Kann man auch für (b) einsetzen.) FG KTuEA, TU Ilmenau FG KTuEA, TU Ilmenau AT – 11.05.2006 4 AT – 11.05.2006 5 Struktur- und Abschlusseigenschaften Satz Sobald M1 hält und akzeptiert, hält und akzeptiert M . Sobald M2 hält und akzeptiert, hält und verwirft M . Für jede Sprache L ⊆ Σ∗ gilt: L ist rekursiv ⇔ L und L sind rekursiv aufzählbar. Genau eines der beiden Ereignisse tritt ein! Beweis: ⇒“: leicht. ” ⇐“: Gegeben: TM M1 für L und M2 für L. ” Neue TM M : Tut auf Eingabe x folgendes: Und: x ∈ L ⇔ M akzeptiert x. Lasse M1 und M2 parallel (auf 2 Bändern) auf Eingabe x laufen. FG KTuEA, TU Ilmenau AT – 11.05.2006 6 FG KTuEA, TU Ilmenau AT – 11.05.2006 7 Bezeichnung rekursiv aufzählbar“ ” Bezeichnung rekursiv aufzählbar“ ” Definition Satz Eine Mehrband-TM N heißt ein Aufzähler für L ⊆ Σ∗, falls N auf Eingabe ε auf einem besonderen Ausgabeband eine Zeichenfolge #x1#x2#x3# · · · , L ist rekursiv aufzählbar ⇔ es gibt einen Aufzähler für L. x1, x2, x3 . . . ∈ Σ∗, # 6∈ Σ, schreibt, wobei L = {x1, x2, x3, . . .} ist. Achtung: Wiederholungen sind nicht verboten. Wenn |L| = ∞, hält N nicht an. Idee: Deterministisches Aufzählungsverfahren“ für alle ” Wörter aus L. FG KTuEA, TU Ilmenau AT – 11.05.2006 8 FG KTuEA, TU Ilmenau AT – 11.05.2006 Beweis des Satzes: 2 Konstruktionen Wiederhole: ⇐“: Gegeben: Aufzähler N für L. ” Wir bauen eine 3-Band-TM M für L. 1. Lasse N (weiter)laufen, bis ein # geschrieben wurde. 2. Unterbreche N . M tut folgendes, auf Eingabe x (Band 1, nie verändert): 3. Das letzte Wort links vom # wird mit x verglichen. . B B B a 1 a 2 a 3 ... an B B B 9 ... Eingabe x für M : 4. Bei Übereinstimmung: halte und akzeptiere. M: N 5. Sonst: Gehe zu 1. Klar: # x1 # x 2 # x 3 # Bänder von x ∈ L ⇔ x wird von N geschrieben ⇔ TM M akzeptiert x. N a r b e i t s b a n d + v o n + N FG KTuEA, TU Ilmenau AT – 11.05.2006 D.h.: L = LM . 10 FG KTuEA, TU Ilmenau AT – 11.05.2006 11 Programmiertrick: Kontrolle durch Uhr“ ” Programmiertrick: Kontrolle durch Uhr“ ” Eingabe: x#w Neue TM M 0 tut folgendes auf Eingabe x#w: x ∈ Σ∗ Input für M Verschiebe w auf Band 2. (Band 1: Arbeitsband von M .) w ∈ {0, 1}∗ wird als Zeitschranke aufgefasst: Wiederhole: mache höchstens t = (w)2 Schritte“. ” • Lasse M einen Schritt ausführen. • falls M in Haltekonfiguration: halte erfolgreich“ ” • verringere die Binärzahl auf Band 2 um 1. • falls auf Band 2 nun 0 steht: halte erfolglos“ ” 0 Klar: M hält erfolgreich ⇔ tM (x) ≤ t. FG KTuEA, TU Ilmenau AT – 11.05.2006 12 Programmiertrick: Quasiparallele Ausführung“ ” FG KTuEA, TU Ilmenau AT – 11.05.2006 13 Technisch: Eingaben x1, . . . , xm unverändert auf dem Eingabeband Verschränkte Ausführung von Berechnungen von M auf m vielen Eingaben x1, x2, x3, . . . , xm Erzeuge nacheinander die Binärwörter w ∈ {1}{0, 1}∗. Für jedes w starte für jedes j ∈ {1, . . . , m} eine Uhrkontrollierte Berechnung von M auf xj #w ohne m Bänder zu benötigen! Effekt: Man findet eine haltende (akzeptierende) Berechnung, falls mindestens eines der Wörter x1, . . . , xm in HM (LM ) liegt. Effekt: für t := 1, 2, 3, . . . tue für j = 1, . . . , m tue simuliere M auf xj für t Schritte. FG KTuEA, TU Ilmenau AT – 11.05.2006 Anwendung: Deterministische TM für LM1 LM2 und für LM ∗ (Übung) 14 FG KTuEA, TU Ilmenau AT – 11.05.2006 15 Programmiertrick: Dovetailing“ ” Programmiertrick: Dovetailing“ ” Verschränkte/verzahnte Berechnung“ ” für unbeschränkt viele Eingaben x1, x2, . . .: Gegeben: TM M . Gesucht: Aufzähler N für LM . N hat mehrere Bänder: für t := 1, 2, 3, . . . tue für j = 1, . . . , t tue simuliere M auf xj für t Schritte. • auf Band 1 werden alle Binärzahlen w erzeugt • auf Band 2 werden alle Wörter x ∈ Σ∗ erzeugt dovetailing“: verschränken, verzahnen“ (mit Nut und Feder) ” ” • Band 3 und Band 4 führen Uhr-kontrollierte Berechnungen von M durch • . . . und natürlich das Ausgabeband (write-only) FG KTuEA, TU Ilmenau AT – 11.05.2006 16 Programmiertrick: Dovetailing“ ” FG KTuEA, TU Ilmenau AT – 11.05.2006 17 Überlege: Gegeben: TM M . Gesucht: Aufzähler N für LM . x∈L N arbeitet in Runden. Eine Runde: ⇒ es gibt eine akzeptierende Berechnung k0, . . . , ktM (x) von M auf x 1. Band 1 um 1 erhöhen. Nun: Inschrift w. t = (w)2 2. Erzeuge auf Band 2 die ersten t Wörter x1, . . . , xt in der Aufzählung von Σ∗. 3. Lasse (Band 3/4) M auf x1, . . . , xt für jeweils t Schritte laufen. Falls eine Berechnung zum Akzeptieren von xj führt: schreibe xj # auf das Ausgabeband. ⇒ in allen Runden t ≥ tM (x) wird x auf das Ausgabeband geschrieben. Umkehrung: x wird auf das Ausgabeband geschrieben ⇒ N hat akzeptierende Berechnung von M auf x gefunden ⇒ x ∈ LM . 4. Lösche Bänder 3 und 4. FG KTuEA, TU Ilmenau AT – 11.05.2006 18 FG KTuEA, TU Ilmenau AT – 11.05.2006 19 Kanonische Aufzählung Bemerkung: Der konstruierte Aufzähler gibt jedes Wort in LM unendlich oft aus. Modifikation: Schreibe in Runde t nur die Wörter, deren akzeptierende Berechnung genau t Schritte dauert. Dann: Jedes x ∈ L wird genau einmal geschrieben. Überlege: Was bedeutet das für den Fall, dass L endlich ist? Beispiel: Σ = {0, 1, 2} ε, 0, 1, 2, 00, 01, 02, 10, 11, 12, 20, 21, 22, 000, 001, 002, 010, 011, 012, 020, 021, 022, 100, 101, . . . Kanonische Anordnung“ von Σ∗, für Σ = {0, 1, . . . , b − 1}: ” x <kan y :⇔ |x| < |y| oder (|x| = |y| ∧ (x)b < (y)b) (erst nach Länge, bei Längengleichheit lexikographisch) FG KTuEA, TU Ilmenau AT – 11.05.2006 20 FG KTuEA, TU Ilmenau AT – 11.05.2006 21 Kapitel 1.5: Äquivalenz von RAM und TM Satz L ⊆ Σ∗ ist rekursiv Kann TM auf Registermaschinen ⇔ es gibt einen Aufzähler N für L, der die Elemente von L in kanonischer Reihenfolge ausgibt. Beweis: 1. Fall: L ist endlich. Dann ist L rekursiv und eine TM kann die Elemente von L in kanonischer Reihenfolge aufschreiben. (Speichere alle in der Steuereinheit.) simulieren“ ” und umgekehrt. D.h.: Modelle haben die gleiche Berechnungskraft“. ” Achtung: Zurück zu deterministischen TMn. 2. Fall: L ist unendlich. Übung! FG KTuEA, TU Ilmenau AT – 11.05.2006 22 FG KTuEA, TU Ilmenau AT – 11.05.2006 23 Registermaschinen Registermaschinen – Beispielprogramm Random Access Machine Rechner mit wahlfreiem“ Speicherzugriff ” 0: 1: 2: . . . B0 B1 B2 l −1: Berechnung von aa0 1 . 3 R0 5 R1 BZ 0 R2 4 4 R3 0 R4 2 R5 0 R6 B l −1 Steuereinheit Zeile 0 1 2 3 4 5 6 7 Speicher Befehl Kommentar R2 ← 1 Konstante 1 R4 ← 1 a00 if (R3 = 0) goto 6 Zeilen 2–5: Schleife R4 ← R4 ∗ R1 R3 ← R3 − R2 goto 2 R1 ← R4 Resultatformat herstellen R0 ← 1 mit Programm und Befehlszähler FG KTuEA, TU Ilmenau AT – 11.05.2006 24 Haben schon überlegt: Jedes C-/Java-/Pascal-Programm ausführbar. auf Registermaschine FG KTuEA, TU Ilmenau AT – 11.05.2006 25 Simulation von TM auf RAM Gegeben: M = (Q, Σ, Γ, B, q0, F, δ) TM. Konsequenz: O.B.d.A.: Einseitig unbeschränktes Band, Zellen 1, 2, 3, . . . Jedes C-/Java-/Pascal-Programm auf Turingmaschine simulierbar. O.B.d.A.: Ausgabe steht am Ende in Zellen 1, 2, 3, . . . , r Ausgabe nur über Berechnungsresultat, nicht Zustand: 0 heißt verwirf“; 1 heißt akzeptiere“ ” ” Durch Umbenennen: Bandbuchstaben sind Zahlen: Γ = {0, . . . , s − 1}; Σ ⊆ {1, . . . , s − 1}; B = 0. FG KTuEA, TU Ilmenau AT – 11.05.2006 26 FG KTuEA, TU Ilmenau AT – 11.05.2006 27 Grundidee: Hilfsregister (R2, R4, usw.): Bandzellen i = 1, 2, 3, . . . , i, . . . von M werden durch Register R1, R3, R5, . . . , R2i−1, . . . repräsentiert. Initialisiert in einem Initialisierungsteil des RAM-Programms. Register R2, R4, R6, . . .: für Hilfszwecke Input x = a1 · · · an • Rread enthält den gerade gelesenen Buchstaben, anfangs Rread ← R1 Eingabekonvention für RAM: a1 in R1, a2 in R3, a3 in R5 usw.: passt! • R a“ enthält die konstante Zahl a ∈ Γ = {0, . . . , s − 1}. ” n in R0. Andere Register: 0. Passt auch für R2i−1, i > n, weil B = 0. FG KTuEA, TU Ilmenau AT – 11.05.2006 28 Blöcke Blockq , q ∈ Q ··· Bq,1: ··· Bq,s−1: ··· FG KTuEA, TU Ilmenau AT – 11.05.2006 FG KTuEA, TU Ilmenau AT – 11.05.2006 29 1. Fall: δ(q, a) ist undefiniert. Dann Bq,a: goto Nachbearbeitung Endliche Abfolge bedingter Sprünge, die folgenden Effekt hat: Springe zu (Unterblock) Bq,a für a = hRreadi ∈ Γ. Bq,0: Zum Schluss des Initialisierungsteils: Springe zu Block Blockq0 . B :“ ” q,a Hauptteil des RAM-Programms: Blockq : • Rhead enthält die gegenwärtige Kopfposition, anfangs 1 2. Fall: δ(q, a) = (q 0, a0, D) ∈ Q × Γ × {L, R, N }. Dann Bq,a: RRhead ← R a0“ ” falls D = R : Rhead ← Rhead + R”2“ falls D = L : Rhead ← Rhead − R 2“ ” falls D = N : − Rread ← RRhead goto Block q0 30 FG KTuEA, TU Ilmenau AT – 11.05.2006 31 Klar: Ausführung dieses RAM-Programms simuliert“ jeden ” einzelnen Schritt der TM M 0 nacheinander. Zusammenfassung: Satz Zu jeder TM M können wir eine RAM M 0 angeben, Nachbearbeitungsteil: die dasselbe Ein-/Ausgabeverhalten wie M hat, (Stellt das Ausgabeformat her, das für Registermaschinen vereinbart ist.) d.h.: für jedes x = a1 · · · an ∈ Σ∗ gilt: Suche das maximale k mit hR1i, hR3i, . . . , hR2k−1i = 6 0; Speichere k in R0; halte an. FG KTuEA, TU Ilmenau • M hält nicht auf x ⇒ M 0 hält nicht auf x. AT – 11.05.2006 32 Zeitbedarf 0 Zahl der Schritte von M auf x ist O(|x| + tM (x)), falls M auf x hält. Überlege dazu: AT – 11.05.2006 33 Die Kosten im logarithmischen Kostenmaß sind O(tM (x) · log(tM (x))). Erinnerung: Logarithmische Kosten veranschlagen ksk = |bin(s)| für jede in einem Schritt gelesene Zahl s. Alle verwendeten Zahlen sind konstant (durch |Γ| beschränkt), außer: hRheadi ≤ 2tM (x) + 1. Kosten eines Schritts im logarithmischen Kostenmaß: O(log(hRheadi)), also O(log(tM (x))). Gesamtkosten: tM (x) · O(log(tM (x))), also O(tM (x) log(tM (x))). • Initialisierung: O(|Γ|), also konstant • Jeder Schritt: O(|Γ|), also konstant (Aufsuchen des Unterblocks Bq,a) • Nachbearbeitung: O(|fM (x)| + 1), also O(|x| + tM (x)) AT – 11.05.2006 FG KTuEA, TU Ilmenau (Logarithmische) Kosten der Simulation Erweiterung des Satzes: FG KTuEA, TU Ilmenau • M hält auf Eingabe x = a1 . . . an ⇒ M 0 hält auf x = (a1, . . . , an) und die Ausgabe von M 0 auf x ist fM (x). 34 FG KTuEA, TU Ilmenau AT – 11.05.2006 35 Bemerkungen: Simulation von RAM auf TM • Konstruktion des RAM-Programms M 0 aus der Beschreibung von M ist mechanisch/automatisch/algorithmisch realisierbar. • Kann entlang derselben Ideen auch Turingmaschinen in C/Java-/Pascal-Programmen simulieren. Idealisierung: Unbegrenzte Rechenzeit, unbegrenzter Speicher. Jede RAM-berechenbare Funktion kann auch ” von einer Turingmaschine berechnet werden.“ Achtung: RAMs arbeiten mit Zahlen, TMn mit Zeichenreihen. Wie können Turingmaschinen Zahlfunktionen berechnen? Lösung: (Binär-)Kodierung FG KTuEA, TU Ilmenau AT – 11.05.2006 36 FG KTuEA, TU Ilmenau AT – 11.05.2006 37 Definitionsbereich DM von f˜M : Definition: Zahlfunktionen auf TM Die Menge der Tupel (a1, . . . , an) ∈ Seq(N) derart dass fM (bin(a1)# · · · #bin(an)) die Form bin(b1)# · · · #bin(bm) hat. TM M = (Q, {0, 1, #}, Γ, B, q0, F, δ) Typischer Input: 100#1101#1#0#11 Bemerkung ( Syntaxcheck“): ” Es ist sehr einfach (DFA!), zu testen, ob eine Eingabe x das Format bin(a1)# · · · #bin(an) hat, ebenso für die Ausgabe. Entspricht Zahlentupel (4, 13, 1, 0, 3) Für (a1, . . . , an) ∈ Seq(N) ist Konsequenz: Wir nehmen an, dass M fehlerhafte Eingaben und Ausgaben geeignet behandelt. f˜M (a1, . . . , an) = (b1, . . . , bm), wenn fM (bin(a1)# · · · #bin(an)) = bin(b1)# · · · #bin(bm). Wenn z.B. M auf Eingabe 100#1101#1#0#11 Ausgabe 10101#110100 erzeugt, ist f˜M (4, 13, 1, 0, 3) = (21, 52). Mögliche Reaktion, je nach Bedarf: Anhalten mit vorgeschriebener Ausgabe 0, ε, usw. — Verwerfen — Endlosschleife — . . . . . . und ignorieren ab hier Syntaxfehler in Ein-/Ausgabe von M . FG KTuEA, TU Ilmenau AT – 11.05.2006 38 FG KTuEA, TU Ilmenau AT – 11.05.2006 39 Definition Eine Zahlfunktion f : D → Seq(N) mit D ⊆ Seq(N) heißt partiell rekursiv, wenn es eine TM M mit f = f˜M gibt. Eine Menge A ⊆ Seq(N) (von Tupeln von Zahlen!) heißt rekursiv aufzählbar, wenn es eine TM M gibt mit A = {(a1, . . . , an) ∈ Seq(N) | bin(a1)# · · · #bin(an) ∈ LM }. Eine Menge A ⊆ Seq(N) heißt rekursiv, wenn es eine TM M gibt, die auf allen Eingaben hält, mit Satz Es sei D ⊆ Seq(N) und f : D → Seq(N) eine Funktion. M sei eine RAM, die f berechnet. Dann gilt: Es existiert eine Turingmaschine M 0 mit f = f˜M 0 . Insbesondere: Wenn für A ⊆ Seq(N) eine RAM M existiert, die die charakteristische Funktion cA von A berechnet, dann ist A rekursiv (d.h. cA kann von einer TM M 0 berechnet werden). Beweis: Wir beschreiben, wie M 0 arbeitet. Wieder: M 0 kann mechanisch“ (algorithmisch) aus dem Pro” gramm von M erzeugt werden. A = {(a1, . . . , an) ∈ Seq(N) | bin(a1)# · · · #bin(an) ∈ LM }. FG KTuEA, TU Ilmenau AT – 11.05.2006 40 FG KTuEA, TU Ilmenau 41 0 : B0 Befehl Kommentar R2 ← 1 Konstante 1 a00 R4 ← 1 if (R3 = 0) goto 6 Zeilen 2–5: R4 ← R4 ∗ R1 Schleife R3 ← R 3 − R2 goto 2 Resultatformat R1 ← R4 R0 ← 1 herstellen AT – 11.05.2006 AT – 11.05.2006 M ist durch ein Programm Registermaschinen – Beispielprogramm Zeile 0 1 2 3 4 5 6 7 FG KTuEA, TU Ilmenau 1 : B1 .. l − 1 : Bl−1 mit l Programmzeilen aus dem Befehlsvorrat für Registermaschinen gegeben. 42 FG KTuEA, TU Ilmenau AT – 11.05.2006 43 Idee: Halte die Registerinhalte von M in Binärdarstellung auf einem Band von M 0, zusammen mit den Registernummern. Bandinschrift: ··· Beispiel: hR0i = 5, hR3i = 0, hR4i = 12, hR7i = 3 Darstellung auf dem Band: · · · B ##100#1100##11#0##0#101##111#11## B · · · BB ##bin(i1)#bin(b1)##bin(i2)#bin(b2)## · · · Achtung: Reihenfolge ist nicht vorgeschrieben! · · · ##bin(im)#bin(bm)## BB · · · Register mit Inhalt 0 dürfen, müssen aber nicht explizit dargestellt sein. stellt Registerinhalte hRi1 i = b1, . . . , hRim i = bm dar. (Alle anderen Registerinhalte sind 0.) FG KTuEA, TU Ilmenau AT – 11.05.2006 44 Befehlszählerstand: Wert in {0, 1, . . . , l − 1}. FG KTuEA, TU Ilmenau AT – 11.05.2006 45 Initialisierung 0 Wird in der Steuereinheit von M gespeichert. Input für RAM M : (a1, . . . , an). Eingabeformat für TM M 0: bin(a1)# · · · #bin(an) Programm von M 0 hat drei Teile: Benötigtes Format: 1. Initialisierung : Umbau der Eingabe auf das für die Simulation benötigte Format; ··· 2. Schritt-für-Schritt-Simulation; BB ##bin(1)#bin(a1)##bin(3)#bin(a2)## · · · ##bin(2n − 1)#bin(an)##bin(0)#bin(n)## Leicht zu konstruieren! (Details: Skript.) 3. Nachbearbeitung : Umbau der Ausgabe auf das für Turingmaschinen geforderte Format. FG KTuEA, TU Ilmenau AT – 11.05.2006 46 FG KTuEA, TU Ilmenau AT – 11.05.2006 47 Schritt-für-Schritt-Simulation: Zweck des Teilprogramms TPz : Simuliere den Schritt zu Befehlszeile z. Für jede Zeile Struktur von TPz hängt von dem Maschinenbefehl in Zeile z ab. z : Bz , 0 ≤ z < l, des Programms von M hat das Programm der TM M 0 ein Teilprogramm“ TPz , ” (Block von Zeilen in der Turingtafel/Übergangsfunktionstabelle) FG KTuEA, TU Ilmenau AT – 11.05.2006 48 Beispiel: 10: Ri ← Rj · Rk Wenige, einfache Maschinenbefehle → wenige, einfache Fälle! FG KTuEA, TU Ilmenau AT – 11.05.2006 49 Beispiel: 10: Ri ← Rj · Rk Teilprogramm TP10 tut folgendes: 4. (Finde Position von Register Ri) 1. (Finde Inhalt von Register Rj ) Suche auf Band 1 das Teilwort ui = ##bin(i)#. Suche auf Band 1 das Teilwort uj = ##bin(j)#. Kontext: ##bin(i)#e1 · · · em## Kontext: ##bin(j)#b1 · · · br ## Übertrage alles rechts hiervon auf Band 3. Kopiere b1 · · · br auf Band 2. Falls ##bin(j)# nicht auf Band 1: Schreibe 0 auf Band 2. Übertrage Restinschrift zurück von Band 3. 2. Analog: schreibe Inhalt von Rk auf Band 3. 3. Unterprogramm: Multipliziere Zahlen auf Band 2, 3. — Resultat: d1 · · · ds auf Band 2 FG KTuEA, TU Ilmenau AT – 11.05.2006 Überschreibe #e1 · · · em## mit #d1 · · · ds## von Band 2. 50 Falls ui auf Band 1 nicht gefunden: hänge neuen Eintrag bin(i)#d1 · · · ds## rechts an Band 1 an. FG KTuEA, TU Ilmenau AT – 11.05.2006 51 5. Lösche Bänder 2 und 3; Kopf auf Band 1 auf Ausgangsposition 6. (Falls l ≥ 12:) Springe zum Teilprogramm TP11. Beispiel: 15: Ri ← RRj Teilprogramm TP15 tut folgendes: (Falls l = 11, springe zur Nachbearbeitung.) 1. Suche auf Band 1 Eintrag für Rj ; übertrage Inhalt b1 · · · br (bzw. 0) auf Band 3. 2. Suche Teilwort ##b1 · · · br # auf Band 1. (Länge r inputabhängig: Technik Textsuche“!) ” Kontext: ##b1 · · · br #c1 · · · ct## Kopiere c1 · · · ct auf Band 2. FG KTuEA, TU Ilmenau AT – 11.05.2006 52 FG KTuEA, TU Ilmenau AT – 11.05.2006 53 Andere Befehle: Analog (auch Übung) 3. Wie 4. im vorherigen Beispiel. 4. Wie 5. im vorherigen Beispiel. Wenn M auf Input a hält: 5. (Falls l ≥ 17:) Springe TP16. (Falls l = 16, springe zur Nachbearbeitung.) Befehlszähler erhält schließlich einen Wert ≥ l. FG KTuEA, TU Ilmenau AT – 11.05.2006 In den Teilprogrammen Nachbearbeitung. 54 FG KTuEA, TU Ilmenau AT – 11.05.2006 TPz erfolgt Sprung zur 55 Nachbearbeitung: Nachbearbeitung: Beispiel: Aus Bandinschrift Aus der Darstellung der Registerinhalte (ungeordnet! durch Nummern strukturiert) ##11#101##10#1111##1001#11 Ausgabeformat herstellen. ##110#11101##0#100##101#10##, Inhalte der Register R1, R3, . . . , R2k−1, mit k = hR0i – entspricht Registerinhalten hR3i = 5, hR2i = 15, hR9i = 3, hR6i = 29, hR0i = 4, hR5i = 2 nebeneinander, durch #-Zeichen getrennt, aufs Band. Mechanismen: Binäres Zählen, Textsuche, Umkopieren. erzeugt die Nachbearbeitung die Ausgabe-Bandinschrift 0#101#10#0, entsprechend der RAM-Ausgabe (0, 5, 2, 0). FG KTuEA, TU Ilmenau AT – 11.05.2006 56 Erreicht: FG KTuEA, TU Ilmenau AT – 11.05.2006 57 Betrachte Rechnung auf Input a = (a1, . . . , an) Logarithmische Kosten: 0 Ein-/Ausgabeverhalten der TM M bildet das der RAM M exakt nach. c(a) := cM,logar(a) Schrittzahl der RAM: ≤ c(a) Anzahl der Schritte der TM? s: maximale Länge der gesamten Inschrift auf Band 1 Abschätzen! t: maximale Bitlänge einer irgendwann in einem Register gespeicherten Zahl. Ausgangsbasis: Kosten der Berechnung der RAM M , im logarithmischen Kostenmaß. FG KTuEA, TU Ilmenau AT – 11.05.2006 58 FG KTuEA, TU Ilmenau AT – 11.05.2006 59 Teilwortsuche (mehrere Bänder helfen!): O(s) TM-Schritte. Abschätzung von s: Kopieren: O(s) TM-Schritte. Initialisierung erzeugt Inschrift der Länge höchstens Teuerste Operationen: Multiplikation und Division.: O(t2) TM-Schritte kak + O(n log n) = O(kak log kak) In jedem RAM-Schritt wächst die Länge der Inschrift auf Band 1 höchstens um einen kleinen konstanten Faktor mal → 1 RAM Schritt führt zu O(s + t2) TM-Schritten. die logarithmischen Kosten des Schritts → Schritt-für-Schritt-Simulation erfordert O(c(a) · (s + t2)) TM-Schritte. Summieren über alle Schritte: s = O(kak log kak + c(a)) Ähnlich: t = O(kak + c(a)). FG KTuEA, TU Ilmenau AT – 11.05.2006 60 Gesamtzahl der von M 0 in der Initialisierung und in der Schrittfür-Schritt-Simulation ausgeführten Schritte: 2 O(c(a) · (s + t )) Einsetzen: O(c(a))·(O(kak log kak+c(a))+O((kak+c(a))2) = O((kak+c(a))3). FG KTuEA, TU Ilmenau AT – 11.05.2006 61 Satz, Fortsetzung: Wenn cM,logar(a) die Kosten der Rechnung von M auf a = (a1, . . . , an) ∈ D im logarithmischen Kostenmaß bezeichnet (vgl. Def. in Abschnitt 1.1) dann macht die simulierende TM M 0 auf Input a O((cM,logar(a) + kak + kbk)3) Schritte, wenn b = f˜M (a) ist. Schrittzahl in der Nachbearbeitung: Bei Ausgabe f˜M (a) = (b1, . . . , bl) Abschätzung O((s+kbk)2). Die Gesamtschrittzahl: • Skript Seiten 76–92 (Auswahl, gemäß Folien). 3 O((kak + kbk + c(a)) ). FG KTuEA, TU Ilmenau AT – 11.05.2006 • Übungsaufgaben drucken und vorbereiten 62 FG KTuEA, TU Ilmenau AT – 11.05.2006 63