Algorithmen und Dtenstrukturen - Mschinenmodelle - Alexnder Sczyr Technische Fkultät sczyr@techfk.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 04/05 / 90 Kpitel 3 - Mschinenmodelle Premle Endliche Automten 3 Registermschinen 4 Invrinten 5 Zusmmenfssung / 90
Premle Zuerst hen wir uns ei Formeln und Gleichungen eng n der Mthemtik gehlten. Dnch hen wir uns m Beispiel der Musik eine Formlisierung üerlegt, die sehr leicht von uns Menschen verstnden werden knn, lso sehr nhe n unserem Verständnis der Modellwelt ist. Die Berechnungen hätten wir dei uch selst noch leicht usführen können. Eine Rechenmschine, die direkt mit Formeln und Gleichungen rechnen knn, git es nicht. Wirkliche Rechner sind viel einfcher ufgeut, und ruchen viele Opertionen, um z.b. eine Gleichung einml nzuwenden. Dies ist die in Kpitel erwähnte semntische Lücke, die durch Progrmmiersprchen und ihre Üersetzer geschlossen wird. Wir egeen uns nun uf die Mschinenseite der semntischen Lücke. 3 / 90 Ziele des Kpitels In diesem Kpitel lernen wir zwei, sehr verschiedene Modelle einer Rechenmschine kennen: Endliche Automten sind ein strktes und sehr einfches Rechnermodell. Sie verreiten Zeichenreichen und hen zhlreiche Anwendungen in der Textverreitung. Registermschinen ähneln relen Prozessoren. An ihnen lernen wir Begriffe wie Befehlszyklus, Konfigurtion, Mschinenfunktion, prtielle und totle Korrektheit kennen. Endliche Automten können nur sehr einfche Aufgen lösen, Registermschien dgegen können im Prinzip (wenn uch mit einigen Verrenkungen) lle Aufgen lösen, die üerhupt ein Rechner lösen knn. Zwischen diesen eiden Extremen git es noch weitere Rechnenmodelle mit unterschiedlicher Leistung, die in der theoretischen Informtik untersucht werden. 4 / 90
Endliche Automten Premle Endliche Automten Einführung Beispiel Formle Sprchen Opertionen uf endlichen Automten Nicht-deterministische endliche Automten (NEA) Anwendung 3 Registermschinen 4 Invrinten 5 Zusmmenfssung 5 / 90 Einführung Einordnung Automt Ein Automt ist eine strkte Mschine der Informtik. Er dient ls Erklärungsmodell und vereinfcht den Vergleich von Algorithmen, ohne uf die Detils der relen Umsetzung chten zu müssen. Ein Automt verreitet Zeichenketten und ht einen internen Zustnd. Endlicher Automt Ein Endlicher Automt knn nur eine endliche Menge n internen Zuständen einnehmen. Er ist weniger mächtig ls die uneschränkte Registermschine, die wir später kennen lernen werden. 6 / 90
Einführung Definition Definition Ein Alphet ist ein endlicher Zeichenvorrt. Eine Zeichenreihe üer Alphet A ist eine Folge... n mit i A, n 0. Für die leere Zeichenreihe (n = 0) schreit mn ε. A ist die Menge ller Zeichenreihen üer A. 7 / 90 Einführung Definition Ein endlicher Automt esteht us einem Alphet A einer endlichen Zustndsmenge S einem Strtzustnd s 0 S einer Zustndsüergngsfunktion δ : S A S einer Menge kzeptierender Zustände F Ülicherweise nimmt mn ls Zustndsmenge S mit S = m die Zhlen [0... m ], und s 0 = 0. 8 / 90
Beispiel Beispiel EA Automt EA A = {, } S = {0,,, 3} s 0 = 0 F = {0} Zustndsüergngsfunktion A δ(s, ) s S 0 3 0 0 3 3 3 3 9 / 90 Beispiel Berechnete Funktion des endlichen Automten Definition Automtenfunktion Die Automtenfunktion des Automten A = (A, S, s 0, δ, F) ist δ A : A S mit δ A (x) = δ (s 0, x) δ (s, ε) = s δ (s, x) = δ (δ(s, ), x) Die Automtenfunktion rechnet lso genu n + Schritte für eine Zeichenreihe der Länge n. 0 / 90
Beispiel Endliche Automten ls Akzeptoren Definition: Akzeptierte Wortmenge Die von A kzeptierte Wortmenge Akz(A) A ist {w A δ A (w) F} Wörter us A \ Akz(A) nennt mn zurückgewiesene Wörter. / 90 Beispiel Betrchtung zu EA Akzeptierte Wörter: ε,,,,,... Zurückgewiesene Wörter:,,,,... Allgemeines Prinzip: Akzeptiert werden elieig viele Auftreten der Zeichenpre oder, einschließlich ε. Akz(EA) = {, } n, n 0 / 90
Beispiel Üergngsdigrmm zu endlichen Automten Die Funktion δ wird grfisch drgestellt: Beispiel EA, 0 3 Zustände f F ekommen einen doppelten Kreis. 3 / 90 Beispiel Betrchtung zu EA (Fortsetzung) Aus Zustnd 3 führt keine Folge von Üergängen in einen kzeptierenden Zustnd. Solche Zustände nennt mn Fehlerzustände und lässt sie weg: 0 δ(s, ) 0 0 0 Ds Digrmm ist dmit kleiner, und die δ-funktion prtiell. 4 / 90
Beispiel Vrinten von EA EA 0 3 Ws sind die fehlenden Üergänge/Fehlerzustände? Ws ist Akz(EA)? 5 / 90 Beispiel Vrinten von EA EA 0 3 Ws sind die fehlenden Üergänge/Fehlerzustände? Ws ist Akz(EA)? Akz(EA) = Akz(EA) {ε} 6 / 90
Beispiel EA3 0 3 Ws sind die fehlenden Üergänge/Fehlerzustände? Ws ist Akz(EA3)? 7 / 90 Beispiel EA3 0 3 Ws sind die fehlenden Üergänge/Fehlerzustände? Ws ist Akz(EA3)? Akz(EA3) = { n, n 0} { n, n 0} 8 / 90
Beispiel EA4 0 3, Hier git es keine Fehlerzustände, trotzdem ist Akz(EA4) A 9 / 90 Beispiel EA4 0 3, Hier git es keine Fehlerzustände, trotzdem ist Akz(EA4) A Akz(EA4) = {xy, xy x, y A } In Worten: EA4 kzeptiert lle Zeichenreihen, die irgendwo ein oder enthlten. 0 / 90
Beispiel EA5 0 Welche Üergänge fehlen? Ws ist Akz(EA5)? / 90 Beispiel EA5 0 Welche Üergänge fehlen? Ws ist Akz(EA5)? Akz(EA5) = { n n 0} { n n 0} / 90
Beispiel Komplement von Wortprolemen Beochtung: Akz(EA5) = A Akz(EA4) Stz Die von endlichen Automten kzeptierten Wortmengen sind geschlossen unter Komplementildung in A. 3 / 90 Beispiel Beweis: Sei A = (A, S, s 0, δ, F). Wir setzen Ā = (A, S, s 0, δ, S \ F). Offensichtlich gilt Akz(Ā) = A Akz(A). Achtung, nhnd der Digrmme ist dies erst offensichtlich, wenn mn lle weggelssenen Zustände und Üergänge wieder ergänzt. 4 / 90
Formle Sprchen Formle Sprchen Definition Eine formle Sprche üer A ist eine elieige Teilmenge L A. Dmit ist für jeden endlichen Automten A die Akzeptierte Wortmenge Akz(A) eine formle Sprche. 5 / 90 Formle Sprchen Formle Sprchen Definition Eine formle Sprche üer A ist eine elieige Teilmenge L A. Dmit ist für jeden endlichen Automten A die Akzeptierte Wortmenge Akz(A) eine formle Sprche. Üerlegung Git es umgekehrt für jede formle Sprche L einen endlichen Automten A mit Akz(A) = L? 6 / 90
Formle Sprchen Gegeneispiel Zur Widerlegung unserer Üerlegung können wir ein einfches Gegeneispiel konstruieren. 7 / 90 Formle Sprchen Gegeneispiel Zur Widerlegung unserer Üerlegung können wir ein einfches Gegeneispiel konstruieren. Idee Wir nutzen die Beschränkung uf endlich viele Zustände ls Anstzpunkt für unser Gegeneispiel. 8 / 90
Formle Sprchen Betrchte L = { m m, m 0} 9 / 90 Formle Sprchen Betrchte L = { m m, m 0} 0 n n n n n+ n+ 30 / 90
Formle Sprchen Betrchte L = { m m, m 0} 0 n n n n n+ n+ Dieser Automt kzeptiert { m m m n}, er für lle m 0 räuchte er eine unendliche Zustndsmenge. Dies ist nur eine Plusiilitätsüerlegung. Wie könnte mn diese Ttsche eweisen? 3 / 90 Formle Sprchen Bedeutung endlicher Automten Endliche Automten ilden die kleinste Klsse einer Hierrchie geildet durch Endliche Automten Kellerutomten (zusätzlich noch einen unendlichen Kellerspeicher) Liner eschränkte Automten (wie Turing-Mschine, nur Bnd eschränkt uf Bereich des ursprünglichen Eingewortes) Turing-Mschinen, Registermschinen (uneschränkter Speicher zw. uneschränktes Bnd) ( Mehr dzu in der Vorlesung Theoretische Informtik) Gute Effizienz und trivile Terminierung 3 / 90
Formle Sprchen Prktische Bedeutung endlicher Automten Einfches Progrmmiermodell für einfche Klsse von Wortprolemen. Viele wichtige Anwendungen Codierungsproleme Üersetzung von Progrmmiersprchen Dokument-Verreitung 33 / 90 Opertionen uf endlichen Automten Verknüpfung endlicher Automten Konktention (uch Produkt gennnt) 0 v o r 3 und 0 o r t 3 ergit 0 v o r 3 o 4 r 5 t 6 34 / 90
Opertionen uf endlichen Automten Belieige Wiederholung Aus l 0 3 wird 0 l 35 / 90 Opertionen uf endlichen Automten Vereinigung Aus 0 v o r 3 und 0 o r t 3 wird 0 v o 4 o r 5 r t 3 6 (Zustände 3, 6 könnte mn zusmmenlegen)... er so einfch geht s nicht immer. 36 / 90
Opertionen uf endlichen Automten Aus 0 t o r 3 und 0 t o t 3 wird 0 t t 4 o o 5 r t 3 6 ds ist kein endlicher Automt... 37 / 90 Nicht-deterministische endliche Automten (NEA) Nicht-deterministische endliche Automten (NEA) Der NEA erlut us einem Zustnd verschiedene Üergänge unter dem gleichen Eingezeichen, ht nch n Schritten eine Menge möglicher Zustände, kzeptiert eine Zeichenreihe, wenn es eine mögliche Üergngsfolge git, die zu einem kzeptierenden Zustnd führt. 38 / 90
Nicht-deterministische endliche Automten (NEA) Nicht-deterministische endliche Automten (NEA) Der NEA erlut us einem Zustnd verschiedene Üergänge unter dem gleichen Eingezeichen, ht nch n Schritten eine Menge möglicher Zustände, kzeptiert eine Zeichenreihe, wenn es eine mögliche Üergngsfolge git, die zu einem kzeptierenden Zustnd führt. Prllel-Universen? Mn knn den nicht-deterministischen endlichen Automten uch so uffssen, dss ei jeder nicht-deterministischen Verzweigung mehrere Prlleluniversen erzeugt werden, in denen jeweils eine Kopie des Automten einen unterschiedlichen Pfd üerprüft. Ein Wort wird dnn vom NEA kzeptiert, wenn es in mindestens einem der Prlleluniversen kzeptiert wird. 39 / 90 Nicht-deterministische endliche Automten (NEA) Stz (Konstruktion von Myhill) Zu jedem NEA git es einen EA, der die gleiche Wortmenge kzeptiert. Beweis-Idee: Im NEA ist für jede Einge nch jedem Schritt eine Menge von Zuständen erreichr. Diese Zustndsmengen sind Zustände des EA. Eine solche Zustndsmenge ist kzeptierender Zustnd des EA, wenn sie einen kzeptierenden Zustnd des NEA enthält. Die Anzhl der Zustände des resultierenden EAs knn exponentiell größer sein ls die des NEAs. 40 / 90
Anwendung Anwendungen von NEAs Reguläre Ausdrücke Für die Suche in und die Verreitung von Texten werden häufig reguläre Ausdrücke verwendet. Diese lssen sich uf NEAs ilden. D NEAs schnell und effizient Entscheidungen üer die Zugehörigkeit einer Einge zur kzeptierten Wortmenge treffen können, werden in den Progrmmiertools die regulären Ausdrücke intern erst einml in einen entsprechenden NEA konvertiert (kompiliert). 4 / 90 Anwendung Bestndteile Regulärer Ausdrücke Symol Bedeutung Beispiel Zeichen ds Zeichen selst hllo [] Auswhl h[e]llo - Bereich (innerhl von []) [-za-z] () Klmmerung eines Ausdrucks (hllo). Belieiges Zeichen h.llo? Optionl Brrck (Hussein)? Om + Mindestens einmliges [ 0]+ Vorkommen * Belieig oftes Vorkommen 0 {u,o} Beschränktes Vorkommen hl{,}o (untere und oere Grenze) - etc. Sonderzeichen escpen Doppel\-Nme 4 / 90
Anwendung Beispiel Jv Prktische Auswirkung In der Regel ist es effizienter, ei der Verwendung von regulären Ausdrücken die Konvertierung in den NEA nur einml vorzunehmen und im Anschluss den ereits konvertierten NEA zu verwenden. Sttt oolen = Pttern. mtches ( "*", "" ) ; sollte mn ei häufigeren Tests dher Pttern p = Pttern. compile ( "*" ) ; Mtcher m = p. mtcher ( "" ) ; 3 oolen = m. mtches ( ) ; verwenden. 43 / 90 Anwendung Verwendet Jv heute NEAs? In 007 ht Russ Cox einen Performnz-Test zwischen verschiedenen Implementierungen regulärer Ausdrücke und einer Implementierung sierend uf NEAs gemcht und ist zu folgendem Ergenis gekommen: Time to mtch? n n ginst n http://swtch.com/~rsc/regexp/regexp.html 44 / 90
Anwendung Verwendet Jv heute NEAs? In 007 ht Russ Cox einen Performnz-Test zwischen verschiedenen Implementierungen regulärer Ausdrücke und einer Implementierung sierend uf NEAs gemcht und ist zu folgendem Ergenis gekommen: Time to mtch? n n ginst n http://swtch.com/~rsc/regexp/regexp.html Wie ist die Sitution heute? 45 / 90 Registermschinen Premle Endliche Automten 3 Registermschinen Einführung Begriffe Befehle Rechnen Semntik Beochtungen Erweiterung zur Indirekten Adressierung 4 Invrinten 5 Zusmmenfssung 46 / 90
Einführung [Dieses Kpitel hält sich eng n ds empfohlene Buch von Ske/Sttler] 47 / 90 Einführung Einführung Eine Registermschine ist eine forml definierte Rechenmschine 48 / 90
Einführung Einführung Eine Registermschine ist eine forml definierte Rechenmschine reltiv ähnlich zu wirklicher Hrdwre (insesondere der frühen Jhre) 49 / 90 Einführung Komponenten der Registermschine Progrmm speicher 3 n B Zentrle Recheneinheit C + * = Recheneinheit Steuer einheit 0 Areits speicher C C C 3 C 4... n B C 0 C, C,... +,, = * : : : : : Progrmm ( n Befehle) Befehlszähler Akkumultor (Areitsregister) Areitsspeicher (Register) Rechenwerke Wir verwenden ls Beispiel eine Registermschine, die nur zwei Dtentypen kennt ntürliche Zhlen und Befehle. 50 / 90
Begriffe Befehlszyklus Die Registermschine iteriert einen Befehlszyklus: Progrmm speicher 3 n... n : B C 0 C, C,... +,, * = : : : : B Zentrle Recheneinheit C + * = Recheneinheit Steuer einheit Progrmm ( n Befehle) Befehlszähler Akkumultor (Areitsregister) Areitsspeicher (Register) Rechenwerke 0 Areits speicher C C C 3 C 4 Sei i der Inhlt von B. Lde i us dem Progrmmspeicher in die Steuereinheit. Erhöhe B uf i +. Decodiere i und führe ihn us durch Lden von Opernden Durchführung von Rechenopertionen Aspeichern des Ergenisses Veränderung des Kontrollflusses Die Ausführung hängt ntürlich im Einzelnen von dem konkreten Befehl. 5 / 90 Begriffe Progrmm Ds Progrmm ist eine Folge von Befehlen,,..., n Diese ist ei uns unveränderr (im Unterschied zu relen Rechnern, wo Progrmme in den Progrmmspeicher gelden und verändert werden können). 5 / 90
Begriffe Progrmm Ds Progrmm ist eine Folge von Befehlen,,..., n Diese ist ei uns unveränderr (im Unterschied zu relen Rechnern, wo Progrmme in den Progrmmspeicher gelden und verändert werden können). Offene Frgen Welche Befehle enötigen wir für unsere Registermschine? Wie können wir diese Befehle genu eschreien? 53 / 90 Begriffe Konfigurtion Idee Wir eschreien die Befehle üer die durch sie verurschten Zustndsänderungen unserer Registermschine. Eine vollständige Zustndseschreiung der Registermschine nennen wir Konfigurtion. Progrmm speicher 3 n... n : B : C 0 : C, C,... : +,, * = : B Zentrle Recheneinheit C0 + * = Recheneinheit Steuer einheit Progrmm ( n Befehle) Befehlszähler Akkumultor (Areitsregister) Areitsspeicher (Register) Rechenwerke Areits speicher C C C 3 C 4 Enthält B die Zhl, und C i die Zhl c i, 0 i, so heisst (, c 0, c,... ) ktuelle Konfigurtion der Registermschine. Die Ausführung eines Befehls ewirkt einen Konfigurtions-Üergng (, c 0, c,... ) (, c 0, c,... ) 54 / 90
Befehle Lden und Speichern Progrmm speicher 3 n B Zentrle Recheneinheit C + * = Recheneinheit Steuer einheit 0 Areits speicher C C C 3 C 4 LOAD i, i N + = + c 0 = c i c j = c j für j 0... n : Progrmm ( n Befehle) CLOAD i, i N = + c 0 B : Befehlszähler = i c j = c j für j 0 STORE C i, i 0 : N + Akkumultor = + (Areitsregister) c i = c 0 c j = c j für j i C, C,... : Areitsspeicher (Register) +,, = : Rechenwerke * 55 / 90 Befehle Arithmetische Befehle ADD i, i N + = + c 0 = c 0 + c i c j = c j für j 0 CADD i, i N + = + c 0 = c 0 + i c j = c j für j 0 SUB i, i N + = + c 0 = { c0 c i für c 0 c i 0 sonst CSUB i, i N + = + c 0 = { c0 i für c 0 i 0 sonst c j = c j für j 0 c j = c j für j 0 MULT i, i N + = + c 0 = c 0 c i c j = c j für j 0 CMULT i i N + = + c 0 = c 0 i c j = c j für j 0 DIV i, i N + = + c 0 = c 0/c i c j = c j für j 0 CDIV i, i N + = + c 0 = c 0/i c j = c j für j 0 56 / 90
Befehle Bemerkung Arithmetik uf ntürliche Zhlen eschränkt: sttt negtiver Differenz ist ds Ergenis 0. Division erfolgt gnzzhlig es git keinen Üertrg z.b. ei negtiven Zhlen oder wenn ds Register ds Ergenis nicht mehr ilden knn (z.b. größte drstellre Zhl + ) 57 / 90 Befehle Sprungefehle GOTO i, i N + = i c j = c j für j 0 { IF c 0 = 0 GOTO i, i N + i flls c0 = 0 = c + sonst j = c j für j 0 END = c j = c j für j 0 58 / 90
Rechnen Mschinen und Progrmmläufe Registermschinen unterscheiden sich durch ihr Progrmm. Verschiedene Progrmmläufe unterscheiden sich durch die Strt-Konfigurtion (lles weitere ist j festgelegt). Strt-Konfigurtion (, 0, x,..., x n, 0, 0,... ) x i sind die Einge-Prmeter in den Registern c... c n. 59 / 90 Rechnen Berechnete Funktion M erechnet Funktion f M : N n N m mit (y,..., y m ) = f M (x,..., x n ), flls für lle x,..., x n N gilt (, 0, x,..., x n, 0, 0,... ) (e, c, y,..., y m,... ) und e ist ein END-Befehl. 60 / 90
Rechnen Beispiel M + LOAD ADD 3 STORE 3 4 END (, 0,, ) (4, +,,, + ) F M+ (x, x ) = (x, x, x + x ) 6 / 90 Rechnen Beispiel M fi LOAD ADD 3 STORE 4 SUB 5 STORE 6 END (, 0,, ) (6,,, + ) M fi erechnet einen Schritt der Fioncci-Itertion. f Mfi (x, x ) = (x, x, x + x ) 6 / 90
Rechnen Beispiel M LOAD DIV 3 MULT 4 STORE 3 5 LOAD 6 SUB 3 7 STORE 3 8 END 63 / 90 Rechnen Rechnung von M mit r = n (n div m) m Berechnete Funktion: (, 0, n, m, 0)...... (8, r, n, m, r) f M (x, x ) = (x, x, x mod x ) 64 / 90
Semntik Semntik einfcher Progrmme Beispiel M id Beispiel M undef END GOTO END f Mid (x,..., x n ) = (x,..., x n ) f Mundef (x,..., x n ) =undefiniert 65 / 90 Semntik Beispiel M 3 Beispiel M 4 LOAD LOAD IF c 0 = 0 GOTO 4 IF c 0 = 0 GOTO 3 GOTO 3 END 4 END f M3 (x ) = 0 flls x = 0 f M4 (x ) = x flls x > 0 = undefiniert, sonst = undefiniert, sonst 66 / 90
Beochtungen Beochtungen zu unserer Registermschine Die Anzhl der enutzten Register liegt sttisch fest. Alle Adressen stehen explizit im Progrmm. Die Anzhl der Befehle ei Ausführung ist sttisch nicht estimmr und hängt insesondere von den (edingten) Sprüngen. Progrmme ohne Schleifen knn mn symolisch usführen und so die erechnete Funktion estimmen. Bei Progrmmen mit Schleifen führt die symolische Ausführung nicht zu einer Bestimmung der erechneten Funktion. Es entsteht eine unendlich große Formel. 67 / 90 Erweiterung zur Indirekten Adressierung Neue Prolemstellung Es soll die Summe einer elieig lngen Zhlenkette geildet werden. Anstz: Zhlenkette eginnt c0 Ende mit c i = 0 gekennzeichnet. c hält unser ktuelles Zwischenergenis. CLOAD 0 STORE 3 GOTO 5 4 END 5 LOAD 0 6 IF C 0 = 0 GOTO 4 7 ADD 8 STORE 9 LOAD 0 IF C 0 = 0 GOTO 4 ADD STORE 3 LOAD 68 / 90
Erweiterung zur Indirekten Adressierung Erweiterung: Indirekte Adressierung Bislng wren lle Speicherdressen immer sttisch im Progrmm festgelegt. Ds Potentil des gedchten unendlich großen Speichers lässt sich dmit nicht effizient usschöpfen. Zusätzlich zu konstnten (C-Befehle) und sttisch dressierten Speicherzugriffen führt mn dher noch indirekt dressierte Speicherzugriffe ein. Die Adresse der Ziel-Speicherzelle wird dei erst us einer sttisch dressierten Speicherzelle usgelesen. Unsere neuen Befehle luten INDLOAD, INDSTORE, INDADD, INDSUB, INDMUL, INDDIV. 69 / 90 Erweiterung zur Indirekten Adressierung INDLOAD i, i N + = + c 0 = c c i c j = c j für j 0 INDSTORE i, i N + = + c c = c 0 i c j = c j für j i j N ADD i, i N + = + c 0 = c 0 + c i c j = c j für j 0 INDADD i, i N + = + c 0 = c 0 + c ci c j = c j für j 0 SUB i, i N + = + c 0 = { c0 c i für c 0 c i 0 sonst INDSUB i, i N + = + c 0 = { c0 c ci für c 0 c ci 0 sonst c j = c j für j 0 c j = c j für j 0 MULT i, i N + = + c 0 = c 0 c i c j = c j für j 0 INDMULT i i N + = + c 0 = c 0 c ci c j = c j für j 0 DIV i, i N + = + c 0 = c 0/c i c j = c j für j 0 INDDIV i, i N + = + c 0 = c 0/c ci c j = c j für j 0 70 / 90
Erweiterung zur Indirekten Adressierung Summe einer Liste von Zhlen Es soll die Summe einer elieig lngen Zhlenkette geildet werden. Anstz: Zhlenkette eginnt c0 Ende mit c i = 0 gekennzeichnet. c hält unser ktuelles Zwischenergenis. c enthält unseren ktuellen Index. CLOAD 0 STORE 3 CLOAD 0 4 STORE 5 INDLOAD 6 IF C 0 = 0 GOTO 3 7 ADD 8 STORE 9 LOAD 0 CADD STORE GOTO 5 3 END 7 / 90 Invrinten Premle Endliche Automten 3 Registermschinen 4 Invrinten Definition Beispiele Komplexeres Beispiel Prtielle vs. Totle Korrektheit 5 Zusmmenfssung 7 / 90
Definition Invrinten Um die erechnete Funktion von Progrmmen mit Schleifen im Allgemeinen zu finden, enutzt mn Invrinten. Diese sind Aussgen üer Konfigurtionen, die n gewissen Progrmmstellen immer erfüllt sind: φ (c 0, c,... ) gilt m Üergng von Befehl zu. φ strt (c 0, c... ) gilt m Anfng, φ end (c 0, c... ) m Ende. 73 / 90 Beispiele Invrinten zu M 3 3 4 Beispiel M 3 LOAD IF c 0 = 0 GOTO 4 3 GOTO 4 END φ strt = (c 0 = 0, c = x 0) φ = (c 0 = c = x 0) φ 3 = (c 0 = c = x > 0) φ 3 = (c 0 = c = x > 0) φ 4 = (c 0 = c = 0) φ end = (c 0 = c = 0) 74 / 90
Beispiele Invrinten zu M 3 Beispiel M 3 LOAD IF c 0 = 0 GOTO 4 3 GOTO 4 END φ strt = (c 0 = 0, c = x 0) 3 φ φ 3 = = (c 0 = c = x 0) (c 0 = c = x > 0) φ 3 = (c 0 = c = x > 0) 4 φ 4 = (c 0 = c = 0) φ end = (c 0 = c = 0) Bei der ersten Ausführung von Befehl gilt φ, ei eventuellen weiteren die stärkere Invrinte φ 3 = φ 3. Wird lso Punkt 3 einml erreicht, liegt Endlosschleife vor. Punkt 4 wird erreicht genu dnn, wenn x = 0. 75 / 90 Beispiele Invrinten zu M 4 3 Beispiel M 4 LOAD IF c 0 = 0 GOTO 3 END φ strt = (c 0 = 0, c = x 0) φ = (c 0 = c = x 0) φ 3 = (c 0 = c = x > 0) φ = (c 0 = c = x = 0) φ end = (c 0 = c = x > 0) 76 / 90
Komplexeres Beispiel Registermschine M CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END 77 / 90 Komplexeres Beispiel Progrmmflussdigrmm für M CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END 3 4 5 6 7 8 φ strt = (c = x, c = y) 0 Wir suchen φ end, indem wir φ strt durch ds Digrmm propgieren. Ds geht üerll einfch, ußer m Schleifenkopf 4. 9 78 / 90
Komplexeres Beispiel CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END φ strt = (c 0 = 0, c = x, c = y) φ = (c 0 =, c = x, c = y) φ 3 = (c 0 =, c = x, c = y, c 3 = ) φ 34 = (c 0 = y, c = x, c = y, c 3 = ) Hier entsteht nun ds Prolem, dss wir φ 45 nicht llein us φ 34 und 4 estimmen können, d es uch von φ 4 hängt, ds wir noch nicht kennen. 79 / 90 Komplexeres Beispiel CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END Idee: Wir fügen eine neue, noch uneknnte Invrinte φ 4 für den Schleifenkopf ein. Für sie muss gelten φ 34 oder φ 4 φ 4. Dei hängt φ 4 ntürlich von φ 4. Mit dem noch uneknnten φ 4 rechnen wir weiter. 80 / 90
Komplexeres Beispiel CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END Sei φ 4 = (c 0 =, c = x, c =, c 3 = d) mit Uneknnten,, d. φ 45 = (c 0 = > 0, c = x, c =, c 3 = d) φ 56 = (c 0 = d, > 0, c = x, c =, c 3 = d) φ 67 = (c 0 = d x, > 0, c = x, c =, c 3 = d) φ 78 = (c 0 = d x, > 0, c = x, c =, c 3 = d x) 8 / 90 Komplexeres Beispiel CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END φ 89 = (c 0 =, > 0, c = x, c =, c 3 = d x) φ 9 0 = (c 0 =, > 0, c = x, c =, c 3 = d x) φ 0 = (c 0 =, > 0, c = x, c =, c 3 = d x) φ 4 = φ 0 φ 4 = φ 4 c = 0 8 / 90
Komplexeres Beispiel CLOAD STORE 3 3 LOAD 4 IF c 0 = 0 GOTO 5 LOAD 3 6 MULT 7 STORE 3 8 LOAD 9 CSUB 0 STORE GOTO 4 END Jetzt müssen wir φ 4 herusfinden. Es muss gelten φ 34 φ 4 und φ 4 φ 4 φ 34 : (c 0 = y, c = x, c = y, c 3 = ) φ 4 : (c 0 =, c = x, c =, c 3 = d x, > 0) φ 4 : (c 0 =, c = x, c =, c 3 = d) 83 / 90 Komplexeres Beispiel Den Effekt eines Schleifendurchlufs uf φ 4 hält φ 4 fest. Wir eochten c ändert sich nicht, c 0, c und c 3 ändern sich. Für φ 4 wie für φ 3 4 gilt invrint: c 3 = x (y c ). Wir setzen ls neue Invrinte Es gilt φ 34 impliziert ˆφ 4. ˆφ 4 = (c 0 = c, c = x, c 3 = x (y c ) ) Es gilt nch Durchschieen von ˆφ 4 durch die Schleife ˆφ 4 = (c 0 = c, c = x, c 3 = x (y (c +)) x) = ˆφ 4 84 / 90
Komplexeres Beispiel Dmit finden wir nun die Endkonfigurtion φ 4 = (c 0 = 0, c = x, c = c 0 = 0, c 3 = x y ) φ end = φ 4 Dmit ist ewiesen, dss die Mschinenfunktion von M lutet f M (x, y) = (x, 0, x y ) Allerdings gilt dies nur, wenn Punkt erreicht wird. Im Beispiel dieser Mschine ist die Terminierung einfch zu zeigen, im llgemeinen er schwer. 85 / 90 Prtielle vs. Totle Korrektheit Prtielle versus Totle Korrektheit Ein Mschinenprogrmm M heisst prtiell korrekt für eine Funktion f : N n N m, flls f M (x,..., x n ) = f (x,..., x n ), sofern f M terminiert. M heisst totl korrekt für f, flls gilt: Wenn f (x,..., x n ) definiert ist, so terminiert f M uf Einge x,..., x n mit dem Ergenis f (x,..., x n ). 86 / 90
Prtielle vs. Totle Korrektheit Nchweis der Korrektheit Für Registermschinenprogrmme wie für lle impertiven Progrmme weist mn prtielle Korrektheit durch die Bestimmung der Invrinten nch. Anstelle der Terminierung zeigt mn lieer eine stärkere Aussge: Mn git n, nch wievielen Schritten eine Berechnung endet Kpitel Effizienznlyse. 87 / 90 Zusmmenfssung Endliche Automten 88 / 90
Zusmmenfssung Endliche Automten Registermschinen 89 / 90 Zusmmenfssung Endliche Automten Registermschinen Anlyse von Progrmmen mittels Invrinten 90 / 90