Algorithmentheorie 6. Vorlesung

Werbung
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
Herunterladen