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

Slides:



Advertisements
Ähnliche Präsentationen
Christian Scheideler SS 2009
Advertisements

Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
GIN2 SS05 Prof. Dr. W. Conen, Nullsummen-Spiele - Min-Max-Suche - Alpha-Beta-Pruning (späterer Termin)
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Claudio Moraga; Gisbert Dittrich
Das LCA – Problem in Suffixbäumen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Suche in Texten (Stringsuche )
3. Kapitel: Komplexität und Komplexitätsklassen
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. 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 (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.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Kapitel 5 Stetigkeit.
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
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Programmiersprachen II Integration verschiedener Datenstrukturen
Effiziente Algorithmen
Effiziente Algorithmen
Splay Trees Von Projdakov Benjamin.
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation 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
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.
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
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.
Geoinformationssysteme
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 Fortsetzung Datenstrukturen Balancierte Bäume 1 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.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

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

-2- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen 3.2 gewichtsbalancierte Bäume Motivation: wenn die einzelnen Knoten eines Baums mit stark unterschiedlicher Häufigkeit (Wahrscheinlichkeit) zugegriffen werden, verlieren die höhenbalancierten Bäume ihre Effizienz.  Im nachfolgenden Beispiel sind Häufigkeiten angegeben.  Wie wird die mittlere Suchzeit berechnet unter der Voraussetzung, dass nur die Knotenbesuche gezählt werden? Dazu Beispiel 1.

-3- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Mittlere Suchzeit: (100*3+1*2+100*3+1*1+100*3+1*2+100*3)/403= 1205/403=2, a 1 b c 1 d e 1 f g

-4- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Alternative: Mittlere Suchzeit: (100*2+1*3+100*1+1*3+100*2+1*4+100*3)/403= 810/403=2, a 1 b c 1 d e 1 f g

-5- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Beispiel 2 Mittlere Suchzeit: (100*3+1*2+1*3+1*1+1*3+1*2+1*3)/106= 312/106=2, a 1 b 1 c 1 d 1 e 1 f 1 g

-6- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Alternative: Mittlere Suchzeit: (100*1+1*2+1*3+1*4+1*5+1*6+1*7)/106= 127/106=1, a 1 b 1 c 1 d 1 e 1 f 1 g

-7- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen

-8- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Lösung: weight balanced trees, gewichtsbalancierte Bäume Theoretisch: es ist möglich, für eine gegebene Folge von n Datenelementen mit gegebenem „weight“ (z.B. Häufigkeit, Wahrscheinlichkeit) einen Baum zu konstruieren, der optimal bzgl. der mittleren Suchzeit ist (Ergebnis von D. KNUTH 1971). Problem: Konstruktion sehr platz- und zeitaufwändig (O(n 2 )) Deshalb: Suche nach „schnellen“ Algorithmen, die „sehr gute“, wenn auch nicht optimale Bäume erzeugen. Ergebnis: Es gibt mehrere Varianten davon.

-9- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen für alle gilt:  Sie laufen in O(n) (n Anzahl der Knoten).  Sie produzieren Bäume, deren mittlere Suchzeit „sehr gut“ ist.  Sie produzieren Bäume, die auch bzgl. des worst- case-Verhaltens (was heisst das?) sehr gut sind.  Keine der Varianten ist in beiderlei Hinsicht die beste.  Die Unterschiede sind sehr gering (gleich bzgl. der O()-Schreibweise, d.h.ohnehin nur bzgl. der Konstanten und auch da sehr gering).

-10- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen  Alle diese Aussagen sind durch vielfältige wissenschaftliche Untersuchungen bewiesen.  Wir behandeln deshalb nur die Algorithmen selbst, untersuchen aber nicht die Komplexität Im folgenden: Sei G(x) für einen Baum T mit Wurzel x die Summe der Gewichte aller seiner Knoten, lt(x) sei die Gesamtheit der Knoten des linken Unterbaums, rt(x) analog für rechts (das brauchen wir wegen des top-down-Vorgehens!) Algorithmus I (weight balanced): Wähle die Wurzel x so, dass sich die Gewichte des linken und rechten Unterbaums so wenig wie möglich unterscheiden, also „minimiere abs(G(lt(x)-G(rt(x))“. Verfahre ebenso auf den Unterbäumen.

-11- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Der Algorithmus liefert einigermassen gute Ergebnisse, hat aber ein spezielles Problem. Welches? „Schlechtes“ Beispiel? Algorithmus II (min-max): Wähle die Wurzel so, dass das Maximum der Gewichte der beiden Unterbäume minimal ist, d.h. minimiere max(G(lt(x)),G(rt(x))). Verfahre rekursiv auf den Unterbäumen. Beide Regeln wählen Wurzeln, die in der Nähe der „Mitte“ der Gewichtsverteilung liegen. Daher der Grundgedanke, dies formal als Auswahlkriterium für die Wurzel zu wählen mit rekursiver Anwendung auf die Unterbäume.

-12- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Algorithmus III (Bisection): Dazu muss definiert werden: G‘(lt(x)) = G(lt(x)) + ½ G(x).) Sie y Vorgänger von x bzgl. des Ordnungskriteriums. Wähle die Wurzel so, dass G‘(lt(y)) =½Gesamtgewicht Verfahre rekursiv auf den Unterbäumen.

-13- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Beispiele: Beachte : allen Anwendungen liegt zu Grunde, dass natürlich immer die „binäre-Suchbaum-Eigenschaft“ erhalten bleiben muss. 1.Beispiel: Die gegebene Folge von Beispiel 1. Also a(100),b(1),c(100),d(1),e(100),f(1),g(100) a) Anwendung von Algorithmus 1: ?? b) Anwendung von min-max: Wir listen für alle Knoten x jeweils max(G(lt(x)), G(rt(x))): a: G(lt(x))=0, G(rt(x))=303, also 303 b: max(100, 302), also 302 c: max(101,202), also 202

