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

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 WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
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.
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 2011.
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 2011.
Manfred Thaller, Universität zu Köln Köln 22. Januar 2009
Einführung in die Informationsverarbeitung Teil Thaller Stunde VI: Wege und warum man sie geht Graphen. Manfred Thaller, Universität zu Köln Köln.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Baumstrukturen Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
AC Analyse.
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:
Schieferdeckarten Dach.ppt
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
20:00.
Zusatzfolien zu B-Bäumen
In der Schule.
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
für Weihnachten oder als Tischdekoration für das ganze Jahr
Syntaxanalyse Bottom-Up und LR(0)
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Institut für Theoretische Informatik
Der Test fängt mit dem nächsten Bild an!
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Graphen und Bäume.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Großer Altersunterschied bei Paaren fällt nicht auf!
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Einführung in die Astronomie und Astrophysik I Kapitel III: Das Planetensystem 1 Kapitel III: Das Planetensystem.
1 Mathematical Programming Nichtlineare Programmierung.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
SiLeBAT Sicherstellung der Futter- und Lebensmittelwarenkette bei bio- und agro-terroristischen (BAT)-Schadenslagen.
Es war einmal ein Haus
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
 Präsentation transkript:

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

Programmierung 1 - Repetitorium Freitag, den Kapitel 15 Speicherverwaltung

Programmierung 1 - Repetitorium 15.1 Gerichtete Graphen Ein gerichteter Graph ist ein Paar (V,E), das aus einer endlichen Menge V und einer Menge E V x V besteht. Die Elemente von V heißen Knoten (vertices) und die Elemente von E Kanten (edges). Wir sagen, dass eine Kante (v 1,v 2 ) E vom Knoten v 1 zum Knoten v 2 führt. G = (V,E) mit V = {1,2,3,4,5,6} und E = {(1,2),(1,5),(2,3),(2,5),(3,4),(4,2),(6,4)} 4 oder Sei G = (V,E) ein gerichteter Graph. Dann ist E eine binäre Relation auf V. Zu jeder endlichen binären Relation E erhalten wir einen Graphen, indem wir Dom E Ran E als Knotenmenge wählen.

Programmierung 1 - Repetitorium 15.1 Gerichtete Graphen Sei G = (V,E) ein gerichteter Graph. Wir verwenden die folgenden Sprechweisen : Ein Knoten v heißt Nachfolger eines Knotens v genau dann, wenn (v,v) E. Ein Knoten v heißt Vorgänger eines Knotens v genau dann, wenn (v,v) E. Ein Knoten heißt Quelle genau dann, wenn er keine Vorgänger hat. Ein Knoten heißt Senke genau dann, wenn er keinen Nachfolger hat. Der Eingrad eines Knotens ist die Anzahl seiner Vorgänger. Der Ausgrad eines Knotens ist die Anzahl seiner Nachfolger. Ein Pfad ist ein nichtleeres Tupel (v 1,...,v n ), dessen Komponenten durch Kanten verbundene Knoten sind. Dabei heißt n-1 die Länge, v 1 der Ausgangspunkt und v n der Endpunkt des Pfades. Der Pfad geht von v 1 nach v n. Ein Pfad heißt einfach genau dann, wenn er keinen Knoten mehrfach enthält. Ein Pfad heißt Zyklus genau dann, wenn n 2 und v 1 = v n. Ein Knoten v ist von einem Knoten v aus erreichbar genau dann, wenn ein Pfad von v nach v existiert. Wir schreiben v G v genau dann, wenn (v,v) E. Wir schreiben v G* v genau dann, wenn v von v aus erreichbar ist.

