Dynamische Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Übung Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen

OCP Java SE 8. Collections

Vorlesung Datenstrukturen

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

5.5 Prioritätswarteschlangen

Algorithmen und Datenstrukturen

Sortieren II / HeapSort Heaps

Manipulation von Mengen

Algorithmen und Datenstrukturen 1

Vorlesung Datenstrukturen

elementare Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Informatik II Prüfungsvorbereitungskurs

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Mengen und Multimengen

Nützliche Utility-Klassen des JDK

Algorithmen und Datenstrukturen II

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Einstieg in die Informatik mit Java

JAVA KURS COLLECTION

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

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

13. Bäume: effektives Suchen und Sortieren

Baumbasierte Strukturen

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

13. Bäume: effektives Suchen und Sortieren

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

18. Natürliche Suchbäume

Suchen und Sortieren Sortieren. Heaps

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper

Anwendungsbeispiel MinHeap

Informatik II Prüfungsvorbereitungskurs

AVL-Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. AVL-Bäume 1/38

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016

Algorithmen und Datenstrukturen I AVL-Bäume

Kapitel Andere dynamische Datenstrukturen

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

18. Natürliche Suchbäume

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Programmiertechnik II

Informatik II, SS 2014

Mehrwegbäume Motivation

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Mengen und Multimengen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume

11. Elementare Datenstrukturen

Datenstrukturen und Algorithmen. Vorlesung 8

Informatik II Vorlesung am D-BAUG der ETH Zürich

Logische Datenstrukturen

Kapitel Andere dynamische Datenstrukturen

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

19 Collections Framework

Algorithmen und Datenstrukturen

Auswählen nach Rang (Selektion)

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

Teil VII. Hashverfahren

Datenstrukturen. Ziele

Informatik II, SS 2018

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen

Algorithmen und Datenstrukturen 12

9. Natürliche Suchbäume

Übung Algorithmen und Datenstrukturen

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Was ist ein assoziativer Speicher?

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

19 Collections Framework

Algorithmen und Datenstrukturen 1

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Inhaltsverzeichnis. Teil 1 Grundlagen 23

Collections. Arthur Zaczek. Nov 2015

Programmiertechnik II

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

Teil V. Generics und Kollektionen in Java

Fallstudie: Online-Statistik

3.2. Divide-and-Conquer-Methoden

3.8 Bäume. Definition des Baumes

t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen.

Übung Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Bäume, Suchbäume und Hash-Tabellen

Copyright, Page 1 of 7 Heapsort

Abstract Data Structures

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Datenbanken. Interne Datenorganisation:

Informatik II Bäume zum effizienten Information Retrieval

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

Transkript:

Dynamische Datenstrukturen

B-Bäume größere Datenmengen verwalten Extern speichern Art der Speicherung berücksichtigen sonst kein optimaler Datenzugriff möglich Art der Speicherung großer Datenmengen Magnetplatten (hard disc) auch Platten (disc) Speicherplatten Datenstruktur um Berücksichtigung der Verzögerungszeiten

Dynamische Datenstrukturen Speicherhierarchien und Plattenspeicher Speicherplatz nach verschiedenen Kriterien Kosten, Zugriffszeit, Dauerhaftigkeit, Zuverlässigkeit, Schreibbarkeit (ROM = Read Only Memory) Usw Hier wichtigsten Kriterien Kosten und

Speicherhierarchien und Plattenspeicher Speicherung durch magnetische Felder

Speicherhierarchien und Plattenspeicher Prinzipieller Aufbau einer Magnetplatte

Speicherhierarchien und Plattenspeicher Aufbau eines Plattenstapels mit mehreren Magnetplatten und Schreibleseköpfen

Speicherhierarchien und Plattenspeicher Aufteilung der Spuren einer Magnetplatte in Sektoren

Struktur von B-Bäumen balancierter Baum der Ordnung m, Sämtliche Blätter gleiche Tiefe jeder Knoten bis zu m Nachfolger großer Verzweigungsgrad gesuchte Information mit wenigen Zugriffen finden Knoten in Blöcken im Plattenspeicher abgelegt Zugriffszeit stark verringern

Struktur von B-Bäumen je Knoten bis zu m 1 Schlüssel geordnet (s 1, s 2,...,s m 2, s m 1 ), wobei s 1 < s 2 <... < s m 2 < s m 1 Adressinformation z i (z 0, s 1, z 1, s 2, z 2,..., s m 2, z m 2, s m 1, z m 1 ).

