Programmierung 1 - Repetitorium

Ähnliche Dokumente
Strukturelle Rekursion und Induktion

6. Induktives Beweisen - Themenübersicht

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9)

Klausur Programmierung WS 2002/03

ALP I Induktion und Rekursion

Logik für Informatiker

In diesem Kapitel wiederholen wir Begriffe und Notationen für grundlegende mathematische

Logik für Informatiker

Mengen sind gedankliche Objekte, die wir durch die folgenden Axiome definieren:

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Inhalt Kapitel 3: Induktion und Termination

Logik für Informatiker. 1. Grundlegende Beweisstrategien. Viorica Sofronie-Stokkermans Universität Koblenz-Landau

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen

Ordnungsrelationen auf Mengen

1 Übersicht Induktion

Lösungen zu Kapitel 2

Lösungen zum Aufgabenblatt Nr. 1: Konstruktion der reellen Zahlen

Lösung Probeklausur Informatik I

Kapitel 5. Fixpunktoperatoren

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)

Induktive Definitionen

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Ordnungsrelationen auf Mengen

Programmieren für Fortgeschrittene

Übungen zu Grundlagen der Theoretischen Informatik

Software Entwicklung 1

Die Korrektheit von Mergesort

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Eine Relation R in einer Menge M ist eine Teilmenge von M x M. Statt (a,b) R schreibt man auch arb.

Abschnitt 3: Mathematische Grundlagen

4 Einige Grundstrukturen. Themen: Abbildungen und Relationen Gruppen Die natürlichen Zahlen Körper

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Rekursive Funktionen

Kapitel 08: Rekursion und Terminierung Software Entwicklung 1

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

KAPITEL 4. Posets Hasse Diagramm

Grundlagen der Theoretischen Informatik

Lineare Algebra 1. Detlev W. Hoffmann. WS 2013/14, TU Dortmund

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

Analysis I - Notizen 1. Daniel Lenz Jena - Wintersemester 2016

5. Ordinalzahlen (Vorlesung 11)

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen

Randomisierte Algorithmen

Lösung: InfA - Übungsblatt 07

Diskrete Strukturen Kapitel 2: Grundlagen (Relationen)

Einführung in die Informatik 2

Zahlen in Haskell Kapitel 3

Programmierung und Modellierung mit Haskell

4 Elementare Mengentheorie

Induktive Definitionen

2 Mengen, Abbildungen und Relationen

Zusammenfassung der letzten LVA. Diskrete Mathematik

Inhalt Kapitel 2: Rekursion

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

WS 2013/14. Diskrete Strukturen

WS 2011/2012. Robert Giegerich Dezember 2013

Einführung in die Mengenlehre

8. Einfache Fixpunkttheorie

Abschnitt 3: Mathematische Grundlagen

4. Funktionen und Relationen

Ordinalzahlen. Sei (X, ) eine total geordnete Menge und a X. Dann

Einführung in die Semantik, 2./3. Sitzung Mengen / Relatione

Grundlagen der Programmierung 2. Operationale Semantik

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Teil 4. Mengen und Relationen

Formale Grundlagen. Franz Binder. Institut für Algebra Johannes Kepler Universität Linz

Programmierung und Modellierung