-14- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen d: max(201,201), also 201 e: max(202,101), also 202 f: max(302,100), also 302 g: max(303,0), also 303 Folge: d wird Wurzel. Linker Unterbaum: a: max(0,101), also 101 b: max(100,100), also 100 c:max(101,0) Folge: b wird Wurzel Wir sehen, wohin das führt.

-15- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen c) Anwendung von bisection. Gesamtgewicht= 403, ½ Gesamtgewicht also 201,5 Wir sehen sofort, dass a und b keine Chance haben, alsoweiter bei c. c: G‘(b)=100,5, G‘( c)= 151, also c nicht Wurzel d: G‘( c)= 151, G‘(d)=201,5 e: G‘(d)= 201,5, G‘(e)=251 Folge: d oder e können Wurzel werden. Somit scheint bisection am besten (sofern man das Unentschieden“ richtig auflöst). Aber: die Folge ist „akademisch“.

-16- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen Ändert man nur ein klein wenig, so verhalten sich die Algorithmen viel „vernünftiger“. 2. Beispiel: die Folge a(100),b(2),c(100),d(1),e(100),f(1),g(99) liefert als Ergebnis den „guten“ Baum unserer Alternative. 3. Beispiel: a(10),b(8),c(1),d(2),e(6),f(40),g(2), also ohne einen „dicken“ Knoten in der Nähe der Mitte Weight-balanced:? Min-max:? Bisection:?

-17- Prof. Dr. R. Güttler Programmiersprachen 2 Kapitel 3: Folge Datenstrukturen 4. Beispiel: 15 Angaben aus der Hörerschaft mit Anwendung an der Tafel. Dies wird deutlicher, wenn die Beispiele „normaler“ werden, allerdings immer noch mit deutlich unterschiedlichen Häufigkeiten. Empirische Anwendung (z.B. auf das Publikum einer Hochschulbibliothek mit stark unterschiedlich häufig vorkommenden Namen) zeigte  Natürlich: die theoretischen Ergebnisse zeigen sich auch in der Praxis  Min-max ist empirisch am besten.