Programmierung 1 - Repetitorium 15.1 Gerichtete Graphen Die Größe eines Graphen ist die Anzahl seiner Knoten. Ein Graph heißt nichtleer genau dann, wenn er mindestens einen Knoten hat. Die Tiefe eines nichtleeren Graphen ist die maximale Länge seiner einfachen Pfade. Ein Graph heißt zyklisch genau dann, wenn er einen Zyklus enthält. Ein Graph heißt azyklisch genau dann, wenn er keinen Zyklus enthält. Der symmetrische Abschluss eines Graphen G=(V,E) ist der Graph G=(V,E E -1 ) mit E -1 ={(v,v)|(v,v) E}. Ein Graph heißt stark zusammenhängend genau dann, wenn jeder seiner Knoten von jedem seiner Knoten aus erreichbar ist. Ein Graph heißt zusammenhängend genau dann, wenn sein symmetrischer Abschluss stark zusammenhängend ist. Sei G=(V,E) ein gerichteter Graph. Dann gilt : G ist azyklisch G hat nur einfache Pfade G hat nur endlich viele Pfade Ein Graph G=(V,E) heißt Teilgraph eines Graphen G=(V,E) genau dann, wenn V V und EE. Sei G=(V,E) ein Graph und v V. Der von v aus erreichbare Teilgraph von G ist wie folgt definiert : G v =(V,E VxV) mit V={v V| v G* v}

Programmierung 1 - Repetitorium 15.1 Gerichtete Graphen Sei G ein Graph mit einem Knoten v. Dann ist der von v aus erreichbare Teilgraph von G zusammenhängend. Ein Graph heißt waldartig, wenn er azyklisch ist und jeder Knoten höchstens einen Vorgänger hat. Die Quellen eines waldartigen Baumes heißen auch Wurzel und die Senken heißen auch Blätter. Ein Graph heißt baumartig, wenn er waldartig ist und höchstens eine Wurzel hat. Sei G ein azyklischer Graph. Dann gilt : G ist waldartig Jeder Knoten hat höchstens einen Vorgänger Zwischen zwei Knoten gibt es höchstens einen Pfad Sei B ein nichtleerer baumartiger Graph. Dann gilt : 1.B hat genau eine Wurzel. 2.Zu jedem Knoten git es genau einen Pfad von der Wurzel nach v. 3.B ist zusammenhängend. Sei v ein Knoten eines baumartigen Graphen B. Dann ist der von v aus erreichbare Teilgraph von B ein baumartiger Graph mit der Wurzel v.

Programmierung 1 - Repetitorium 15.1 Gerichtete Graphen Beispiel : Der Graph hat die Quellen 1 und 6 und die Senke 5. Der Knoten 2 hat den Eingrad 2 und den Ausgrad 2. Der Knoten 6 hat den Eingrad 0 und den Ausgrad 1. Vom Knoten 2 aus sind die Knoten 2,5,3 und 4 erreichbar. Vom Knoten 1 aus sind alle Knoten bis auf 6 erreichbar. Der Pfad ist ein Zyklus, somit ist der Graph zyklisch. Die Größe des Graphen ist 6. Die Tiefe dieses nichtleeren zusammenhängenden Graphen ist 3. Der Graph ist weder wald- noch baumartig, da er zyklisch ist.

Programmierung 1 - Repetitorium 15.2 Verzeigerte Blockdarstellung Die virtuelle Maschine V kann nur mit ganzzahligen Werten rechnen. Wir erweitern die Maschine V jetzt um die Fähigkeit, mit Listen, Bäumen, Referenzen und (dynamischen) Prozeduren zu rechnen. Diese neue virtuelle Maschine bezeichen wir mit VH. Die sogenannten dynamischen Datenstrukturen werden in einem zusätzlichen Speicherbereich dargestellt, der als Halde (heap) bezeichnet wird. Dynamische Datenstrukturen werden dabei als Folge von ganzen Zahlen dargestellt. Das dabei zur Anwendung kommende Schema wird als verzeigerte Blockdarstellung bezeichnet. Die Halde ist im Datenspeicher zusammen mit dem Stapel einkapsuliert und als Reihung über int implementiert. Stapel Programmspeicher PC Befehlsinterpreter Halde Datenspeicher

