Datenstrukturen und Algorithmen. Vorlesung 8

Größe: px
Ab Seite anzeigen:

Download "Datenstrukturen und Algorithmen. Vorlesung 8"

Transkript

1 Datenstrukturen und Algorithmen Vorlesung 8

2 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap

3 Schriftliche Prüfung Informationen Die schriftliche Prüfung findet in der ersten Hälfte aus Seminar 5 statt Dauer: 50 Minuten Alle nehmen mir ihrer Gruppe an der Prüfung Teil! (wie im Stundenplan)

4 Schriftliche Prüfung Aufgaben Die Aufgaben sind der Form: Container + Repräsentierung (Datenstruktur) + Operation Containers: Bag/MultiSet Set/Menge MultiMap List Sortierte Containers für die oben genannten Containers Schwachbesetzte Matrix (sparse matrix)

5 Schriftliche Prüfung Aufgaben Datenstrukturen: Einfach verkettete Listen mit dynamischer Allokation Doppelt verkettete Listen mit dynamischer Allokation Einfach verkettete Liste auf Arrays Doppelt verkettete Listen auf Arrays Operationen: Einfügen (add) Löschen (remove) Suchen (search) Für schwachbesetzte Matrix: Wert ändern (modify), Element von der Position (i,j) suchen

6 Schriftliche Prüfung Aufgaben Beispiel: ADT Set repräsentiert auf doppelt verkettete Liste auf Array Operation: add

7 Schriftliche Prüfung Punkteanzahl 1p Startnote 0.5p Spezifikation der Operation: Header, Vor- und Nachbedingungen add(s, e) pre: s S, e TElem post: s S, s = s e (falls e in s enthalten ist, dann wird e nicht nochmal eingefügt) 0.5p Beschreibung des Containers Ein Set/Menge ist ein Container, deren Elemente eindeutig sind, wobei die Reihenfolge der Elemente keine Rolle spielt (die Elemente haben keine entsprechende Positionen)

8 Schriftliche Prüfung Punkteanzahl 1.25p Repräsentierung 1p Strukturen, die gebraucht werden um den Container zu repräsentieren 0.25p Struktur des Iterators für den Container Set: cap: Integer elems: TElem[] next: Integer[] prev: Integer[] head: Integer tail: Integer firstempty: Integer Iterator: set: Set current: Integer

9 Schriftliche Prüfung Punkteanzahl 4.5p Implementierung der Operation in Pseudocode Bei einer Datenstruktur mit dynamischer Allokation kann man die Operationen allocate und deallocate/free benutzen. Alle anderen Funktionen, die ihr in der Implementierung benutzen wollt, müsst ihr auch implementieren. Bei einer Datenstruktur auf Arrays braucht ihr kein Code für die Vergrößerungsoperation (resize) zu schreiben, aber ihr müsst zeigen wo und wann diese stattfinden muss:... if s.firstempty = -1 end-if

10 Schriftliche Prüfung Punkteanzahl 1.25p Komplexität 0.25p Bester Fall mit Erklärungen 0.5p Schlimmster Fall mit Berechnung und Erklärungen 0.5p Durchschnittlicher Fall mit Berechnung 1p Stil Generisch (mit TElem, TComp, generische Relation) Ist es effizient? Usw.

11 ADT Deque ADT Deque (Double Ended Queue) ist ein Container, wo die Daten an beiden Enden gelesen, eingefügt oder entfernt werden können: push_front und push_back pop_front und pop_back top_front und top_back Man kann ein Stack oder eine Schlange mit einer Deque simulieren, wenn man nicht alle Operationen braucht

12 ADT Deque Mögliche Repräsentierungen für Deque: Zyrkuläres Array Doppelt verkettete Liste Dynamisches Array von Arrays mit konstanter Größe

13 ADT Deque - Repräsentierung Eine interessante Repräsentierung für Deque ist ein dynamisches Array von Arrays mit konstanter Kapazität: Man speichert die Elemente in Arrays mit konstanter Kapazität (Blocks) In einem dynamischen Array speichert man die Adressen der Blocks Alle Blocks außer dem ersten und dem letzten sind voll Der erste Block wir von rechts nach links ausgefüllt Der letzte Block wird von links nach rechts ausgefüllt Falls der erste oder letzte Block voll ist, dann erstellt man einen neuen Block und man speichert die Adresse in dem dynamischen Array Falls das dynamische Array voll ist, dann wird seine Kapazität vergrößert (man allokiert einen größeren Speicherplatz und die Adressen der Blocks werden kopiert, aber nicht geändert)

