Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Kapitel 3 Arithmetische Schaltkreise
Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2012.
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Kapitel 5 Stetigkeit.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Christian Schindelhauer
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
1.4.3 Die abgeschlossene Hülle F+ (1|5)
§14 Basis und Dimension  (14.1) Definition: V sei wieder ein K-Vektorraum. Eine Menge B von Vektoren aus V heißt Basis von V, wenn B ist Erzeugendensystem.
Visualisierung funktionaler Programme
Effiziente Algorithmen
Effiziente Algorithmen
2. Die rekursive Datenstruktur Baum 2
Einführung in die Programmierung
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Mehrkriterielle Optimierung mit Metaheuristiken
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
2.4 Rekursion Klassifikation und Beispiele
Graphen und Bäume.
Kapitel 6: Suchbäume und weitere Sortierverfahren
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 3 / 1 Algebraische Hülle und Homomorphie A = [A, F ] sei  -Algebra. Eine.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
 Präsentation transkript:

Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:

Programmierung 1 - Repetitorium Donnerstag, den Kapitel 7 Korrektheit

Programmierung 1 - Repetitorium 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 : 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

Programmierung 1 - Repetitorium 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 + } 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 : ( x n, x n+1 ) r

Programmierung 1 - Repetitorium 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.

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

Programmierung 1 - Repetitorium 7.2 Beweis durch Nachrechnen (1)sum (2) x : 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 = ( ) + 2 = 3 Behauptung : x : x < 1 sum(x) = 0 Beweis :Sei x 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 )

Programmierung 1 - Repetitorium 7.2 Beweis durch Nachrechnen Behauptung : x : sum(x) = if x<1 then 0 else x / 2 * (x+1) Beweis :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 = if x < 1 then 0 else f 2 (x-1) + x = f 2 (x) (IA)

Programmierung 1 - Repetitorium 7.3 Ordnungsrelation Infixschreibweise einer binären Relation r :x r y = ( x, y ) r Sei eine binäre Relation. x yx kleiner gleich y x y y xx größer gleich y x < y x y x yx kleiner yx Vorgänger von y x > y y < xx größer yx 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 () gilt : ( x y y x ) x = y. - partielle Ordnung, wenn sie reflexiv, transitiv und antisymmetrisch ist. - linear, wenn für alle x,y Dom () gilt : x y v y x - wohlfundiert, wenn > terminiert.

Programmierung 1 - Repetitorium 7.3 Ordnungsrelation Eine partielle Ordnung 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 OrdnungNO(x) = { (x,y) X 2 | x y } strukturelle OrdnungSO(x) = { (x,y) X 2 | x Teilobjekt von y } InklusionsordnungIO(x) = { (y,z) | y z und z x } IdentitätId(x) = { (x,x) | x X }

Programmierung 1 - Repetitorium 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.

Programmierung 1 - Repetitorium 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.

Programmierung 1 - Repetitorium 7.4 Terminierungsbeweise Beispiel : Größe von Bäumen size : T(x) size ( x, [ t 1,..., t n ] ) = 1 + size(t 1 ) size(t n ) 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. ( T(X) = X x (T(X)) ) Beispiel : Potenzen power : x power (x,n) = if n=0 then 1 else power (x,n-1) * x Rekursionsrelation { ( (x,n), (x,n-1) ) | x n + } wird von (x,n) x. n in NO( ) eingebettet. power ist natürlich – rekursiv und terminiert.

Programmierung 1 - Repetitorium 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

Programmierung 1 - Repetitorium 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.

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

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

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

Programmierung 1 - Repetitorium 7.7 Größenverhältnisse in Bäumen T(X) = X x (T(X)) Größes T(X) s ( x, [ t 1,..., t n ] ) = 1 + s ( t 1 ) s ( t n ) Tiefed T(X) d ( x, [ t 1,..., t n ] ) = 1 + max { -1, d ( t 1 ),..., d ( t n ) } Breiteb T(X) + 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.

Programmierung 1 - Repetitorium 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 ) = d ( t1 ) = max { d ( t1 ), d ( t2 ) } t balanciert, also d ( t 1 ) = d ( t 2 ) = 2 d ( t ) Definition von d ( t )

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