Algorithmentheorie 2. Vorlesung Martin Dietzfelbinger 13. April 2006 FG KTuEA, TU Ilmenau AT 13.04.2006
Maschinenmodelle Registermaschinen (RAMs) bearbeiten Zahlen Turingmaschinen (TMn) bearbeiten Wörter/Strings/Zeichenfolgen FG KTuEA, TU Ilmenau AT 13.04.2006 1
Registermaschinen Random Access Machine Rechner mit wahlfreiem Speicherzugriff 0: 1: 2:... l 1: B B B B 0 1 2 l 1 BZ 4 3 R 5 0 4 0 2 0 R R R R R R 0 1 2 3 4 5 6 Steuereinheit mit Programm und Befehlszähler Speicher FG KTuEA, TU Ilmenau AT 13.04.2006 2
Registermaschinen Komponenten: Speicher: Register R 0, R 1, R 2,... Inhalt: Natürliche Zahlen. Zu jedem Zeitpunkt: Nur endlich viele 0. Steuereinheit mit Befehlszähler Programm: Liste (B 0,..., B l 1 ) von Befehlen ( Primitiv-Assembler, das Programm spezifiziert RAM M) Befehlssatz: Siehe Skript. FG KTuEA, TU Ilmenau AT 13.04.2006 3
Registermaschinen Beispielprogramm Berechnung von a a 1 0. Zeile Befehl Kommentar 0 R 2 1 Konstante 1 1 R 4 1 a 0 0 2 if (R 3 = 0) goto 6 Zeilen 2 5: 3 R 4 R 4 R 1 Schleife 4 R 3 R 3 R 2 5 goto 2 6 R 1 R 4 Resultatformat 7 R 0 1 herstellen FG KTuEA, TU Ilmenau AT 13.04.2006 4
Registermaschinen Programmablauf Trace; Protokoll; Berechnung Schritt-Nr. R 0 R 1 R 2 R 3 R 4 BZ 0 2 6 0 3 0 0 1 2 6 1 3 0 1 2 2 6 1 3 1 2 3 2 6 1 3 1 3 4 2 6 1 3 6 4 5 2 6 1 2 6 5 6 2 6 1 2 6 2 7 2 6 1 2 6 3 FG KTuEA, TU Ilmenau AT 13.04.2006 5
Schritt-Nr. R 0 R 1 R 2 R 3 R 4 BZ 7 2 6 1 2 6 3 8 2 6 1 2 36 4 9 2 6 1 1 36 5 10 2 6 1 1 36 2 11 2 6 1 1 36 3 12 2 6 1 1 216 4 13 2 6 1 0 216 5 14 2 6 1 0 216 2 15 2 6 1 0 216 6 16 2 216 1 0 216 7 17 1 216 1 0 216 8 FG KTuEA, TU Ilmenau AT 13.04.2006 6
Registermaschinen Programmablauf Eingabe: Input (a 0,..., a n 1 ) N n : Anfangs steht n in R 0, a 0,..., a n 1 in R 1, R 3, R 5,..., R 2n 1. (R 2, R 4,... : Hilfsregister.) Dann wird Schritt für Schritt ausgeführt, gemäß Programm M. Halten: Wenn BZ l. Ausgabe: R 1, R 3,..., R 2m 1, wo m = R 0 FG KTuEA, TU Ilmenau AT 13.04.2006 7
Registermaschinen Beispiel Berechne Summe a 0 +... + a n 1 (Ausgabe in R 1 ) und Produkt a 0... a n 1 (Ausgabe in R 3 ). In R 2 : von n nach 0 herunterzählen in R 4 : Summe, in R 6 : Produkt akkumulieren, R 8 : Index des nächsten zu verarbeitenden Inputregisters, R 10 : Inhalt dieses Registers, R 12 : Konstante 1, R 14 : Konstante 2. FG KTuEA, TU Ilmenau AT 13.04.2006 8
Zeile Befehl Kommentar 0 R 12 1 Konstante 1 R 14 2 laden 2 R 2 R 0 n ins Zählregister 3 R 4 0 Initialisiere Teilsumme 4 R 6 1 und Teilprodukt 5 R 8 1 Indexregister auf R 1 stellen 6 if (R 2 = 0) goto 13 Schleife: Zeilen 6 12 7 R 10 R R8 Operanden holen 8 R 4 R 4 + R 10 addieren 9 R 6 R 6 R 10 multiplizieren 10 R 8 R 8 + R 14 Indexregister um 2 erhöhen 11 R 2 R 2 R 12 Zähler dekrementieren 12 goto 6 zum Schleifentest 13 R 1 R 4 Ausgabeformat 14 R 3 R 6 herstellen: 15 R 0 2 2 Ausgabewerte FG KTuEA, TU Ilmenau AT 13.04.2006 9
Registermaschinen berechnete Funktion Definition Für eine RAM M definieren wir: (a) H M := {(a 0,..., a n 1 ) Seq(N) auf Eingabe (a 0,..., a n 1 ) angesetzt, hält M nach endlich vielen Schritten} (b) Für a = (a 0,..., a n 1 ) Seq(N) sei undefiniert, falls a / H M ; (b f M (a) = 0,..., b m 1 ), falls M auf Eingabe (a 0,..., a n 1 ) beim Anhalten die Ausgabe (b 0,..., b m 1 ) erzeugt. f M heißt die von M berechnete Funktion. FG KTuEA, TU Ilmenau AT 13.04.2006 10
(c) Die Menge der RAM-berechenbaren Funktionen ist die Menge aller Funktionen f, die sich als f M oder als die Einschränkung eines f M auf ein N n, n fest, beschreiben lassen. FG KTuEA, TU Ilmenau AT 13.04.2006 11
Registermaschinen Laufzeit/Kosten Uniformes Kostenmaß oder Schrittmaß: c M,unif (a) Anzahl der Schritte, die M auf Eingabe a macht. FG KTuEA, TU Ilmenau AT 13.04.2006 12
Registermaschinen Laufzeit/Kosten Logarithmisches Kostenmaß oder Bitmaß Idee: es kostet 1, ein gespeichertes Bit zu lesen oder sonst zu verwenden. c M,logar (a) oder c logar (a) Jede in einem ausgeführten Befehl als Registerinhalt oder Operand vorkommende Zahl p trägt bin(p) = max{1, log 2 (p + 1) } (die Anzahl der Bits in der Binärdarstellung bin(p)) zu den Kosten bei, im Zusatz zu Grundkosten 1 für jeden Befehl. FG KTuEA, TU Ilmenau AT 13.04.2006 13
Berechnung von a a 1 0. Beispielprogramm Zeile Befehl Kommentar 0 R 2 1 Konstante 1 1 R 4 1 a 0 0 2 if (R 3 = 0) goto 6 Zeilen 2 5: 3 R 4 R 4 R 1 Schleife 4 R 3 R 3 R 2 5 goto 2 6 R 1 R 4 Resultatformat 7 R 0 1 herstellen FG KTuEA, TU Ilmenau AT 13.04.2006 14
Beispielprogramm Uniforme Kosten: c M,unif (a 0, a 1 ) = 5 + 4a 1 Logarithmische Kosten: c M,logar (a 0, a 1 ) = O(a 2 1 log a 0 ) + O(a 1 log a 1 ) + O(1) = O(a 2 1 log a 0 ). FG KTuEA, TU Ilmenau AT 13.04.2006 15
RAMs Symbolische Marken/Registernamen Ziel: Maximum von n Zahlen. R 0 für R 2 Konstante 0 R 1 für R 4 Konstante 1 R 2 für R 6 Konstante 2 R max für R 8 derzeitiges Maximum R akt für R 10 Zeiger im Array R hilf für R 12 Hilfsregister FG KTuEA, TU Ilmenau AT 13.04.2006 16
R 0 0 Initialisiere R 1 1 Konstante R 2 2 R max 0 max( ) := 0 R akt R 2 R 0 Zeiger auf R akt R akt R 1 R 2n 1 stellen fertig?: if (R akt = 0) goto fertig for-schleife R hilf R Rakt R hilf R hilf R max if (R hilf = 0) goto gleich R max R Rakt R max R Rakt gleich: R akt R akt R 2 goto fertig? fertig: R 1 R max Ausgabe- R 0 1 format FG KTuEA, TU Ilmenau AT 13.04.2006 17
RAMs Abstraktion/Idealisierung Man kann im Prinzip jedes Pascal/C/C++/Java-Programm in ein RAM-Programm transformieren, das dasselbe Ein-/Ausgabeverhalten hat. Dasselbe gilt für Haskell (funktional) oder Prolog (logisch) usw. (Benutze Compiler oder Interpretierer, führt schließlich auf Maschinenprogramm RAM-Programm.) FG KTuEA, TU Ilmenau AT 13.04.2006 18
RAMs Abstraktion/Idealisierung Jedes RAM-Programm kann in ein äquivalentes Pascal/C/C++/Java-Programm transformiert werden. Jede RAM-berechenbare Funktion kann durch ein Pascal/C/C++/Java-Programm berechnet werden. Wir abstrahieren von Speicherplatzbeschränkungen Rechenzeitbeschränkungen FG KTuEA, TU Ilmenau AT 13.04.2006 19
Turingmaschinen rechnen mit Zeichenreichen verallgemeinern DFAs und DPDAs verallgemeinern NFAs und NPDAs ( Nichtdeterminismus ) FG KTuEA, TU Ilmenau AT 13.04.2006 20
Turingmaschinen... B B B b a n d i n B B * # s c h r i f t B B B B B B B... Lese Schreib Kopf: Schreiben Lesen Bewegen um 1 Bandfeld Übergangsfunktion δ q m q 0 q 1 q q 3 2 Steuereinheit gegenwärtiger Zustand Zustandsmenge Q q FG KTuEA, TU Ilmenau AT 13.04.2006 21
Turingmaschinen Komponenten ein beidseitig unendliches Band, in Felder eingeteilt in Bandfeld: ein Bandbuchstabe aus Alphabet Γ Lese-/Schreibkopf, bewegt sich um (R/N/L) 1 Feld pro Schritt Steuereinheit mit Zustandsmenge Q und Programm oder Übergangsfunktion : δ : Q Γ Q Γ {R, N, L} { } FG KTuEA, TU Ilmenau AT 13.04.2006 22
Turingmaschinen Def.: Eine Turingmaschine M besteht aus sieben Komponenten Q, Σ, Γ, B, q 0, F, δ, wobei gilt: (a) Q ist eine endliche Menge. (Q ist die Menge der Zustände.) (b) Σ ist eine endliche nichtleere Menge. (Σ ist das Eingabealphabet.) (c) Γ ist eine endliche Menge mit Σ Γ. (Γ ist das Bandalphabet.) Dabei ist B Γ Σ. (B ist das Blanksymbol.) FG KTuEA, TU Ilmenau AT 13.04.2006 23
(d) q 0 Q. (q 0 ist der Startzustand.) (e) F Q. (F ist die Menge der akzeptierenden Zustände.) (f) δ : Q Γ Q Γ {R, N, L} { } ist die Übergangsfunktion. (Wenn δ(q, a) =, dann gilt δ(q, a) als undefiniert. δ ist also eine partielle Funktion.) FG KTuEA, TU Ilmenau AT 13.04.2006 24
Turingmaschinen ein Schritt Lies das Symbol a Γ, das in der eben vom Lese-Schreib- Kopf besuchten Zelle steht; Entscheide aufgrund des gegenwärtigen Zustands q und a, was der neue Zustand q, das neue Symbol a, die Bewegungsrichtung D sein soll, und führe die entsprechenden Übergänge aus. FG KTuEA, TU Ilmenau AT 13.04.2006 25
Turingmaschinen Startkonfiguration B B B B B B B B B B B e i n g a b e B B B B B B B B B B...... q 0 FG KTuEA, TU Ilmenau AT 13.04.2006 26
Turingmaschinen Ausgabewort... B i r r e l e v a n t r e s u l t a t B B i r r e l e v... q Alternative für Entscheidungsprobleme (Ja/Nein): Ausgabe per Zustand beim Anhalten. FG KTuEA, TU Ilmenau AT 13.04.2006 27
Turingmaschinen Beispiel TM M soll genau die Wörter der Sprache L = {a n b n c n n 0} akzeptieren. Wissen: Diese Sprache ist nicht kontextfrei. Also: TM mächtiger als NPDAs. FG KTuEA, TU Ilmenau AT 13.04.2006 28
Q = {A, C, D, E, H, Y } q 0 = A Σ = {a, b, c} Γ = {a, b, c, X, B} Blankbuchstabe B Turingmaschinen Beispiel FG KTuEA, TU Ilmenau AT 13.04.2006 29
Idee: Turingmaschinen Beispiel Fahre mit dem Kopf über den Eingabebereich hin und her. Bei jeder Reise von links nach rechts streiche ein a, ein b, ein c ab (ersetze durch X). Schließlich müssen alle Eingabebuchstaben durch X ersetzt worden sein. FG KTuEA, TU Ilmenau AT 13.04.2006 30
Übergangsfunktion δ als Tabelle: a q a b c X B A (C, X, R) (A, X, R) (Y, B, N) C (C, a, R) (D, X, R) (C, X, R) D (D, b, R) (E, X, R) (D, X, R) E (E, c, R) (H, B, L) H (H, a, L) (H, b, L) (H, c, L) (H, X, L) (A, B, R) Y FG KTuEA, TU Ilmenau AT 13.04.2006 31
Turingmaschinen graphische Darstellung X X, R X X a a, R, R X X b b, R, R A a X, R C b X, R D Start B B, N B B, R c X, R Y X X, L a a, L b b, L c c, L H B B, L E c c, R FG KTuEA, TU Ilmenau AT 13.04.2006 32
Turingmaschinen Beispiel Binäraddition a q 00 01 10 11 0 1 2 B p 0 (p, 0, R) (p, 1, R) (p, 1, R) (p, 2, R) p (p, 0, R) (p, 1, R) (p, 1, R) (p, 2, R) (r 0, B, L) r 0 (r 0, 0, L) (r 0, 1, L) (r 1, 0, L) (s 0, B, R) r 1 (r 0, 1, L) (r 1, 0, L) (r 1, 1, L) (s 1, 1, N) s 0, s 1 Ablauf einer Berechnung: FG KTuEA, TU Ilmenau AT 13.04.2006 33
B B (p 0, 10) 11 00 01 11 B B B 1 (p, 11) 00 01 11 B B B 1 2 (p, 00) 01 11 B B B 1 2 0 (p, 01) 11 B B B 1 2 0 1 (p, 11) B B B 1 2 0 1 2 (p, B) B B 1 2 0 1 (r 0, 2) B B B 1 2 0 (r 1, 1) 0 B B B 1 2 (r 1, 0) 0 0 B B B 1 (r 0, 2) 1 0 0 B B B (r 1, 1) 0 1 0 0 B B (r 1, B) 0 0 1 0 0 B B (s 1, 1) 0 0 1 0 0 B FG KTuEA, TU Ilmenau AT 13.04.2006 34
Turingmaschinen TMn definieren mathematisch exakt berechenbare Funktionen und entscheidbare Sprachen. (Es gibt einen Algorithmus zur berechning von f bzw. es gibt einen Algorithmus zur Entscheidung der Frage Ist x L?) Operationale Semantik Hier beispielhaft einmal vollständig ausgeführt. FG KTuEA, TU Ilmenau AT 13.04.2006 35
Turingmaschinen Konfiguration snapshot, Momentaufnahme, instantaneous description : Wort α 1 (q, a)α 2 mit q Q, a Γ, α 1, α 2 Γ, wobei α 1 nicht mit B beginnt und α 2 nicht mit B endet. Interpretation: Bandinhalt α 1 a α 2, außenherum B s, Kopf auf der Zelle mit Buchstaben a, Zustand q.... B B B B α 1 a α 2 B B B B B B B B... q FG KTuEA, TU Ilmenau AT 13.04.2006 36
Turingmaschinen Nachfolgekonfiguration k = α 1 (q, a)α 2 gegeben. δ(q, a) = : k Haltekonfiguration, kein Nachfolger. Sonst: δ(q, a) = (q, a, D) Bilde ˆk = B α 1 (q, a)α 2 B = γ 1 c(q, a)dγ 2 ˆk := γ 1 (q, c)a dγ 2, falls D = L; γ 1 ca (q, d)γ 2, falls D = R; γ 1 c(q, a )dγ 2, falls D = N. Entferne aus ˆk alle B s am Anfang und am Ende. Liefert Nachfolgekonfiguration k. FG KTuEA, TU Ilmenau AT 13.04.2006 37
Turingmaschinen Beispiele XXaX(C, b)bxcc XXaXX(D, b)xcc und XXaXXbX(D, c)c XXaXXbXX(E, c), aber auch cxcx(d, b) cxcxx(d, B), Haltekonfiguration (nicht akzeptierend): XaXb(D, a)c Haltekonfiguration (akzeptierend): XXX(Y, B) FG KTuEA, TU Ilmenau AT 13.04.2006 38
TM - indirekte Nachfolger k k : es existiert eine Folge k 0 M k 1 k i = k Erlaubt: i = 0, d.h. k k gilt. Reflexive und transitive Hülle von M FG KTuEA, TU Ilmenau AT 13.04.2006 39
Turingmaschinen Startkonfiguration... auf Eingabe x = a 1... a n Σ : init(x) := init M (x) := { (q0, a 1 )a 2 a n falls n 1 (q 0, B) falls n = 0 FG KTuEA, TU Ilmenau AT 13.04.2006 40
Gegeben: M, x. Turingmaschinen Berechnung Startkonfiguration k 0 = init(x) bestimmt eindeutig Konfigurationsfolge k 0 k 1 k 2 (endlich oder unendlich): die Berechnung von M auf x. FG KTuEA, TU Ilmenau AT 13.04.2006 41
Turingmaschinen 2 Möglichkeiten (i) Die Berechnung von M auf x ist endlich, d.h. init(x) k für eine (eindeutig bestimmte) Haltekonfiguration k. Wir sagen: M auf x hält. Wenn k akzeptierend: M akzeptiert x; wenn k verwerfend: M verwirft x. (ii) Die Berechnung von M auf x ist eine unendliche Folge von Konfigurationen. Wir sagen: M auf x hält nicht. FG KTuEA, TU Ilmenau AT 13.04.2006 42
Turingmaschinen Akzeptierte Sprache L M := {x Σ M akzeptiert x} FG KTuEA, TU Ilmenau AT 13.04.2006 43
Turingmaschinen Haltesprache H M := {x Σ M hält auf x}. FG KTuEA, TU Ilmenau AT 13.04.2006 44
Rekursiv aufzählbare und rekursive Sprachen Definition Eine Sprache L heißt rekursiv aufzählbar (r. a.) (oder TMakzeptierbar), falls es eine Turingmaschine M gibt, so dass L = L M ist. Definition Eine Sprache L heißt rekursiv (rek.) (oder TMentscheidbar), falls es eine Turingmaschine M gibt, die auf allen Inputs x Σ hält, so dass L = L M ist. FG KTuEA, TU Ilmenau AT 13.04.2006 45
Haltesprachen = r.a. Sprachen Bemerkung: {L M M TM} = {H M M TM}. Die Haltesprachen sind identisch mit den r.a. Sprachen. FG KTuEA, TU Ilmenau AT 13.04.2006 46
Turingmaschinen Ausgabe Ausgabe f M (x) von M auf x: Falls M auf x nicht hält, ist f M (x) undefiniert. Sonst sei k die (eindeutige) Haltekonfiguration mit init(x) M k, und k = α 1(q, b)α 2, α 1, α 2 Γ, b Γ, q Q. Dann ist f M (x) das längste Präfix von bα 2, das den Blankbuchstaben B nicht enthält. Beachte: Für die Bestimmung der Ausgabe von M auf x ist es unerheblich, ob M x akzeptiert oder verwirft. FG KTuEA, TU Ilmenau AT 13.04.2006 47
Definition Partiell rekursive Funktionen Eine Funktion f : D R heißt partiell rekursiv, falls es eine TM M = (Q, Σ, Γ,...) gibt derart dass D = H M, R (Γ {B}) und f = f M ist. Definition Eine Funktion f : Σ R heißt rekursiv oder deutlicher total rekursiv, falls es eine TM M = (Q, Σ, Γ,...) gibt derart dass f = f M ist. Beachte: Diese TM M hält auf allen Inputs x Σ. FG KTuEA, TU Ilmenau AT 13.04.2006 48
Skript Seiten 15 36 Bis nächste Woche Übungsaufgaben drucken und vorbereiten Schöne Ostertage! FG KTuEA, TU Ilmenau AT 13.04.2006 49