Struktur von B-Bäumen je Knoten bis zu m 1 Schlüssel geordnet Schlüssel s zwischen s k 1 und s k : Zeiger z k 1 Schlüssel kleiner als s 1 : Zeiger z 0, Schlüssel größer als s m : Zeiger 0 zfalls m s s 1 Nachfolgeknoten zu s={z z k 1 falls s k 1 s s k falls s m s z m m für jeweilige Anzahl von Schlüsseln zwei benachbarte Knoten zusammen niemals weniger als m Söhne zu einem Knoten verschmelzen

Suchen in B-Bäumen Schlüssel besitzen Verweis auf Datensatz Schlüssel nicht im ersten Knoten Nachfolgeknoten suchen zu Knoten gehörende Seite mit Schlüsseln laden Schlüssel weiter suchen bis Blatt des B-Baums Schlüssel nicht gefunden nicht im B-Baum entsprechende Meldung ausgeben

Einfügen in B-Bäume Einfügen eines neuen Schlüssels

Einfügen in B-Bäume Einfügen eines Schlüssels bei Knotenüberlauf

Wurzel ein Schlüssel zwei Nachfolgeknoten mit halber Schlüsselzahl (=m/2,m/2-1, oder 2 (m-1)/2) Dynamische Datenstrukturen Einfügen in B-Bäume Wenn auch Vaterknoten überläuft Knoten aufspalten in den meisten Implementierungen vor Einfügen jeden vollständig gefüllten Knoten aufspalten Wurzel erreicht beim Absenken aufspalten neue Wurzel erzeugen Beispiel: m=5 2 7 22 99 Wurzel Neue Wurzel 2 7 - - 22 - - - 99 - - -

Einfügen in B-Bäume Wenn auch Vaterknoten überläuft Wurzel erreicht beim Absenken aufspalten neue Wurzel erzeugen Beispiel: m=4 Wurzel ein Schlüssel Zwei Nachfolgeknoten mit halber Schlüsselzahl (=m/2,m/2-1, oder 2 (m-1)/2) Baum wächst nach oben zur Wurzel Baum bleibt ausgeglichen Alternative Implementierung: Suche Einfügestelle Wurzel 8 12 18 16 Neue Wurzel 8 - - 12 - - 18 - - 16

Löschen in B-Bäumen zunächst Schlüssel suchen nächstgrößere Schlüssel an dessen Stelle kleinster, der größer ist als dieser Schlüssel stets in einem Blatt nur Schlüssel von Blättern gelöscht Anzahl der Seiten mit Knoten gering halten mindestens (m 1)/2 Schlüssel je Knoten sonst folgende Operationen durchführen

Löschen in B-Bäumen Anzahl der Seiten mit Knoten gering halten mindestens (m 1)/2 sonst folgende Operation durchführen oder folgende

Eigenschaften von B-Bäumen Tiefe sei T Anzahl der Knoten: Max. Anzahl der Schlüssel: K T =1 m m 2 m 3 m T 1 = mt 1 m 1 S T =K T m 1 =m T 1 Bei zufälliger Schlüsseleingabe ist mittlere Füllung 2/3 S T.

Top Down 2-3-4-Bäume

Rot-Schwarz-Bäume Top Down 234-Baum in Binärbaum wandeln Vollständig gefüllter Baum 2 6 15 6 2 15 Nicht vollständig 17 gefüllter Baum 15 17-15 17-15 15 17

Rot-Schwarz-Bäume Top Down 234-Baum in Binärbaum wandeln 15 27 37 27 15 37 11-20- 23-31 33 36 50 51-11 23 33 50 20 31 36 51

Rot-Schwarz-Bäume Eigenschaften 1. Jeder Knoten ist entweder schwarz oder rot. 2. Ein roter Knoten hat zwei schwarze Kinder oder keine Kinder (Blattknoten). 3. Ein schwarzer Knoten hat zwei Kinder; oder nur ein rotes Kind, welches selbst keine Kinder hat (Blattknoten). 4. Die Anzahl der schwarzen Verkettungen von der Wurzel bis zum Blatt ist für jedes Blatt gleich. 5. Die Wurzel ist schwarz.

Rot-Schwarz-Bäume Auch: letzte Blätter einheitlich Null-Knoten Regel: Blattknoten sämtlich schwarz Weitere Eigenschaften Rote Verkettungen niemals direkt hintereinander niemals mehr als doppelt so viele rote wie schwarze Verkettungen Verhältnis der Tiefe zweier Blätter höchstens 1:2 Bäume niemals völlig entartet Durchsuchen Kein zusätzlicher Aufwand gegenüber Binärbaum

Collections in Java Standard-Klassen Collections Set List Interfaces Map Implementations Hash Table Resizable Array Balanced Tree HashSet TreeSet ArrayList HashMap TreeMap Linked List LinkedList Menge (Set) Zusammenfassung von Objekten sämtlich verschieden Liste (List) Zugriff auf Objekte über Index

Collections in Java Standard-Klassen Collections Set List Interfaces Map Implementations Hash Table Resizable Array Balanced Tree HashSet TreeSet ArrayList HashMap TreeMap Linked List LinkedList Verschiedene Implementierungen Hashen mit in der Regel O(1)-Komplexität Felder (Größe passt sich der Füllung an) Balancierter Rot-Schwarz-Baum verkettete Liste

Prioritätswarteschlangen Datenstruktur, welche Elemente mit kleinstem (oder größtem) Schlüssel auswählt Entfernt ändert Lösung durch sortierte Liste einfach Aufwand O(N log N) Einfügen Aufwand: O(N) Entfernen Aufwand: O(N) Aufwand zu groß (oder: es geht besser)

Anwendungen der Prioritätswarteschlangen zeitdiskrete Simulationssysteme nächste Element mit kleinster Aktivierungszeit Scheduling von Aufträgen mit Prioritäten numerische Berechnungen Ausdrücke mit größtem Fehler zuerst berechnen Algorithmen zum Durchsuchen von Graphen, Algorithmen zum Verdichten von Dateien.

Schnittstellen einer Prioritätswarteschlange Aufbauen einer Prioritätswarteschlange mit N Elementen, Einfügen eines Elements in eine Prioritätswarteschlange, Entfernen des kleinsten Elements aus einer Prioritätswarteschlange, Ersetzen des kleinsten Elements durch ein anderes Verändern der Priorität eines Elements, Löschen eines beliebigen Elements, Verschmelzen zweier Prioritätswarteschlangen

Heaps als Prioritätswarteschlangen Datenstruktur zum Sortieren von Daten auch zur Implementierung von Prioritätswarteschlangen geeignet Aufbauen einer Prioritätswarteschlange mit N Elementen Heap aufbauen in O(N) kleinstes Element steht an Platz 1 im Feld

Baue Prioritätswarteschlange mit N Elementen auf Heap aufbauen in O(N) kleinstes Element steht an Platz 1 im Feld Füge Element in Prioritätswarteschlange ein neues Element ans Ende des Heaps durch 'Sift'-Operation Heap-Eigenschaft wiederherstellen Aufwand O(log N)

Entferne kleinstes Element aus Prioritätswarteschlange kleinstes Element steht an 1. Stelle letztes Element an erste Stelle verbringen durch 'Sift'-Operation Heap-Eigenschaft wiederherstellen Aufwand O(log N) Ersetze kleinstes Element durch anderes Schlüssel des 1. Elements verändern Durch 'Sift'-Operation Heap-Eigenschaft

Verändere Priorität eines Elements Ändere Schlüssel eines Elements in Durch Sift-Up- oder Sift-Down-Operation Heap- Eigenschaft wiederherstellen Aufwand O(log N) Lösche beliebige Element durch letztes Element des Heaps ersetzn Durch Sift-Up- oder Sift-Down-Operation Heap- Eigenschaft wiederherstellen

Verschmelzung zweier Prioritätswarteschlangen zu einer größeren beide Heaps in ein Feld kopieren Heap-Eigenschaft wiederherstellen Aufwand O(N) Mit anderen Datenstrukturen schneller möglich

Skew Heaps als Prioritätswarteschlangen Skew Heap Nicht ausgeglichener Binärbaum beliebig erweiterbare Datenstruktur Merge Verschmelzen zweier Heaps Allgemein verwendbar Einfügen Merge(Knoten,SkewHeap) Löschen Merge(SkewHeap.Links, SkewHeap.Rechts)

Skew Heaps als Prioritätswarteschlangen Daten merge(daten links, Daten rechts){ if(links==null) return rechts; if(rechts==null) return links; if(links.key<rechts.key) { Daten swap = links.links; links.links = merge(links.rechts, rechts); links.rechts = swap; return links; } else { Daten swap = rechts.rechts;

Skew Heaps als Prioritätswarteschlangen static int size = 0; Daten SkewHeapEinfügen(int key, Daten wurzel) { size++; return merge( wurzel, new Daten(key)); } Daten SkewHeapLöschen(Daten wurzel) { size--; return merge( wurzel.links, wurzel.rechts);