Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Theoretische Informatik 1 Teil 2 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2010 Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Übersicht 1 Abstrakte Rechnermodelle: Registermaschinen Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung 2 Kostenmaße und Komplexität uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz 3 Church-Turing These Church-Turing These Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Begriff Algorithmus Das Zehnte Hilbert’sche Problem2 (dt. Originaltext) Eine diophantische (=ganzzahlige) Gleichung mit irgendwelchen Unbekannten und mit ganzen rationalen Zahlenkoeffizienten sei vorgelegt. Man soll ein Verfahren angeben, nach welchem sich mittels einer endlichen Anzahl von Operationen entscheiden läßt, ob die Gleichung in ganzen Zahlen lösbar ist. Hilbert hat also explizit und in definierter abstrakter Form nach einem Entscheidungsalgorithmus gefragt. Er war davon überzeugt, daß es einen solchen prinzipiell immer gibt. Tatsächlich konnte 1970 bewiesen werden, daß es keinen solchen Algorithmus geben kann. 2 David Hilbert präsentiert 1900 in Paris die 23 offenen Probleme der Mathematik Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Algorithmus konkretisiert Verfahren, Operationen, endliche Anzahl endliche, numerierte Anweisungsliste (Programm) Rechenoperationen: + − ∗ ÷ (Zwischen-)Ergebnisse: r0 , r1 , . . . , rk , . . . bedingte Verzweigung (JZERO), Sprung(GOTO) Konstanten #k , direkte Adressierung rk indirekte Adressierung rrk definierter Haltebefehl: END =⇒ Registermaschine (RAM) Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Schema einer Registermaschine (RAM) 1 Graphik aus: Asteroth, Baier: Theoretische Informatik, Pearson Studium Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Befehlssatz einer Registermaschine LOAD x STORE k STORE ∗k ADD x SUB x MULT x DIV x GOTO k JZERO k END r0 := v (x) rk := r0 rrk := r0 r0 := r0 + v (x) r0 := max {0, r0 − v (x)} r0 := r0 ∗ v (x) r0 r0 := b v (x) c b := k if r0 = 0 then b := k b := 0 Argumentwert x v (x) #k k k rk ∗k rrk Register: ∀i ∈ N0 : ri ∈ N0 b = 0 ≡ HALT danach: b := b + 1 (außer nach Verzweigungen) Falls R terminiert, erwarten wir das Ergebnis der Berechnung im Accumulator r0 . Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Formale Beschreibung Ein RM-Programm R = (π1 , . . . , πm ) ist eine endliche Sequenz von Anweisungen. Eine Registerbelegung R = {(j1 , rj1 ), (j2 , rj2 ), . . . , (jl , rjl )} ist eine endliche Menge von Register-Wert-Paaren. Alle Register, die nicht in R aufgezählt sind haben den Wert 0. Die Eingabe für eine RM R soll ein Tuple von k Zahlen x1 , . . . , xk ∈ N0 sein. Die initiale Registerbelegung lautet: R[x1 , . . . , xk ] = {(1, x1 ), (2, x2 ), . . . , (k , xk )} Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Konfigurationen Definition (Konfiguration) Die Konfiguration einer RM ist ein Tupel κ = (b, R), wobei b ∈ N0 der nächste auszuführende Befehls ist und R ⊂ N20 die aktuelle Registerbelegung darstellt. Definition (Konfigurationsrelation − →) R Sei κ = (b, R) und κ0 = (b0 , R 0 ), dann ist κ − → κ0 wahr, gdw. R entweder πb ein Sprungbefehl nach b0 und R 0 = R ist, oder b0 = b + 1 und R 0 = {(j, x)} ∪ (R \ {(i, y ) ∈ N20 |i = j}), wobei j das von πb adressierte Register und x dessen neu berechneter Inhalt ist. Eine terminierte Konfiguration (0, R) hat keine Nachfolgekonfiguration. Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Konfigurationen n ∗ R R Definition (− →,− →) 0 κ− → κ0 genau dann wenn κ = κ0 . R n+1 κ −−→ κ0 R 2 n gdw ∃κ00 ∈ N × 2N0 : κ − → κ00 ∧ κ00 − → κ0 R R ∗ − → ist die reflexive, transitive Hülle von − →. R R Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Definition Die durch R berechnete partielle Funktion fR : Nk 7→ N0 ist gegeben durch 2 ∗ ⊥ : @R 0 ⊂ 2N0 : κ0 − → (0, R 0 ) R fR (x1 , . . . , xk ) = 2 ∗ r0 : ∃R 0 ⊂ 2N0 : κ0 − → (0, R 0 ) ∧ (0, r0 ) ∈ R 0 R wobei κ0 = (1, R[x1 , . . . , xk ]) die Startkonfiguration darstellt. Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Algorithmusbegriff konkretisiert Befehlssatz formale Beschreibung Codierung Codierung des Input Codierungen x1 , . . . , xn ∈ N gesucht für Ganze Zahlen ⇒ xi = |x|, xi+1 = sign(x) Rationale Zahlen ⇒ Vorkommateil, Nachkommateil, Vorzeichen ⇒ Zähler, Nenner, Vorzeichen Graphen G(V , E) ⇒ Anzahl Knoten, quardatische Adjazenzmatrix aufzählen ⇒ Adjazenzmatrix zeilenweise binär verschlüsseln Programm einer RM ⇒ zeilenweise, Befehlscode + Argument ∗ 20 Sinnvolle Kodierung: keine systematische Kompression möglich. Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beispiel: Berechne x y Startkonfiguration: κ0 = (1, R[x, y ]), x, y ∈ N0 Gesucht: RM-Programm R, sodaß fR (x, y ) = x y Pseudocode für z = x y z = 1; while y > 0 z := z ∗ x; y := y − 1; wend Bernhard Nessler 1 2 3 4 5 6 7 8 9 10 11 12 LOAD #1 STORE 3 LOAD 2 JZERO 11 SUB #1 STORE 2 LOAD 3 MULT 1 STORE 3 GOTO 3 LOAD 3 END Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz uniforme Kostenmaße i Es gilt: (1, R[x1 , . . . , xk ]) − → (bi , Ri ), mit bN = 0 R Definition (uniforme Zeitkosten) Die uniformen Zeitkosten der RM R bei Eingabe von x1 , . . . , xk sind definiert als u tR (x1 , . . . , xk ) = N Definition (uniforme Platzkosten) Die uniformen Platzkosten der RM R bei Eingabe von x1 , . . . , xk sind definiert als ∞ X 1 ∃0 ≤ i ≤ N : ri,j 6= 0 u sR (x1 , . . . , xk ) = 0 ∀0 ≤ i ≤ N : ri,j = 0 j=0 Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Logarithmische Länge L(x) Definition (Logarithmische Länge) Sei x ∈ N0 , dann ist die Logarithmische Länge von x die Anzahl der für die binäre Darstellung von x benötigten Bits. 1 : x =0 L(x) = blog xc + 1 : x ≥1 Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz logarithmische Zeitkosten Definition (logarithmische Zeitkosten) Die logarithmischen Zeitkosten der RM R bei Eingabe von x1 , . . . , xk sind definiert als 1 πb =GOTO|END i L(ri,0 ) πb =JZERO op i L(ri,0 )+L(op) πb =ADD|SUB|MULT |DIV #op i L(ri,0 )+L(op) πb =STORE op i N−1 πb =ADD|SUB|MULT |DIV op X L(ri,0 )+L(op)+L(ri,op ) i L(r )+L(op)+L(r ) πb =STORE ∗op tR (x1 , . . . , xk ) = i L(ri,0 )+L(op)+L(ri,op )+ i,0 i,op i=0 +L(ri,r ) πb =ADD|SUB|MULT |DIV ∗op i,op i L(op) πb =LOAD #op i L(op)+L(r ) πb =LOAD op i L(op)+L(ri,op )+L(r ) π =LOAD ∗op i,op Bernhard Nessler i,ri,op bi Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz logarithmische Platzkosten Definition (logarithmische Platzkosten) Die logarithmischen Platzkosten der RM R bei Eingabe von x1 , . . . , xk sind definiert als ∞ X max0≤i≤N L(ri,j ) ∃0 ≤ i ≤ N : ri,j = 6 0 sR (x1 , . . . , xk ) = 0 ∀0 ≤ i ≤ N : ri,j = 0 j=0 Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beispiel x y , Kosten pro Befehl 1 LOAD #1 2 STORE 3 3 LOAD 2 4 5 6 7 8 9 10 11 12 JZERO 11 SUB #1 STORE 2 LOAD 3 MULT 1 STORE 3 GOTO 3 LOAD 3 END r0 ← 1 r3 ← r0 r0 ← r2 r0 r0 r2 r0 r0 r3 ? =0 ← r0 − 1 ← r0 ← r3 ← r0 ∗ r1 ← r0 r0 ← r3 Bernhard Nessler uniform 1 1 1 1 1 1 1 1 1 1 1 1 logarithmisch 1 3 2 + L(r2 ) L(r0 ) L(r0 ) + 1 2 + L(r0 ) 2 + L(r3 ) L(r0 ) + 1 + L(r1 ) 2 + L(r0 ) 1 2 + L(r3 ) 1 Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beispiel x y Uniforme Zeitkosten: u tR (x, y ) = 4 + Zeile 1-4 + 8y + Zeile 5-10,3,4; y Durchläufe +2 Zeile 11,12 = 8y + 6 Logarithmische Zeitkosten: P ( yi=1 L(i) ≈ y (L(y ) − 1)) tR (x, y ) = 9 + 2L(y ) + yL(x) P P + 4 yi=1 L(i) + 3L(x) yi=1 i − yL(x) + 11y 3 3 ≈ y 2 L(x) + (4y + 2)L(y ) + y (7 − L(x)) + 9 2 2 Bernhard Nessler Theoretische Informatik 1 Z 1-4,11-12 Z 5-10,3-4 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Komplexität Definition (Zeitkomplexität, Laufzeit) Die Zeitkomplexität TR (n) einer RM R in Abhängigkeit der logarithmischen Länge n der Eingabe ist definiert als TR (n) = max (x1 ,...,xk )∈Nk0 : L(x1 )+···+L(xk )≤n tR (x1 , . . . , xk ) TR (n) = f (n) ⇒ tR (x1 , . . . , xk ) ≤ f (L(x1 ) + . . . + L(xk )) Definition (Platzkomplexität, Speicherbedarf) Die Platzkomplexität SR (n) einer RM R in Abhängigkeit der logarithmischen Länge n der Eingabe ist definiert als SR (n) = max (x1 ,...,xk )∈Nk0 : L(x1 )+...+L(xk )≤n Bernhard Nessler sR (x1 , . . . , xk ) Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beispiel x y , Komplexität TRu Unter dem uniformen Kostenmaß: u tR (x, y ) = 8y + 6 ny <= 8 · 2 L(x) = nx , L(y ) = ny +6 u TR (n) <= 8 · 2n−1 + 6 n = nx + ny = O(2n ) Linear im Eingabewert heißt exponentiell in der Eingabelänge! Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beispiel x y , Komplexität TR Unter dem logarithmischen Kostenmaß: 3 2 3 y L(x) + (4y + 2)L(y ) + y (7 − L(x)) + 9 2 2 3 3 ≤ 22ny nx + (4 · 2ny + 2)ny + 2ny (6 − nx ) + 9 2 2 tR (x, y ) = 3 2n 3 2 n + (4 · 2n + 2)n + 2n (6 − n) + 9 2 2 3 5 ≤ n22n + n2n + 6 · 2n + 2n + 9 2 2 = O(n22n ) TR (n) ≤ also sogar superexponentielle Laufzeit (∈ / O(poly (n))) Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz uniforme vs. logarithmische Kosten Ein Problem heißt effizient lösbar, wenn es eine Registermaschine R gibt, die das Problem in polynomieller Zeit löst. Solange man nur die Frage der polynomiellen Laufzeit beantworten möchte, kann man unter folgenden Voraussetzungen das uniforme Kostenmaß verwenden. u (n) = O(poly (n))) TR maxi,j L(ri,j ) = O(poly (n)) Sind beide Voraussetzungen erfüllt, dann gilt TR (n) = O(poly (n)) Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beweisskizze u tR (x1 , . . . , xk ) = N−1 X 1 i=0 tR (x1 , . . . , xk ) = N−1 X i=0 {1 | L(op) | L(ri,op ) | L(ri,ri,op )} {z } | bis zu 4 Summanden h(x1,...,k ) := max L(ri,j ) und H(n) = i,j tR (x1,...,k ) ≤ 4 N−1 P i=0 TR (n) ≤ ⇒ max L(x1 )+...+L(xk )≤n h(x1,...,k ) u (x h(x1,...,k ) = 4tR 1,...,k ) · h(x1,...,k ) max L(x1 )+...+L(xk )≤n u (x u (4tR 1,...,k ) · h(x1,...,k )) ≤ 4TR (n) · H(n) u (n) · H(n)) TR (n) = O (TR Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz RM ohne Luxus Das RM - Modell kann ohne Verlust der Berechnungsstärke stark eingeschränkt werden und verzichten auf: Multiplikation (ersezten durch Addition und HALF) Division (ersetzen durch Subtraktion und HALF) Indirekte Adressierung (mühsam) Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These uniformes Kostenmaße logarithmische Kostenmaße Komplexität Effizienz Beispiele Von einer Registermaschine R ist die uniforme Zeitkomplexität u bekannt. Berechne daraus die bestmögliche Abschätzung TR der logarithmischen Zeitkomplexität (H(n) unbekannt). a) allgemein b) falls R kein MULT enthält Zeige: Zu jeder Registermaschine R existiert eine Registermaschine R0 , die weder MULT noch DIV benützt, so daß fR0 = fR und TR0 (n) = O(TR (n)2 ) Bernhard Nessler Theoretische Informatik 1 Abstrakte Rechnermodelle: Registermaschinen Kostenmaße und Komplexität Church-Turing These Church-Turing These Church-Turing These Church-Turing These Die Klasse der intuitiv berechenbaren Funktion ist genau die Klasse der Turing-berechenbaren (durch ein Turingvollständiges Prozessmodell berechenbaren) Funktionen. Turing, Church (u.a.) haben bewiesen, daß der λ-calculus bzw. Rekursionen sowie Turing-äquivalente Maschinen (z.B. Registermaschinen) Turing-vollständige Prozessmodelle sind. Erweiterte Church’sche These Jedes sinnvolle Prozessmodell kann effizient auf einem Standardmodell (Turing-Maschine, Registermaschine) simuliert werden. Effizient heißt, daß der Zeitverlust maximal polynomiell ist Diese These ist für alle bekannten Prozessmodelle bewiesen. Bernhard Nessler Theoretische Informatik 1