Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.

Slides:



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

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Christian Scheideler SS 2009
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Claudio Moraga; Gisbert Dittrich
Das LCA – Problem in Suffixbäumen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Balancierte Bäume Effizienz der Wörterbuchoperationen auf Bäumen hängt direkt von der Baumhöhe ab. Baum mit n Knoten: Mindesthöhe: |_log2 n_|, maximale.
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Sortieren mit Binären Bäumen
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – Bruder-Bäume, B-Bäume) Prof. Th. Ottmann.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Algorithmen und Komplexität
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmiersprachen II Integration verschiedener Datenstrukturen
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Effiziente Algorithmen
Animationen zu Kap. 4.3: AVL-Bäume
Petra Mutzel: DAP2, Universität Dortmund SS Rotationen (1) b(5)=2 b(7)=0 b(7)=1 5 ist unbalanciert5, 7, 8 sind balanciert b(5)=0 Rotation nach.
Splay Trees Von Projdakov Benjamin.
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Christian Scheideler Institut für Informatik Universität Paderborn
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Binäre Bäume Louis Moret und Reto Huber, 5. 11
Graphen und Bäume.
Analyse der Laufzeit von Algorithmen
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Binärer Baum, Binärer Suchbaum I
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Gliederung der Vorlesung
Binärbäume.
Programmiersprachen II Fortsetzung Datenstrukturen Hashing Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 2 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Graph_Algorithmen Gewichtete Graphen - Minimum Spanning Tree und shortest path aus Implementierungssicht Prof. Dr. Reiner Güttler.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Einfache Bäume Übung 13 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
AVL-Bäume.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW

-2- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen 3.1 Balancierte Bäume Beobachtungen:  Offensichtlich hängt die genaue Laufzeit der Operationen (im Mittel und im schlechtesten Fall) davon ab, wie lang die Suchwege sind, d.h. wie viele Levels der Baum hat.  Offensichtlich ist es am besten, wenn der Baum balanciert ist, d.h. wenn alle Wege von der Wurzel (fast) gleich lang sind (genau gleich lang geht nur, wenn der Baum ?? Knoten enthält).  Höhenbalancierte Bäume (AVL-trees, red-black-trees)  Die Feststellung, dass dies optimal ist, macht eine nicht immer zutreffende "Vorannahme": dass nämlich alle Knoten mit gleicher Wahrscheinlichkeit zugegriffen werden.  Dies ist nicht immer der Fall. Sind die Zugriffswahrscheinlichkeiten (man kann z.B. auch Häufigkeiten nehmen) stark unterschiedlich, so kann ein nicht höhenbalancierter Baum evtl. „besser“ sein als ein höhenbalancierter.

-3- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen  Lösung: den Baum mehr im Sinne dieser Wahrscheinlichkeiten zu balancieren  weight-balanced trees und ähnliche.  Wie kann man in einem Baum, in dem jeder Knoten x neben seinem key auch noch eine Zugriffswahrscheinlichkeit w(x) hat, die mittlere Zugriffszeit bestimmen?  Lösung: Man summiert über alle Knoten x des Baums die Werte w(x)*(level(x) + 1). Voraussetzung: die w(x) sind wirklich Wahrscheinlichkeiten, also die Summe aller w(x) ergibt 1. Nimmt man Häufigkeiten, so ergibt sich die mittlere Zugriffszeit wie??  Weiteres Problem: Einfügeoperationen und Löschoperationen können die Balanciertheit stören, da ja der Einfügeplatz von der binäre-Suchbaum-Eigenschaft bestimmt wird. Es muss also evtl. nach einer solchen Operation wieder "ausbalanciert" werden (bzgl. des Blance-Kriteriums).

-4- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen AVL-trees Voraussetzung:  Zugriffswahrscheinlichkeiten gleich verteilt Grundidee:  Wir halten den binären Suchbaum zu jedem Zeitpunkt so balanciert wie möglich, indem wir ihn bei jedem Einfügen „Rebalancieren“, wenn nötig. Problem:  Das Rebalancieren kann manchmal O(n) Operationen benötigen (siehe Tafelbeispiel) Gesucht: ein Baum, bei dem sowohl find() als auch (insert() in Zeit O(log n) laufen.

-5- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Lösung: AVL-trees, benannt nach den russ. Mathematikern Adelson-Velski und Landis  AVL-trees sind fast, aber nicht vollständig balanciert.  Find() und insert() benötigen nur O(log n) Operationen. Definition:  Sei die Höhe (height) eines Baums das grösste im Baum vorkommende Niveau eines Knotens (die Länge des längsten Pfades von der Wurzel zu einem Blatt des Baums, -1 für den „leeren“ Baum).  Ein Knoten x hat die AVL-Eigenschaft, wenn die Höhen des linken und rechten Unterbaums gleich sind, oder um höchstens 1 differieren.  Ein binärer Suchbaum T ist ein AVL-tree, wenn alle Knoten x des Baums T die AVL-Eigenschaft haben.

-6- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen AVL-trees?

-7- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Was fehlt:  Welche Rebalancierungsmechanismen stehen zur Verfügung?  Wann setze ich welche ein?  Nachweis, dass alle evtl. notwendigen Rebalancierungsoperationen nach einem insert() in O(log n) möglich sind. Ideen (unter der Voraussetzung, dass jede Rebalancierungsoperation O(1) Aufwand verursacht) ?

-8- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Rebalancierungsmechanismen:  Einfache Rechtsrotation  Einfache Linksrotation  Doppelrotation rechts  Doppelrotation links Wir werden sehen, dass wir die Doppelrotationen jeweils auch als eine Folge von zwei einfachen Rotationen definieren können. Zentrale Forderung:  Natürlich müssen alle Rebalancierungsmechanismen die „binäre-Suchbaum-Eigenschaft“ erhalten!!

-9- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Einfache Rechtsrotation: B A T1T1 T2T2 T3T3 AB T1T1 T2T2 T3T3

-10- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Einfache Linksrotation: B A T1T1 T2T2 T3T3 A B T1T1 T2T2 T3T3

-11- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Doppelrotation rechts: C A T1T1 T2T2 T4T4 T3T3 B B C T3T3 T4T4 A T1T1 T2T2

-12- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Doppelrotation links: AC T1T1 T2T2 T4T4 T3T3 BB C T3T3 T4T4 A T1T1 T2T2

-13- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 2: Folge Datenstrukturen Fragen:  Aus welchen „Einzelrotationen“ setzen sich die Doppelrotationen zusammen?  Wieso kann ein durch ein insert() aus der Balance gebrachter AVL-tree in O(log n) wieder rebalanciert werden (und dadurch das ganze insert() in O(log n) laufen) ? Aufgabe (Selbststudium): Geben sie in Pseudocode alle evtl. auftretenden Fälle von „Debalancierungen durch insert()“ mit den jeweils zugehörigen Rebalancierungen an.