14 Deque - Beispiel Die Elemente der Deque sind: 76, 19, 45,..., 12, 14,..., 46, 32, 99, 34

15 Deque - Beispiel Informationen, die man speichern muss für die Repräsentierung auf ein dynamisches Array von Blocks: Blockgröße Das dynamische Array von Blockadressen Die Kapazität des dynamischen Arrays Die erste besetzte Position in dem dynamischen Array Die erste besetzte Position in dem ersten Block Die letzte besetzte Position in dem dynamischen Array Die letzte besetzte Position in dem letzten Block Die letzten zwei Felder müssen nicht unbedingt gespeichert werden, wenn man die Anzahl der Elemente aus dem Deque kennt

16 ADT Prioritätsschlange/Vorrangwarteschlange (Priority Queue) ADT Prioritätsschlange ist ein Container, in welchem jedes Element eine zugewiesene Priorität hat In einer Prioritätsschlange hat man Zugriff nur auf das Element mit der höchsten Priorität Es gilt also das HPF Prinzip (Highest Priority First)

17 ADT Prioritätsschlange Generell, kann man die Relation R auf die Menge der Prioritäten definieren: R : TPriority TPriority Das Element mit der höchsten Priorität wird von der Relation R bestimmt Zum Beispiel, falls die Relation R =, dann ist das Element mit der höchsten Priorität das größte Element (Maximum)

18 ADT Prioritätsschlange Domäne: PQ = { pq pq ist eine Prioritätsschlange mit Elementen (e, p), e TElem, p TPriority }

19 ADT Prioritätsschlange - Interface init(pq, R) descr: erstellt eine leere Prioritätsschlange pre: R ist eine Relation auf die Menge der Prioritäten, R : TPriority TPriority post: pq PQ, pq ist eine leere Prioritätsschlange destroy(pq) descr: zerstört eine Prioritätsschlange pre: pq PQ post: pq wurde zerstört

20 ADT Prioritätsschlange - Interface push(pq, e, p) descr: fügt ein neues Element in die Prioritätsschlange ein pre: pq PQ, e TElem, p TPriority post: pq PQ, pq = pq (e,p) pop(pq, e, p) descr: liefert das Element mit der höchsten Priorität aus der Prioritätsschlange und entfernt es von der Schlange. Die Priorität des Elementes wird auch zurückgegeben. pre: pq PQ post: e TElem, p TPriority, e ist das Element mit der höchsten Priorität aus pq und p ist seine Priorität, pq PQ, pq = pq (e,p) throws: ein Underflow Error, falls die Prioritätsschlange leer ist

21 ADT Prioritätsschlange - Interface top(pq, e, p) descr: liefert das Element mit der höchsten Priorität aus der Prioritätsschlange zusammen mit seiner Priorität. Die Prioritätsschlange wird nicht geändert. pre: pq PQ post: e TElem, p TPriority, e ist das Element mit der höchsten Priorität aus pq und p ist seine Priorität throws: ein Underflow Error, falls die Prioritätsschlange leer ist isempty(pq) descr: überprüft ob die Prioritätsschlange leer ist pre: pq PQ wahr, falls pq keine Elemente enthält post: isempty ቊ falsch, ansonsten

22 ADT Prioritätsschlange - Interface isfull(pq) descr: überprüft ob die Schlange voll ist pre: pq PQ wahr, falls pq voll ist post: isfull ቊ falsch, ansonsten Bemerkung! Die Prioritätsschlange kann nicht iteriert werden! Dafür gibt es auch keine iterator Operation.

23 ADT Prioritätsschlange - Repräsentierung Um ADT Prioritätsschlange zu implementieren kann man folgende Datenstrukturen für die Repräsentierung benutzen: Dynamisches Array Verkettete Liste Heap

24 ADT Prioritätsschlange - Repräsentierung Falls die Repräsentierung ein Dynamisches Array oder eine Verkettete Liste ist, dann muss man entscheiden wie die Elemente gespeichert werden: Man kann die Elemente sortiert nach der Priorität speichern Man kann die Elemente in der Reihenfolge, in der sie eingefügt wurden, speichern

