Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012
Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung Kostenmaße uniformes Kostenmaße logarithmische Kostenmaße Komplexität Komplexität Effizienz Church-Turing These Church-Turing These Zusammenfassung
Begriff Algorithmus Das Zehnte Hilbert sche Problem 1 (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ässt, ob die Gleichung in ganzen Zahlen lösbar ist. David Hilbert (1912) 2 1 David Hilbert präsentiert 1900 in Paris die 23 offenen Probleme der Mathematik 2 Aus Wikipedia - die freie Enzyklopädie
Begriff Algorithmus Hilbert hat also explizit und in definierter abstrakter Form nach einem Entscheidungsalgorithmus gefragt. Er war davon überzeugt, dass es einen solchen prinzipiell immer gibt. Tatsächlich konnte 1970 bewiesen werden, dass es keinen solchen Algorithmus geben kann.
Algorithmus konkretisiert endliche Anzahl an Operationen endliche, nummerierte Anweisungsliste (Programm) Rechenoperationen: + (Zwischen-)Ergebnisse: r 0, r 1,..., r k,... bedingte Verzweigung (JZERO), Sprung(GOTO) definierter Haltebefehl: END = Registermaschine (RM auch RAM (en.))
Schema einer Registermaschine (RM) 1 Graphik aus: Asteroth, Baier: Theoretische Informatik, Pearson Studium
Befehlssatz einer Registermaschine LOAD x r 0 := v(x) STORE k r k := r 0 STORE k r rk := r 0 ADD x r 0 := r 0 + v(x) SUB x r 0 := max {0, r 0 v(x)} MULT x r 0 := r 0 v(x) DIV x r 0 := r 0 v(x) GOTO k b := k JZERO k if r 0 = 0 then b := k END b := 0 danach: b := b + 1 (außer nach Verzweigungen) Argumentwert x v(x) #k k k r k k r rk Register: i N 0 : r i N 0 b = 0 HALT Falls R terminiert, erwarten wir das Ergebnis der Berechnung im Akkumulator r 0.
Formale Beschreibung Ein RM-Programm R = (π 1,..., π m ) ist eine endliche Sequenz von Anweisungen. Eine Registerbelegung R = {(j 1, r j1 ), (j 2, r j2 ),..., (j l, r jl )} 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 Tupel von k Zahlen x 1,..., x k N 0 sein. Die initiale Registerbelegung lautet: R[x 1,..., x k ] = {(1, x 1 ), (2, x 2 ),..., (k, x k )}
Definition (Konfiguration) Konfigurationen Die Konfiguration einer RM ist ein Tupel κ = (b, R), wobei b N 0 der nächste auszuführende Befehls ist und R N 2 0 die aktuelle Registerbelegung darstellt. Definition (Konfigurationsrelation R ) Sei κ = (b, R) und κ = (b, R ), dann ist κ κ wahr, gdw. R entweder π b ein Sprungbefehl nach b und R = R ist, oder b = b + 1 und R = {(j, x)} (R \ {(i, y) N 2 0 i = j}), wobei j das von π b adressierte Register und x dessen neu berechneter Inhalt ist. Eine terminierte Konfiguration (0, R) hat keine Nachfolgekonfiguration.
Konfigurationen Definition ( n R, R ) κ 0 R κ genau dann wenn κ = κ. κ n+1 R κ gdw κ N 2 N2 0 : κ n R κ κ R κ R ist die reflexive, transitive Hülle von R.
Definition (Berechnete partielle Funktion einer RM) Die durch R berechnete partielle Funktion f R : N k 0 N 0 ist gegeben durch r 0 : R : κ 0 R (0, R ) (0, r 0 ) R f R (x 1,..., x k ) = : R : κ 0 R (0, R ) wobei κ 0 = (1, R[x 1,..., x k ]) die Startkonfiguration darstellt. Definition (RM-Berechenbarkeit) Eine partielle Funktion f : N k 0 N 0 wird RM-berechenbar genannt, wenn es eine Registermaschine R gibt, sodass f = f R
Beispiel: Berechne x y Startkonfiguration: κ 0 = (1, R[x, y]), x, y N 0 Gesucht: RM-Programm R, sodass f R (x, y) = x y Pseudocode für z = x y z = 1; while y > 0 z := z x; y := y 1; wend RM Programm 1 LOAD #1 2 STORE 3 3 LOAD 2 4 JZERO 11 5 SUB #1 6 STORE 2 7 LOAD 3 8 MULT 1 9 STORE 3 10 GOTO 3 11 LOAD 3 12 END
uniforme Kostenmaße Es gilt: (1, R[x 1,..., x k ]) i R (b i, R i ), mit b N = 0 Definition (uniforme Zeitkosten) Die uniformen Zeitkosten der RM R bei Eingabe von x 1,..., x k sind definiert als t u R (x 1,..., x k ) = N Definition (uniforme Platzkosten) Die uniformen Platzkosten der RM R bei Eingabe von x 1,..., x k sind definiert als { sr u 1 0 i N : (x ri,j 0 1,..., x k ) = 0 0 i N : r i,j = 0 j=0
Uniforme Zeitkosten: Beispiel x y tr u (x, y) = 4 + Zeile 1-4 + 8y + Zeile 5-10,3,4; y Durchläufe + 2 Zeile 11,12 = 8y + 6 Uniforme Platzkosten: sr u (x, y) = 4 Entspricht das unserer Vorstellung von intuitiver Komplexität?
Logarithmische Länge L(x) Definition (Logarithmische Länge) Sei x N 0, 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) = log x + 1 : x 1
logarithmische Zeitkosten Definition (logarithmische Zeitkosten) Die logarithmischen Zeitkosten der RM R bei Eingabe von x 1,..., x k sind definiert als t R (x 1,..., x k ) = N 1 i=0 1 π bi =GOTO END L(r i,0 ) π bi =JZERO op L(r i,0 )+L(op) π bi =ADD SUB MULT DIV #op L(r i,0 )+L(op) π bi =STORE op L(r i,0 )+L(op)+L(r i,op ) π bi =ADD SUB MULT DIV op L(r i,0 )+L(op)+L(r i,op ) π bi =STORE op L(r i,0 )+L(op)+L(r i,op )+ +L(r i,ri,op ) π bi =ADD SUB MULT DIV op L(op) π bi =LOAD #op L(op)+L(r i,op ) π bi =LOAD op L(op)+L(r i,op )+L(r i,ri,op ) π bi =LOAD op.
logarithmische Platzkosten Definition (logarithmische Platzkosten) Die logarithmischen Platzkosten der RM R bei Eingabe von x 1,..., x k sind definiert als s R (x 1,..., x k ) = j=0 { max0 i N L(r i,j ) 0 i N : r i,j 0 0 0 i N : r i,j = 0
Beispiel x y, logarithmische Zeitkosten pro Befehl uniform logarithmisch 1 LOAD #1 r 0 1 1 1 2 STORE 3 r 3 r 0 1 3 3 LOAD 2 r 0 r 2 1 2 + L(r 2 ) 4 JZERO 11? r 0 = 0 1 L(r0 ) 5 SUB #1 r 0 r 0 1 1 L(r 0 ) + 1 6 STORE 2 r 2 r 0 1 2 + L(r 0 ) 7 LOAD 3 r 0 r 3 1 2 + L(r 3 ) 8 MULT 1 r 0 r 0 r 1 1 L(r 0 ) + 1 + L(r 1 ) 9 STORE 3 r 3 r 0 1 2 + L(r 0 ) 10 GOTO 3 1 1 11 LOAD 3 r 0 r 3 1 2 + L(r 3 ) 12 END 1 1
Uniforme Zeitkosten: Beispiel x y tr u (x, y) = 4 + Zeile 1-4 + 8y + Zeile 5-10,3,4; y Durchläufe + 2 Zeile 11,12 = 8y + 6 Logarithmische Zeitkosten: ( y i=1 L(i) y(l(y) 1)) t R (x, y) = 9 + 2L(y) + yl(x) Z 1-4,11-12 + 4 y i=1 L(i) + 3L(x) y i=1 i yl(x) + 11y Z 5-10,3-4 3 2 y 2 L(x) + (4y + 2)L(y) + y(7 3 2 L(x)) + 9
Komplexität Definition (Zeitkomplexität, Laufzeit) Die Zeitkomplexität T R (n) einer RM R in Abhängigkeit der logarithmischen Länge n der Eingabe ist definiert als T R (n) = max t R (x 1,..., x k ) (x 1,...,x k ) N k 0 : L(x 1)+ +L(x k ) n Definition (Platzkomplexität, Speicherbedarf) Die Platzkomplexität S R (n) einer RM R in Abhängigkeit der logarithmischen Länge n der Eingabe ist definiert als S R (n) = max s R (x 1,..., x k ) (x 1,...,x k ) N k 0 : L(x 1)+...+L(x k ) n
Beispiel x y, Komplexität T u R Unter dem uniformen Kostenmaß: tr u (x, y) = 8y + 6 L(x) = n x, L(y) = n y <= 8 2 ny + 6 n = n x + n y T u R (n) <= 8 2n 1 + 6 = O(2 n ) Linear im Eingabewert heißt exponentiell in der EingabeLänge!
Beispiel x y, Komplexität T R Unter dem logarithmischen Kostenmaß: t R (x, y) = 3 2 y 2 L(x) + (4y + 2)L(y) + y(7 3 2 L(x)) + 9 3 2 22ny n x + (4 2 ny + 2)n y + 2 ny (6 3 2 n x) + 9 T R (n) 3 2 22n n + (4 2 n + 2)n + 2 n (6 3 2 n) + 9 3 2 n22n + 5 2 n2n + 6 2 n + 2n + 9 = O(n2 2n ) also sogar superexponentielle Laufzeit (/ O(poly(n)))
Effizientere Berechnung von x y Grundidee (Square & Multiply): Reduziere die Anzahl der Schleifendurchläufe Ersetzte z = z x durch z = z z Anzahl der Schleifendurchläufe nur mehr: log y Zeitbedarf unter dem uniformen Kostenmaß: TR u (n) = O(n) Zeitbedarf unter dem logarithmischen Kostenmaß: T R (n) = O(2 n )
Polynomielle Zeitbeschränkung Definition (Polynomielle Zeitbeschränkung) Wir nennen eine RM R polynomiell Zeitbeschränkt, falls die Kostenfunktion T R polynomiell Zeitbeschränkt ist. T R (n) = O (poly(n)) d.h. es gibt ein Polynom p für das gilt T R (n) p(n) n N Ein Problem heißt effizient lösbar, wenn es eine polynomiell Zeitbeschränkte Registermaschine R gibt, die das Problem löst.
uniforme vs. logarithmische Kosten Solange man nur die Frage der polynomiellen Laufzeit beantworten möchte, kann man unter folgenden Voraussetzungen das uniforme Kostenmaß verwenden. TR u (n) = O(poly(n))) max i,j L(r i,j ) = O(poly(n)) Sind beide Voraussetzungen erfüllt, dann gilt T R (n) = O(poly(n))
N 1 tr u (x 1,..., x k ) = 1 Beweisskizze i=0 N 1 t R (x 1,..., x k ) = {1 L(op) L(r i,op ) L(r i,ri,op )} }{{} i=0 bis zu 4 Summanden h(x 1,...,k ) := max L(r i,j ) und H(n) = max h(x 1,...,k ) i,j L(x 1 )+...+L(x k ) n t R (x 1,...,k ) 4 N 1 T R (n) i=0 max L(x 1 )+...+L(x k ) n h(x 1,...,k ) = 4t u R (x 1,...,k) h(x 1,...,k ) (4tR u (x 1,...,k) h(x 1,...,k )) 4TR u (n) H(n) T R (n) = O (TR u (n) H(n))
Beweisskizze T R (n) = O (TR u (n) H(n)) laut Annahme: H(n) = O(poly(n)) TR u (n) = O(poly(n)) T R (n) = O(poly(n))
RM ohne Multiplikation Das RM - Modell kann ohne Verlust der Berechnungsstärke eingeschränkt werden indem (z.b.) auf die Multiplikation verzichtet wird: Eine RM R ohne MULT Simuliert eine RM R mit MULT sodass T R (n) = O(T R (n) 2 ) (ohne Beweis)
Church-Turing These Church-Turing These Die Klasse der intuitiv berechenbaren Funktion ist genau die Klasse der Turing-berechenbaren, d.h. durch ein Turing-vollständiges Prozessmodell (z.b. RM), berechenbaren Funktionen. Erweiterte Church sche These Jedes sinnvolle Prozessmodell kann effizient auf einem Standardmodell (Turing-Maschine, Registermaschine) simuliert werden. Effizient heißt, dass der Zeitverlust maximal polynomiell ist Diese These ist für alle bekannten Prozessmodelle bewiesen.
Zusammenfassung Algorithmusbegriff konkretisieren: Maschinenmodelle Registermaschine: ähnlich zu modernem Computer Grundrechenarten als Basisfunktionen Aufpassen bei Kostenmaßen (uniform/logarithmisch) Polynomiell Zeitbeschränkte RM effiziente Berechenbarkeit Viele unterschiedliche Maschinenmodelle Beliebig austauschbar Church-Turing These