Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach...

21
32 Rückblick § RAM als einfaches Rechnermodell mit kleinem Befehlssatz, welches wahlfrei auf seinen Speicher zugreifen und alles berechnen kann § Laufzeit eines Programms für eine bestimmte Eingabe wird gemessen als die Zahl der ausgeführten Befehle Informatik 1 / Kapitel 3: RAM als Rechnermodell

Transcript of Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach...

Page 1: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

32

Rückblick§ RAM als einfaches Rechnermodell mit kleinem

Befehlssatz, welches wahlfrei auf seinenSpeicher zugreifen und alles berechnen kann

§ Laufzeit eines Programms für eine bestimmte Eingabewird gemessen als die Zahl der ausgeführten Befehle

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 2: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

33

Berechnen von x2 + y2

§ Wir schreiben nun ein RAM-Programm, welches die Eingabe x und y in s[0] und s[1]erwartet und den Wert x2 + y2 berechnet und diesen als Ausgabe in s[2] ablegt

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 3: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

34

3.2 Korrektheit von Programmen§ Wie können wir sicherstellen, dass ein RAM-Programm

wirklich tut, was es tun soll?

§ Man kann die Korrektheit von (zumindest einfachen)RAM-Programmen formal beweisen

§ Dazu greifen wir auf das Beweisverfahren der vollständigen Induktion zurück(vgl. Mathematik 1)

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 4: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

35

Vollständige Induktion§ Unser Ziel ist es zu beweisen, dass eine Aussage Ai

für beliebige Werte von i gültig ist

§ Induktionsanfang (meist für i = 1) zeigt, dass die Aussage Ai für einen initialen Wert von i gültig ist

§ Induktionsschritt (i ⇒ i+1) zeigt, dass die Aussage Ai+1

gültig ist, wenn die Aussage Ai gültig ist

§ Damit haben wir gezeigt, dass unserer Aussage Ai

für alle i > 0 gültig ist

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 5: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

36

Vollständige Induktion§ Beispiel: Wir wollen folgende Aussage zeigen

§ Induktionsanfang (i = 1):

Informatik 1 / Kapitel 3: RAM als Rechnermodell

i�1X

j=0

2 j = 2 i � 1

Page 6: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

37

Vollständige Induktion§ Induktionsschritt (i⇒ i+1):

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 7: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

38

Berechnen von Zweierpotenzen

Informatik 1 / Kapitel 3: RAM als Rechnermodell

INPUT 0

OUTPUT 10: a <- 1

1: i1 <- s[0]2: if i1 = 0 then jump 6

3: a <- a * 24: i1 <- i1 - 1

5: jump 26: s[1] <- a

7: HALT

Page 8: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

39

Korrektheit der Berechnung von Zweierpotenzen§ Wir möchten nun die Korrektheit unseres Programms

zum Berechnen von Zweierpotenzen beweisen

§ Zunächst beweisen wir eine Aussage Ai , welche dieSituation nach dem i-ten Schleifendurchlauf(d.h. Abarbeitung des Befehls 5) beschreibt

§ Eine solche Aussage nennt man auch Invariante,da ihre Gültigkeit beim Durchlaufen der Schleifeunverändert bleibt

Informatik 1 / Kapitel 3: RAM als Rechnermodell

a = 2i und i1 = n� i

Page 9: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

40

Korrektheit der Berechnung von Zweierpotenzen§ Als Induktionsanfang beweisen wir nun, dass die

Aussage A1 nach dem ersten Schleifendurchlauf gilt

§ Hierzu stellen wir den Programmablauf bis nach dem ersten Schleifendurchlauf mittels einer Tabelle dar

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 10: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

41

Korrektheit der Berechnung von Zweierpotenzen§ Programmablauf bis nach dem ersten Schleifendurchlauf

(d.h. Abarbeitung des Befehls 5)

§ Somit gilt die Aussage A1

Informatik 1 / Kapitel 3: RAM als Rechnermodell

IP a i1 s[0] s[1]

INIT undef undef n undef0 11 n23 24 n� 15

21 n� 1

Page 11: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

42

Korrektheit der Berechnung von Zweierpotenzen

§ Für den Induktionsschritt müssen wir beweisen, dass dieAussage Ai+1 gilt, wenn die Aussage Ai gilt

§ Für unser RAM-Programm bedeutet dies, dass unsereInvariante nach einem weiteren Schleifendurchlauf

weiterhin gilt, wenn sie zu Beginn gegolten hat

