Zeichnen von Bäumen Seminar Graphenzeichnen SS03 von Lina Wolf.

Slides:



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

DNA-Array oder DNA-Chip
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Automatisches Zeichnen Ausgabe: — Besprechung:
Claudio Moraga; Gisbert Dittrich
Das LCA – Problem in Suffixbäumen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
Durchlaufen eines Binärbaumes
Kapitel 7. Sortier-Algorithmen
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Das Maßproblem von Klee
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix –Tree –Konstruktion Ukkonen Algorithmus.
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.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Geometrisches Divide and Conquer
Seminar parallele Programmierung SS 2003
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
R-tree, R*-tree und R+-tree
Martin Böhmer/Dennis Treder/Marina Schwacke Übungen zu Automatisches Zeichnen von Graphen Ausgabe: Besprechung: Gruppe 2 - Übungsblatt.
PG 478 – Open Graph Drawing Framework Thema: Compounds & Force-Directed Francois Bertault & Mirka Miller – An Algorithm for Drawing Compound Graphs [1999]
Algorithmen und Komplexität
Theorie und Praxis geometrischer Algorithmen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rekursion Richard Göbel.
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
Konstruktion der Voronoi-Diagramme II
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung
Jamshid Azizi: Folie Isomorphietest Jamshid Azizi
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Graphen und Bäume.
Algorithmen und Datenstrukturen Übungsmodul 8
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
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.
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Binärer Baum, Binärer Suchbaum I
Algorithmen und Datenstrukturen
Binärbäume.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
AVL-Bäume.
Laufzeitverhalten beim Sortieren
Suchbäume.
Punkt-in-Landkarte II
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Zeichnen von Bäumen Seminar Graphenzeichnen SS03 von Lina Wolf

Zeichnen von Bäumen 1. Was ist ein Baum? 2. Generelle Wünsche 3. Ästhetische Regeln 4. Geschichtete Zeichnungen 5. Andere Algorithmen

Was ist ein Baum? Baum wie üblich definiert m-ärer Baum: max m Kinder Kinder ev. geordnet Kind von Binärbaum links oder rechts freier Baum:ohne Wurzel

Generelle Wünsche Planar Gitter gerade Linien (streng) aufsteigend erhaltene Ordnung aufgeräumt

Ästhetische Regeln nach Tilford und Reingold 1. Knoten gleicher Höhe auf gerader Linie, diese parallel 2. Linkes Kind links von Mutter und re 3. Mutter zentriert über Kindern 4. Isomorphismus, gleiche Teilbäume gleich

1. Ästhetische Regel Knoten gleicher Höhe auf gerade Linie, diese parallel geschichtete Zeichnungen: Knoten.y = Knoten.Tiefe Algorithmen nur für X-Koordinaten

2. Ästhetische Regel Linkes Kind links von Mutter und re nur in geordneten Binärbäumen (m>2)-ären Bäumen: 1 Kind direkt unter Mutter

3. Ästhetische Regel Mutter zentriert über Kindern

4. Ästhetische Regel Isomorphismus, gleiche Teilbäume gleich

Geschichtete Zeichnungen Knoten.y = Knoten.Tiefe firstWalk Verschiebung Teilbaum nur seiner Wurzel gespeichert. secondWalk:Verschiebungen aufsummiert