Hausaufgaben. zur Vorlesung. Vollständige Induktion. 1. Beweist folgende Formeln (zu beweisen ist nur die Gleichheit mit dem. i=1 (4 + i)!

Einführung in die Programmierung

4. ggt und kgv. Chr.Nelius: Zahlentheorie (SS 2007) 9

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

2 Rationale und reelle Zahlen

BA-INF 011 Logik und Diskrete Strukturen WS 2013/14 Mögliche Klausuraufgaben Stand vom

Einführung in die Theoretische Informatik

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt

Vollständige Induktion. Analysis I. Guofang Wang. Universität Freiburg

Kapitel 1. Mengen und Abbildungen. 1.1 Mengen

Semantik von Programmiersprachen SS 2017

Induktion und Rekursion

Logik für Informatiker

Logik und Künstliche Intelligenz

4. Funktionen und Relationen

Transkript:

WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage: http://info1.marcwagner.info

Donnerstag, den 10.04.03 Kapitel 7 Korrektheit

7.1 Abstrakte Prozeduren Abstrakte Prozedur = Vorschrift, die zu jedem Wert eines vorgegebenen Argumentbereichs eine Berechnung definiert, die, wenn sie terminiert, ein eindeutig bestimmtes Ergebnis in einem vorgegebenen Ergebnisbereich liefert. Typzusicherung : sum : Z N Argumentbereich Ergebnisbereich definierende Gleichung : sum (x) = if x < 1 then 0 else sum (x-1) + x Für abstrakte Prozeduren gilt : - keine Speicherbeschränkung - keine Größenbeschränkung für Zahlen - keine undefinierte Operations- und Funktionsanwendungen

7.1 Abstrakte Prozeduren Abstrakte Prozeduren divergieren oder terminieren. Eine Prozedur p ist eine Prozedur X : Y, wenn X : Y die Typzusicherung von p ist. Sei p eine Prozedur X : Y. Ein Paar (x,y) X 2 heißt Rekursionspaar von p, wenn für die Bestimmung von p(x) gemäß der definierenden Gleichung von p die rekursive Bestimmung von p(y) erforderlich ist. Die Rekursionsrelation von p ist die Menge aller Rekursionspaare von p. Rekursionsrelation von sum ist { (n,n-1) n N + } Die Rekursionsrelation einer Prozedur X : Y ist immer eine binäre Relation auf X. Sei r eine binäre Relation. Eine unendliche Kette in r ist eine unendliche Folge x 0, x 1, x 2,..., für die gilt : n N : ( x n, x n+1 ) r

7.1 Abstrakte Prozeduren Wir sagen, dass r für x terminiert, wenn es keine unendliche Kette in r gibt, die mit x beginnt. Wir sagen, dass r terminiert, wenn es keine unendliche Kette in r gibt. Sei p eine Prozedur X : Y. Wir sagen, dass p auf x X terminiert, wenn die Rekursionsrelation von p für x terminiert. Die Menge aller x X, für die p terminiert, bezeichnen wir mit Dom p (domain) und nenne sie den Definitionsbereich von p. Wenn p für ein Argument x X terminiert, bezeichnen wir das eindeutig bestimmte Ergebnis mit p(x). Die Funktion { ( x, p(x) ) x Dom p } bezeichnen wir als Ergebnisfunktion der Prozedur p. Eine Prozedur ist linear-rekursiv gdw. alle Rekursionsbäume linear sind. Eine Prozedur ist binär-rekursiv gdw. alle Rekursionsbäume binär sind.

7.1 Abstrakte Prozeduren Beispiel : Fibonacci - Funktion fib : N N fib(n) = if n<2 then n else fib(n-1) + fib(n-2) Die Rekursionsrelation von fib ist { ( n, n i ) n N n 2 i {1,2} } Offensichtlich terminiert diese Relation, also auch fib. Rekursionsbaum für fib mit Argument 4 : fib 4 fib 3 fib 2 fib 2 fib 1 fib 1 fib 0 Jede Kante entspricht einem Rekursionspaar! fib 1 fib 0

7.2 Beweis durch Nachrechnen (1) sum Z N (2) x Z : sum(x) = if x<1 then 0 else sum(x-1) + x Behauptung : sum (2) = 3 Beweis : sum (2) = sum(1) + 2 = ( sum(0) + 1 ) + 2 = ( 0 + 1 ) + 2 = 3 Behauptung : x Z : x < 1 sum(x) = 0 Beweis : Sei x Z und x < 1. Dann folgt sum(x) = 0 gem. Def. von sum. Beweistechniken für A B ( A Prämisse, B Konklusion ) 1. Beweise B unter Verwendung der Gültigkeit von A. 2. Beweise, dass A gilt. ( A B ) ( A v B )

7.2 Beweis durch Nachrechnen Behauptung : Beweis : x Z : sum(x) = if x<1 then 0 else x / 2 * (x+1) f 1 (x) = if x < 1 then 0 else x / 2 * (x+1) f 2 (x) = if x < 1 then 0 else f 2 (x-1) + x Sei x < 1. f 1 (x) = 0 = f 2 (x) klar nach Def. Sei x 1. f 1 (x) = x / 2 * (x+1) = x-1 / 2 * (x-1+1) + x = f 1 (x-1) + x (IA) = if x < 1 then 0 else f 2 (x-1) + x = f 2 (x)

7.3 Ordnungsrelation Infixschreibweise einer binären Relation r : x r y = ( x, y ) r Sei eine binäre Relation. x y x kleiner gleich y x y y x x größer gleich y x < y x y x y x kleiner y x Vorgänger von y x > y y < x x größer y x Nachfolger von y Eine binäre Relation heißt... - reflexiv, wenn Dom ( ) = Ran ( ) und x Dom ( ) : x x - transitiv, wenn für alle x,y,z Dom ( ) gilt : ( x y y z ) x z. - antisymmetrisch, wenn für alle x,y Dom (J) gilt : ( x J y y J x ) x = y. - partielle Ordnung, wenn sie reflexiv, transitiv und antisymmetrisch ist. - linear, wenn für alle x,y Dom (J) gilt : x y v y x - wohlfundiert, wenn > terminiert.

7.3 Ordnungsrelation Eine partielle Ordnung J heißt... - partielle Ordnung für eine Menge X, wenn Dom ( ) = X ist. - lineare Ordnung, wenn sie linear ist. - wohlfundierte Ordnung, wenn sie wohlfundiert ist. - Wohlordnung, wenn sie linear und wohlfundiert ist. natürliche Ordnung NO(x) = { (x,y) X 2 x y } strukturelle Ordnung SO(x) = { (x,y) X 2 x Teilobjekt von y } Inklusionsordnung IO(x) = { (y,z) y z und z x } Identität Id(x) = { (x,x) x X }

7.4 Terminierungsbeweise Sei X eine nach unten beschränkte Teilmenge der ganzen Zahlen. Dann ist NO(X) eine terminierende Relation. Sei X eine Menge. Dann ist SO(X) eine terminierende Relation. Jede Teilmenge einer terminierenden Relation ist eine terminierende Relation. Eine Funktion f bettet eine binäre Relation r in eine binäre Relation r ein, wenn gilt : 1. ( Dom r Ran r ) Dom f 2. (x,y) r : ( f x, f y ) r Jede Relation, die in eine terminierende Relation einbettbar ist, terminiert.

7.4 Terminierungsbeweise Eine Prozedur p heißt... - natürlich rekursiv, wenn es eine nach unten beschränkte Teilmenge X der ganzen Zahlen gibt, sodass die Rekursionsrelation von p in NO(X) eingebettet werden kann. - strukturell rekursiv, wenn es eine Menge X gibt, sodass die Rekursionsrelation von p in SO(X) eingebettet werden kann. Jede natürlich oder strukturell rekursive Prozedur terminiert.

7.4 Terminierungsbeweise Beispiel : Größe von Bäumen size : T(x) N size ( x, [ t 1,..., t n ] ) = 1 + size(t 1 ) +... + size(t n ) ( T(X) = X x L (T(X)) ) Rekursionsrelation { ( ( x, [ t 1,..., t n ], t i ) ( x, [ t 1,..., t n ] ) T(X) n 1 i { 1,..., n } } Dies ist eine Teilmenge von SO(T(X)). size ist strukturell rekursiv und terminiert. Beispiel : Potenzen power : R x N R power (x,n) = if n=0 then 1 else power (x,n-1) * x Rekursionsrelation { ( (x,n), (x,n-1) ) x R n N + } wird von (x,n) R x N. n in NO(N) eingebettet. power ist natürlich rekursiv und terminiert.

7.5 Induktion Eine Relation ist genau dann wohlfundiert, wenn jede nichtleere Menge ein minimales Element für enthält. Wohlfundierte Induktion : Sei eine wohlfundierte Relation, X eine Menge und A X. Dann gilt A = X, wenn gilt : x X : ( y X : y < x y A ) x A Grundmenge : X Aussagemenge : A X Zielbehauptung : x X : x A bzw. X A Induktionsrelation : wohlfundierte Ordnung ( z.b. NO(X) ) Induktionsbehauptung : x X : ( y X : y < x y A ) x A Induktionsannahme für x X : y X : y < x y A : Beweis unter Verwendung der Induktionsannahme

7.5 Induktion Von der Wahl der richtigen Induktionsrelation hängt der Erfolg des Induktionsbeweises ab. Wenn die Grundmenge eine nach unten beschränkte Menge von Zahlen ist, ist die natürliche Ordnung die naheliegende Wahl. Man spricht dann von natürlicher Induktion. Wenn die Elemente der Grundmenge dagegen zusammengesetzte Objekte sind (z.b. Listen oder Bäume), bietet sich die strukturelle Ordnung an. Man spricht dann von struktureller Induktion.

7.5 Induktion Beispiel : Summenfunktion sum Z N sum (x) = if x < 1 then 0 else sum (x-1) + x Behauptung : n N : sum (n) = n / 2 * (n+1) Beweis mit natürlicher Induktion : Grundmenge : N Aussagemenge : A := { n N sum(n) = n / 2 * (n+1) } N Zielbehauptung : N A Induktionsrelation : NO(N) Sei n=0. sum(n) = 0 = n / 2 * (n+1) klar nach Definition Sei n>0. sum(n) = sum(n-1) + n Definition von sum = n-1 / 2 * (n-1+1) + n (IA) = n / 2 * (n+1)

7.6 Strukturelle Induktion über Listen L (X) = { ( ) } ( X x L (X) ) Konkatenation @ L (X) x L (X) : L (X) nil @ ys = ys ( x :: xr ) @ ys = x :: ( xr @ ys ) Länge _ L (X) N nil = 0 x :: xr = 1 + xr Reversion rev L (X) L (X) rev ( nil ) = nil rev ( x :: xr ) = rev ( xr ) @ [ x ] Sei X eine Menge und seien xs,ys,zs L (X). Dann gilt : 1. xs @ nil = xs 2. xs @ ys = xs + ys 3. rev ( xs ) = xs 4. rev ( xs @ ys ) = rev ( ys ) @ rev ( xs ) 5. rev ( rev ( xs ) ) = xs

7.6 Strukturelle Induktion über Listen Behauptung : Beweis : Sei X eine Menge und seien xs,ys,zs L (X) Dann gilt : ( xs @ ys ) @ zs = xs @ ( ys @ zs ) Seien ys,zs L (X). Wir beweisen xs L (X) : ( xs @ ys ) @ zs = xs @ ( ys @ zs ) durch strukturelle Induktion über xs L (X) Sei xs = nil. ( xs @ ys ) @ zs = ys @ zs = xs @ ( ys @ zs ) Sei xs = x :: xr. ( xs @ ys ) @ zs = ( x :: ( xr @ ys ) ) @ zs = x :: ( ( xr @ ys ) @ zs ) = x :: ( xr @ ( ys @ zs ) ) (IA) = xs @ ( ys @ zs )

7.7 Größenverhältnisse in Bäumen T(X) = X x L (T(X)) Größe s T(X) : N s ( x, [ t 1,..., t n ] ) = 1 + s ( t 1 ) +... + s ( t n ) Tiefe d T(X) : N d ( x, [ t 1,..., t n ] ) = 1 + max { -1, d ( t 1 ),..., d ( t n ) } Breite b T(X) : N + b ( x, [ t 1,..., t n ] ) = if n=0 then 1 else b ( t 1 ) +... + b ( t n ) Die inneren Knoten eines Baumes sind die Knoten, die keine Blätter sind.

7.7 Größenverhältnisse in Bäumen Behauptung : Für jeden balancierten Binärbaum t T (X) gilt : b ( t ) = 2 d ( t ) Beweis durch strukturelle Induktion : Sei t = ( x, [ ] ). b ( t ) = 1 = 2 d ( t ) nach Definition Sei t = ( x, [ t 1, t 2 ] ). b ( t ) = b ( t 1 ) + b ( t 2 ) Definition von b ( t ) = 2 d ( t1 ) + 2 d ( t2 ) (IA) = 2 * 2 d ( t1 ) t balanciert, also d ( t 1 ) = d ( t 2 ) = 2 1 + d ( t1 ) = 2 1 + max { d ( t1 ), d ( t2 ) } t balanciert, also d ( t 1 ) = d ( t 2 ) = 2 d ( t ) Definition von d ( t )

7.7 Größenverhältnisse in Bäumen Behauptung : Für jeden balancierten Binärbaum t T(X) gilt : s ( t ) = 2 d ( t ) + 1-1 Beweis durch strukturelle Induktion : Sei t = ( x, [ ] ). s ( t ) = 1 = 2 d ( t ) + 1-1 nach Definition Sei t = ( x, [ t 1, t 2 ] ). s ( t ) = 1 + s ( t 1 ) + s ( t 2 ) Definition von b ( t ) = 1 + 2 d ( t1 ) + 1-1 + 2 d ( t2 ) + 1-1 (IA) = 2 * 2 d ( t1 ) + 1-1 t balanciert, also d ( t 1 ) = d ( t 2 ) = 2 1 + d ( t1 ) + 1-1 = 2 1 + max { d ( t1 ), d ( t2 ) } + 1-1 t balanciert, also d ( t 1 ) = d ( t 2 ) = 2 d ( t ) + 1-1 Definition von d ( t )