§ Wir stellen die Wertveränderungen während eines Schleifendurchlaufs in einer Tabelle dar

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 12: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

43

Korrektheit der Berechnung von Zweierpotenzen§ Wertveränderungen bei einem weiteren Durchlauf der

Schleife, dargestellt als Tabelle

Informatik 1 / Kapitel 3: RAM als Rechnermodell

IP a i1 s[0] s[1]

2i n� i23 2i · 24 (n� i)� 15

2i+1 n� (i+ 1)

Page 13: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

44

Korrektheit der Berechnung von Zweierpotenzen§ Um die Korrektheit unseres gesamten RAM-Programmes

zu beweisen, müssen wir zeigen, dass beim Erreichendes Befehls 7 das korrekte Ergebnis 2n in s[1] steht

§ Unsere Schleife bricht nach i = n Durchläufen ab,wenn i1 = 0 gilt und es gilt laut unserer Invariante

d.h. im Akkumulator steht der korrekte Wert 2n

§ Es folgt der Befehl 6, wobei der Wert 2n

nach s[1] geschrieben wirdInformatik 1 / Kapitel 3: RAM als Rechnermodell

a = 2i und i1 = n� i

Page 14: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

45

Berechnen der Fakultät§ Wir schreiben nun ein RAM-Programm, welches zu einen

in s[0] gegebenen Wert n ≥ 1 seine Fakultät n! berechnet

§ Die Fakultät ist, zur Erinnerung, wie folgt definiert

Informatik 1 / Kapitel 3: RAM als Rechnermodell

n! =nY

i=1

i = 1 · . . . · n

Page 15: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

46

Berechnen der Fakultät

Informatik 1 / Kapitel 3: RAM als Rechnermodell

INPUT 0

OUTPUT 10: a <- 1

1: i1 <- s[0]2: i2 <- 0

3: if i1 = 0 then jump 94: i2 <- i2 + 1

5: s[2] <- i26: a <- a * s[2]

7: i1 <- i1 – 18: jump 3

9: s[1] <- a10: HALT

Page 16: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

47

Korrektheit der Berechnung der Fakultät§ Als Induktionsanfang beweisen wir, dass folgende

Aussage Ai nach dem ersten Schleifendurchlauf(d.h. Abarbeitung des Befehls 8) gilt

§ Für den Induktionsschritt müssen wir beweisen, dass dieAussage Ai+1 gilt, wenn die Aussage Ai gilt

Informatik 1 / Kapitel 3: RAM als Rechnermodell

a = i! und i1 = n� i und i2 = i

Page 17: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

48

Korrektheit der Berechnung der Fakultät§ Programmablauf bis nach dem ersten Schleifendurchlauf

(d.h. Abarbeitung des Befehls 8)

Informatik 1 / Kapitel 3: RAM als Rechnermodell

IP a i1 i2 s[0] s[1] s[2]

INIT undef undef undef n undef undef012345678

Page 18: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

49

Korrektheit der Berechnung der Fakultät§ Wertveränderungen bei einem weiteren Durchlauf der

Schleife, dargestellt als Tabelle

Informatik 1 / Kapitel 3: RAM als Rechnermodell

IP a i1 i2 s[0] s[1] s[2]

i! n� i i345678

Page 19: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

50

Korrektheit der Berechnung der Fakultät§ Unsere Schleife bricht nach n Durchläufen ab

und im Akkumulator steht der Wert n!

§ Es folgt der Befehl 9, wobei der Wert im Akkumulatornach s[1] geschrieben wird

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 20: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

51

Zusammenfassung§ Die Korrektheit (einfacher) RAM-Programme lässt sich

mittels vollständiger Induktion beweisen

§ Wir beweisen hierzu eine Invariante, welche nachjedem Durchlauf der Schleife gelten muss

§ Zum Beweisen des Induktionsanfangs und des Induktionsschrittes stellen wir eine Tabelle auf,welche die Wertveränderungen währenddes Programmablaufs erfasst

Informatik 1 / Kapitel 3: RAM als Rechnermodell

Page 21: Rückblick - swl.htwsaar.de · § Für unser RAM-Programmbedeutet dies, dass unsere Invariantenach einem weiteren Schleifendurchlauf weiterhin gilt, wenn sie zu Beginn gegolten hat

52

Literatur[1] H.-P. Gumm und M. Sommer: Einführung in die

Informatik, Oldenbourg Verlag, 2012 (Kapitel 5.2)

Informatik 1 / Kapitel 3: RAM als Rechnermodell