secondWalk secondWalk(knoten, level, sum){ knoten.x = knoten.x + sum; knoten.y = level; für(alleKinder){ secondWalk(kind, level+1, sum + knoten.verschiebung); }

Geschichtete Zeichnungen Algorithmus WS verbesserter WS Algorithmus TR Algorithmus von Walker verbesserter Walker

Algorithmus WS Wetherell and Shannon firstWalk(knoten, level) für (alleKnoten(post-Order)){ wenn(Knoten hat n Kinder){ n == 0: Knoten.x nächsteX(level); n == 1: Knoten.x r/l Mutter n == 2: zentriere Knoten ü. Kinder } wenn (Knoten.x < nächsteX(level)){ Knoten.x nächsteX(level) Kinder(Teilbäume) schiften }}

Algorithmus WS Wetherell und Shannon Achtung: Ästhetische Regel 4 (Isomorphismus) wird nicht beachtet. Platz verschenkt

veränderter WS Wetherell und Shanon präsentieren veränderten Algorithmus (l) Mutter nicht mehr über Kindern zentriert.

Algorithmus TR Tilford und Reingold Alle vier ästhetischen Regeln beachtet

Algorithmus TR Tilford und Reingold Laufzeit O(n) beide Teilbäume unabhängig fertig, nur noch verschieben Wurzeln nebeneinander plaziert auseinander schieben bis kein Knoten mehr berührt

Algorithmus TR Tilford und Reingold Problem: wie Rändern folgen? Der linken Kante zu folgen reicht nicht aus: Idee: nächster Knoten Kind von diesem oder dieser Blatt. Bei Blatt Pointer auf nächsten Knoten

Algorithmus TR Für m-äre Bäume Links/rechts klebendes Problem

Algorithmus TR Für m-äre Bäume, Spiegelung

Algorithmus von Walker Verbesserung TR Unterbäume gut verteilt Laufzeit immer noch O(n) laut Walker(!!!)

Algorithmus Walker

firstWalk Alg. Walker void firstWalk(knoten, level){ knoten.x = 0; wenn(knoten.hatLSchw()){ knoten.x = knoten.lSchw.x + DIS; } wenn(!knoten.istBlatt()){ für(alleKinder){ firstWalk(kind, level + 1); }

firstWalk Alg. Walker m =(lKind.x + rKind.x)/2; wenn(knoten.hatLSchw()){ knoten.verschiebung = knoten.x - m; apportion(knoten, level); } sonst { // knoten linkestes Kind knoten.x = m; //zentriert ü. Kindern }

Apportion Alg. Walker Apportion(..) verhindert links/ rechts kleben. zwischen linker und rechter Teilbaum Bäume gleichmäßig verteilt Wird für jeden Knoten aufgerufen Aber Laufzeit Apportion nicht konstant => Laufzeit Walker O(n 2/3 )

Apportion Alg. Walker void apportion(knoten, level){ eins = knoten.erstesKind(); nachbar = linkerNachbar(eins); tiefe = 1; solange(eins != ø && nachbar != ø){ rPosi = eins.posi(tiefe); lPosi = nachbar.posi(tiefe); vNachbar = nachbar.Vorfahr(tiefe); abstand = rPosi + TB_TRENN - lPosi; wenn(abstand > 0){ nrSchw = knoten.nrLSchw(vNachbar);

Apportion Alg. Walker wenn(knoten.hatSchw(vNachbar)){ teil = abstand / nrSchw; für(alle Schwestern bis vNachbar){ schwester.x += abstand; schwester.verschiebung += abstand abstand = abstand-teil; }}} wenn(eins.istBlatt()){ eins = knoten.holLinkestes(knoten, 0, tiefe); } sonst { eins = erstes.erstesKind(); } nachbar = linkerNachbar(eins); //fehlt bei //Walker, macht sonst keinen Sinn }}

Apportion knoten erstes nachbar vNachbar Tiefe = 1 abstand > 0

Apportion knoten vNachbar erstesnachbar Tiefe = 2 abstand > 0

Apportion knoten vNachbar erstesnachbar Tiefe = 3 abstand = 0

Apportion knoten vNachbar erstesnachbar Tiefe = 4 abstand = 0

Apportion knoten vNachbar erstesnachbar Tiefe = 5 Ø Fertig!

Verbesserter Walker O(n) Buchheim, Jünger und Leipert weisen nach, dass Walker in worst- case (n 2/3 ) schlagen anderen Algorithmus vor, verändertes apportion

Verändertes Apportion Rändern folgen: wie R und T (Pointer) Vorfahren finden: rechter bekannt, linker nach Schieber und Vishkin O(1) Teilbäume zählen: rechter - linker +1 alle Teilbäume in weiterer Traversierung verschieben => Apportion konstant

Laufzeit linearer Walker

Andere Algorithmen Radiale Zeichnungen HV-Zeichnungen rechtsschwere HV- Zeichnungen

Radiale Zeichnungen Häufig für freie Bäume Algorithmen ähnlich geschichtete

Radiale Zeichnungen Teilbäume beschränkt auf konvexe Ausschnitte sonst nicht planar Tangente durch Knoten Teilbaum zwischen a und b

HV-Zeichnungen

HV = horizontal-vertical Nur für Binärbaume, unterstützt Gitterzeichnung Ordnung kann erhalten bleiben die die Teilbäume umgebenen Rechtecke schneiden sich nicht

HV-Algorithmus Divide: Rekursiv linken und rechten Teilbaum konstruieren Conquer: horizontale (a) oder vertikale (b) Kombination

Ordnung nicht erhalten Höhe max log(n) Conquer: mit horizontaler Kombination größerer Teilbaum rechts von anderem rechtsschwere HV- Zeichnungen