25 ADT Prioritätsschlange - Repräsentierung Komplexität der Operationen für die zwei Repräsentierungs- Möglichkeiten: Operation Sortiert Nicht-sortiert push O(n) Θ(1) pop Θ(1) Θ(n) top Θ(1) Θ(n) Was passiert wenn man in einem separaten Feld das Element mit der höchsten Priorität speichert?

26 ADT Prioritätsschlange Repräsentierung auf binären Heap Eine andere mögliche Repräsentierung der Prioritätsschlange ist mit Hilfe eines binären Heaps, in welchem das Element mit der höchsten Priorität in der Wurzel des Heaps gespeichert wird

27 ADT Prioritätsschlange Repräsentierung auf binären Heap Wenn ein Element in die Prioritätsschlange eingefügt wird, dann braucht man nur das Element in den Heap einzufügen (mit bubble-up falls nötig) Wenn ein Element aus der Prioritätsschlange entfernt wird, dann wird die Wurzel des Heaps entfernt (mit bubble-down falls nötig) Bei top wird die Wurzel zurückgeben

28 ADT Prioritätsschlange Repräsentierung Komplexitäten für die unterschiedlichen Repräsentierungen: Operation Sortiert Nicht-sortiert Heap push O(n) Θ(1) O(log 2 n) pop Θ(1) Θ(n) O(log 2 n) top Θ(1) Θ(n) Θ(1) Welche ist die totale Komplexität für folgende Sequenz von Operationen: Man fängt mit einer leeren Prioritätsschlange an Man fügt n Elemente in die Prioritätsschlange Man entfernt n Elemente aus der Prioritätsschlange

29 Prioritätsschlange Anwendungen Aufgaben, die mit Hilfe einer Prioritätsschlange gelöst werden können: Stipendienvergabe (siehe Seminar 5) Triage Prozedur in Krankenhäusern

30 Prioritätsschlange Erweiterung Wir haben die Standard-Operationen aus dem Interface der Prioritätsschlange besprochen: push pop top isempty init Manchmal sind folgende Operationen auch nützlich: Die Priorität eines Elementes erhöhen Ein beliebiges Element löschen Merge zweier Prioritätsschlangen