Programmierung 1 - Repetitorium 15.2 Verzeigerte Blockdarstellung Beispiel : datatype tree = L of int | N of int*tree*tree Für jeden Knoten des Baumes allozieren wir in der Halde in Abhängigkeit von seinem Konstruktor einen Block. L xN ( x, t 1, t 2 ) 1x1x 2 x Adresse t 1 Adresse t 2 Konstruktor Marke Unterbaum Die Adresse eines Baumes ist die Anfangsadresse des Blocks, der die Wurzel des Baumes darstellt Anfangsadresse

Programmierung 1 - Repetitorium 15.2 Verzeigerte Blockdarstellung Anfangsadresse Die Blöcke können in beliebiger Reihenfolge und an beliebiger Stelle in der Halde stehen. Das Verbergen von semantisch irrelevanten Implementierungsdetails erlaubt wichtige Optimierungen. Insbesondere besteht die Möglichkeit, in einem Baum mehrfach auftretende Teilbäume nur einmal darzustellen.

Programmierung 1 - Repetitorium 15.2 Verzeigerte Blockdarstellung Alternative Blockdarstellung bei gerichteten Graphen : Anzahl Nachfolger Marke Adresse erster Nachfolger Adresse letzter Nachfolger Blockschema : Anfangsadresse

Programmierung 1 - Repetitorium 15.3 Eine virtuelle Maschine mit Halde Die um eine Halde erweiterte virtuelle Maschine V nennen wir VH. VH hat vier neue Befehle : new i nimmt i Werte vom Stapel und alloziert in der Halde einen neuen Block mit i Zahlen, in die die Werte eingetragen werden. (oberster Wert in die erste Zelle u.s.w.) Die Anfangsadresse des neuen Blocks wird auf den Stapel gelegt. getH i nimmt die Adresse eines Blocks vom Stapel und legt den Wert in der i-ten Zelle des Blocks auf den Stapel. putH i nimmt die Adresse eines Blocks und einen Wert vom Stapel und schreibt den Wert in die i-te Zelle des Blocks. eq nimmt zwei Werte vom Stapel und testet auf Gleichheit. Wenn die Werte gleich sind, wird 1 auf den Stapel gelegt, sonst 0. i 1, da die Zellen von eins ab durchnummeriert werden Jeder der vier Befehle erhöht außerdem den Programmzähler um eins.

Programmierung 1 - Repetitorium 15.3 Eine virtuelle Maschine mit Halde Beispiele : fun tree n = if n<1 then L 0 else let val t = tree(n-1) in N(n,t,t) end [proc(1,18),(* fun tree n = *) con 0, getF ~1, leq, cbranch 5,(* if n<=0 *) con 0, con 1, new 2, return,(* then L 0 else *) con 1, getF ~1, sub, call 0,(* in N(n,t,t) end *) getF 1, getF ~1, con 2, new 4, return] Mit VH kann man auch Referenzen realisieren :ref 13 [ con 13, new 1 ] fun double r = (!r) before r:=2*(!r) [proc(1,9),(* fun double r = *) getF ~1, getH 1, (* (!r) before *) getF 1, con 2, mul,(* 2*(!r) *) getF ~1, putH 1,(* r:= *) return]

Programmierung 1 - Repetitorium 15.3 Eine virtuelle Maschine mit Halde Beispiele : fun sum (L x) = x | sum (N(x,t,t)) = x + sum t + sum t [proc(1,20),(* fun *) getF ~1, getH 1, con 1, eq, cbranch 4,(* sum(L x) = *) getF ~1, getH 2, return,(* x *) (* |sum(N(x,t,t)) = *) getF ~1, getH 4, call 0,(* sum t *) getF ~1, getH 3, call 0,(* sum t *) getF ~1, getH 2, add, add,(* x + + *) return] fun top (L x) = x | top (N(x,_,_)) = x [proc(1,4), getF ~1, getH 2, return]

Programmierung 1 - Repetitorium 15.4 Speicherbereinigung Im Laufe einer Berechnung sammeln sich auf der Halde Objekte, die für die Fortsetzung der Berechnung nicht mehr benötigt werden. Diese Objekte müssen spätestens dann entfernt werden, wenn der Platz in der Halde erschöpft ist. Diese Aufgabe wird als Speicherbereinigung bezeichnet.