31 Prioritätsschlange Erweiterung Welche ist die Komplexität dieser Operationen wenn die Prioritätsschlange auf binären Heap repräsentiert ist: Die Priorität eines Elementes erhöhen ist O(log 2 n) wenn man die Position des Elementes kennt Ein beliebiges Element löschen ist O(log 2 n) wenn man die Position des Elementes kennt Merge zweier Prioritätsschlangen hat die Komplexität Θ(n) (man nimmt an, dass beide Prioritätsschlangen n Elemente enthalten

32 Prioritätsschlange andere Repräsentierungen Wenn man kein Merge zwischen Prioritätsschlangen braucht, dann sind binären Heaps gute Repräsentierungen Wenn man die Merge Operation braucht, dann gibt es andere Datenstrukturen, die als Repräsentierung für Prioritätsschlangen besser geeignet sind (kleinere Komplexität) Davon besprechen wir: Binomial-Heap

33 Binomial-Heap Ein Binomial-Heap besteht aus einer Sequenz von Binomial-Bäumen verschiedener Ordnung. Binomial-Bäume können wie folgt rekursiv definiert werden: Ein Binomial-Baum der Ordnung 0 besteht aus einem einzelnen Knoten. Ein Binomial-Baum der Ordnung k besitzt eine Wurzel mit Grad k, deren Kinder genau die Ordnung k-1, k-2,..., 0 (in dieser Reihenfolge) besitzen.

34 Binomial-Baum Beispiel Binomal Bäume der Ordnung 0, 1, 2 und 3

35 Binomial-Baum Ein Binomial-Baum der Ordnung k hat genau 2 k Knoten Die Höhe eines Binomial-Baumes der Ordnung k ist k Wenn man die Wurzel eines Binomial-Baumes der Ordnung k löscht, dann kriegt man k Binomial-Bäume der Ordnung k-1, k-2,..., 2, 1, 0. Ein Binomial-Baum der Ordnung k lässt sich leicht aus zwei Binomial- Bäumen der Ordnung k-1 erstellen (merge), indem einer der beiden Bäume zum am weitesten links stehenden Kind des anderen gemacht wird.

36 Binomial-Baum Merge Zwei Binomial-Bäume der Ordnung 2 (vor dem Merge)

37 Binomial-Baum Merge Merge in einem Binomial-Baum der Ordnung 3 eine Möglichkeit

38 Binomial-Baum Merge Merge in einem Binomial-Baum der Ordnung 3 zweite Möglichkeit

39 Binomial-Baum Repräsentierung Um einen Binomial-Baum zu implementieren kann man folgende Repräsentierung benutzen: Man braucht eine Struktur für die Knoten. Für jeden Knoten speichert man Folgendes: Die Information aus dem Knoten Die Adresse des Vaterknotens Die Adresse des ersten Kind-Knotens Die Adresse des nächsten Bruder-Knotens Für den Baum speichert man die Adresse des Wurzelknotens (und vielleicht die Ordnung des Baumes)

40 Binomial-Heap Ein Binomial-Heap besteht aus einer Sequenz von Binomial-Bäumen mit folgenden Eigenschaften: Jeder Binomial-Baum erfüllt die Heap-Eigenschaft: für jeden Knoten ist der Wert kleiner als die Werte seiner Kinder Es gibt höchstens ein Binomial-Baum der Ordnung k Als Repräsentierung, ist ein Binomial-Heap meistens eine sortierte verkettete Liste, wobei jeder Knoten ein Binomial-Baum enthält und die Knoten nach der Ordnung der Bäume sortiert sind

41 Binomial-Heap Beispiel Binomial-Heap mit 14 Knoten; besteht aus 3 Binomial-Bäume der Ordnung 1, 2 und 3

42 Binomial-Heap Für eine gegebene Anzahl von Elementen n, ist die Struktur des Binomial- Heaps (die Anzahl der Binomial-Bäume und deren Ordnung) eindeutig Die Struktur der Binomial-Heap wird von der binären Darstellung der Zahl n bestimmt Zum Beispiel 14 = = , d.h. ein Binomial-Heap mit 14 Knoten enthält Binomial-Bäume der Ordnung 3, 2 und 1 (sortiert in umgekehrter Reihenfolge 1, 2,3) Zum Beispiel 21 = = , d.h. ein Binomial-Heap mit 21 Knoten enthält Binomial-Bäume der Ordnung 4, 2 und 0

43 Binomial-Heap Ein Binomial-Heap mit n Elementen enthält höchstens log 2 n Binomial- Bäume Die Höhe des Binomial-Heaps ist höchstens log 2 n

44 Binomial-Heap Merge Die interessante Operation des Binomial-Heaps ist die Merge Operation, die auch von anderen Operationen benutzt wird Da beide Binomial-Heaps sortierte verkettete Listen sind, besteht der erste Schritt der Merge-Operation aus dem Merge der zwei sortierten Listen Das Ergebnis des Merges kann zwei Binomial-Bäume derselben Ordnung enthalten. Man muss also die Liste iterieren und Binomial-Bäume derselben Ordnung k werden in einem Binomial-Baum der Ordnung k+1 vereinigt. Bei dem Merge der Binomial-Bäume muss die Heap-Eigenschaft aufbewahrt werden

45 Binomial-Heap Merge Beispiel

46 Binomial-Heap Merge Beispiel Nach dem Merge der zwei verketteten Listen von :

47 Binomial-Heap Merge Beispiel Nach dem Merge der Binomial-Bäume derselben Ordnung:

48 Binomial-Heap Merge Operation Wenn beide Binomial-Heaps n Elemente enthalten, dann ist die Komplexität des Merges O(log 2 n) (die maximale Anzahl der Binomial- Bäume aus einer Binomial-Heap mit n Elementen ist log 2 n)

49 Binomial-Heap andere Operationen Fast alle anderen Operationen für Binomial-Heap benutzen die Merge Operation Push Operation: Um ein neues Element einzufügen erstellt man einen Binomial-Heap, der dieses Element enthält, und man berechnet den Merge mit dem ursprünglichen Binomial-Heap. Komplexität: O (log 2 n) im schlimmsten Fall (Θ 1 amortisiert) Top Operation: Das kleinste Element aus der Binomial-Heap (das Element mit der höchsten Priorität) ist die Wurzel einer der Binomial-Bäumen. Um das Minimum zurückzugeben muss man über die Wurzeln iterieren, also die Komplexität ist O (log 2 n)

50 Binomial-Heap andere Operationen Pop Operation: Das Minimum entfernen heißt die Wurzel einer der Binomial-Bäumen zu entfernen. Wenn man die Wurzel aus einem Binomial-Baum löscht, dann erhält man eine Sequenz von Binomial-Bäumen. Diese Bäume werden als Binomial-Heap betrachtet (in umgekehrter Reihenfolge). Man berechnet den Merge zwischen den neuen Binomial-Heap und den Rest der Elementen aus dem ursprünglichen Binomial-Heap Die Komplexität ist O (log 2 n)

51 Binomial-Heap pop Das Minimum ist in einer der Wurzeln

52 Binomial-Heap pop Aus dem entsprechenden Binomial-Baum bleiben k Binomial-Bäume

53 Binomial-Heap pop Betrachte diese als ein Binomial-Heap

54 Binomial-Heap pop Berechne den Merge zwischen den zwei Binomial-Heaps Erster Schritt der Merge-Operation:

55 Binomial-Heap pop Zweiter Schritt der Merge-Operation:

56 Binomial-Heap andere Operationen Priorität eines Elementes erhöhen: Wenn man ein Zeiger zu dem Element hat, deren Priorität erhöht werden muss, dann kann man die Priorität ändern und dann bubble-up ausführen falls die Priorität größer ist als die Priorität des Vaters (in den Beispielen hohe Priorität heißt kleine Zahl) Komplexität: O (log 2 n) Ein beliebiges Element löschen: Wenn man ein Zeiger zu dem Element hat, das man löschen will, dann kann man seine Priorität auf - setzen (d.h. das Element wird bis zu dem Wurzel verschoben) und dann löscht man ein Element (also die Wurzel) Komplexität: O (log 2 n)

57 Denk darüber nach Verkettete Listen: Man nimmt an, dass es zwei einfach verkettete Listen gibt, die sich in einem Punkt treffen und von da an gemeinsame Knoten haben. Die Anzahl der Knoten aus der zwei Listen vor dem gemeinsamen Teil ist nicht bekannt. Schreibe einen Algorithmus, der den ersten gemeinsamen Knoten findet (Tipp benutze ein Stack)

58 Denk darüber nach Stack und Schlange Wie kann man ein Stack mit Hilfe von zwei Schlangen implementieren? Welche sind die Komplexitäten der Operationen? Wie kann man eine Schlange mit Hilfe von zwei Stacks implementieren? Welche sind die Komplexitäten der Operationen? Wie kann man zwei Stacks auf einem Array implementieren?

59 Denk darüber nach Stack und Schlange Gegeben sei eine Sequenz von Charaktern. Schreibe einen rekursiven Algorithmus, der benachbarte Duplikate entfernt. Zum Beispiel, für die Sequenz mississippi ist das Ergebnis m Gegeben sei eine Zahl k und eine Schlange. Wie kann man die ersten k Elemente der Schlange in umgekehrter Reihenfolge speichern (reverse) z.b. k=4, Schlange: [10, 20, 30, 40, 50, 60, 70, 80, 90], das Ergebnis ist: [40, 30, 20, 10, 50, 60, 70, 80, 90].

60 Denk darüber nach Prioritätsschlange: Wie kann man ein Stack mit Hilfe einer Prioritätsschlange implementieren? Wie kann man eine Schlange mit Hilfe einer Prioritätsschlange implementieren?

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Prioritätswarteschlangen Mariano Zelke Datenstrukturen 2/28 Der abstrakte Datentyp Prioritätswarteschlange : Füge Elemente (mit Prioritäten) ein und entferne

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.6 AVL-Bäume 4.8 Rot-Schwarz-Bäume Idee: Verwende Farben, um den Baum vertikal zu

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2013/14 Prof. Dr. Sándor Fekete 1 4.6 AVL-Bäume 2 4.8 Rot-Schwarz-Bäume Rudolf Bayer Idee: Verwende Farben, um den

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr

Amortisierte Analysen

Amortisierte Analysen Amortisierte Analysen 26. Mai 2016 1 Einleitung Es gibt viele Datenstrukturen, bei deren Komplexitätsanalyse das Problem auftaucht, dass die Ausführung mancher Operationen Einfluss auf die Komplexität

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten Kapitel 3 Algorithmen für große Datenmengen Motivation Externspeicheralgorithmen Es werden immer größere Datenmengen gesammelt (WWW, Medizin, Gentechnik ) Daten müssen auf großen externen Massenspeichern

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

2. Musterlösung. Problem 1: Least Common Ancestor

2. Musterlösung. Problem 1: Least Common Ancestor Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Least Common Ancestor pt (a) Aus Zeilen und ist klar, dass LCA(wurzel[T ]) eine Folge von rekursiven

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 11. Dynamische Datenstrukturen 11.1 Lineare Liste Eine lineare Liste (auch einfach verkettete Liste ) ist eine Art Array mit flexibler Länge.

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Teil II: Prioritätslisten (Priority Queues)

Teil II: Prioritätslisten (Priority Queues) Teil II: Prioritätslisten (Priority Queues)! Definition und Anwendungen! Binäre Heaps! Index-Heaps mit change- und remove-operation! Binomiale Heaps mit merge-operation Prof. Dr. O. Bittel, HTWG Konstanz

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu Bin Hu Algorithmen und Datenstrukturen 2 Arbeitsbereich fr Algorithmen und Datenstrukturen Institut fr Computergraphik und Algorithmen Technische Universität Wien One of the few resources increasing faster

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 202/3 24. Vorlesung Amortisierte Analyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Hash-Tabellen Frage: Ziel: Problem: Lösung: Wie groß macht man

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mathematische Grundlagen: Das Handwerkszeug Mariano Zelke Datenstrukturen 2/26 Formeln: n - i = n (n+1) 2 und - i=1 k i=0 a i = ak+1 1 a 1, falls a 1 Rechnen

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011 Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Übung 13: Priority Queues (Vorrangwarteschlangen 1 )

Übung 13: Priority Queues (Vorrangwarteschlangen 1 ) Übung 13: Priority Queues (Vorrangwarteschlangen 1 ) Definition Eine Priority Queue ist eine Datenstruktur zur Speicherung einer Menge von Elementen, für die eine Halbordnung (Prioritätssteuerung) definiert

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16. Januar 2013 (Balancierte Suchbäume) Junior-Prof. Dr. Olaf Ronneberger

Mehr

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Copyright, Page 1 of 8 AVL-Baum

Copyright, Page 1 of 8 AVL-Baum www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist

Mehr

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

3. Übung Algorithmen I

3. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

Mehr

Java-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein

Java-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein Übersicht Beschreibung der Datenstruktur Seite 1 Schnittstelle PriorityQueue Seite 2 Klasse PriorityQueueException Seite 3 Klasse Data Seite 4 Klasse PriorityQueueImpl Seite 5 Klasse Huffman Seite 8 Aufbau

Mehr

Niedersächsisches Kultusministerium Juli 2015

Niedersächsisches Kultusministerium Juli 2015 18. Informatik A. Fachbezogene Hinweise Die Rahmenrichtlinien Informatik sind so offen formuliert, dass sie Raum für die Gestaltung eines zeitgemäßen Informatikunterrichts lassen. Neue Inhalte der Informatik

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Vorlesung 09: Mengen. Peter Thiemann SS 2010

Vorlesung 09: Mengen. Peter Thiemann SS 2010 Vorlesung 09: Mengen Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 43 Inhalt Mengen HashSet LinkedHashSet CopyOnWriteArraySet EnumSet SortedSet NavigableSet

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Elementare Datenstrukturen für dynamische Mengen Stapel & Warteschlangen Verkettete Listen Bäume Anwendungsbeispiel:

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Einführung in die STL anhand eines ausgewählten Beispiels

Einführung in die STL anhand eines ausgewählten Beispiels Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen

Mehr

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr. Übersicht Datenstrukturen und Vorlesung 1: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen. HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Java. Wir verwenden oft Java für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig.

Java. Wir verwenden oft Java für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig. Komplexität von Algorithmen (Folie 34, Seite 18 im Skript) Wir verwenden oft für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig. Lernziel sind die einzelnen

Mehr

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchbäume mit inneren Knoten verschiedener Knotengrade. Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen Datenstrukturen & Algorithmen Übersicht Rot-schwarz Bäume Eigenschaften Einfügen Matthias Zwicker Universität Bern Frühling 2009 2 Rot-schwarz Bäume Binäre Suchbäume sind nur effizient wenn Höhe des Baumes

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

OPERATIONEN AUF EINER DATENBANK

OPERATIONEN AUF EINER DATENBANK Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:

Mehr

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte

Mehr