1 Visualisierung von Graphen Hierarchische Zeichnungen 6. Vorlesung Sommersemester 2015 (basierend auf Folien von Marcus Krug, KIT) Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 2 Beispiel E-Mail-Graph zwischen Einrichtungen der Fak. für Informatik, KIT Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 3 Hierarchisches Zeichnen Problemstellung Gegeben: gerichteter Graph D = (V , A) Gesucht: Zeichnung von D , die Hierarchie möglichst gut wiedergibt Desiderata Zuordnung der Knoten auf (wenige) horizontale Linien möglichst viele Kanten aufwärtsgerichtet möglichst wenige Kantenkreuzungen Kanten möglichst vertikal, geradlinig und kurz Knoten gleichmäßig verteilt Kriterien widersprechen sich! Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 4 Klassische Vorgehensweise Philipp Kindermann, Alexander Wolff · [Sugiyama, Tagawa, Toda ’81] Lehrstuhl für Informatik I · Universität Würzburg 5-3 Schritt 1: Aufbrechen gerichteter Kreise Vorgehen, anschaulich Finde minimale Menge A? von Kanten, die nicht aufwärts gezeichnet werden. Entferne Kanten in A? und füge dazu Inverse ein. Problem Minimum Feedback Arc Set (FAS): Gegeben: gerichteter Graph D = (V , A) Gesucht: minimale Menge A? ⊆ A, so dass D − A? azykl. . . . ist NP-schwer :-( Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 5-4 Schritt 1: Aufbrechen gerichteter Kreise Vorgehen, anschaulich Finde minimale Menge A? von Kanten, die nicht aufwärts gezeichnet werden. Entferne Kanten in A? und füge dazu Inverse ein. Problem Minimum Feedback Arc Set (FAS): Gegeben: gerichteter Graph D = (V , A) D − A? + A?r Gesucht: minimale Menge A? ⊆ A, so dass D − A? azykl. . . . ist NP-schwer :-( Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 6 Greedy-Heuristik für FAS GreedyMakeAcyclic(Digraph D = (V , A)) A0 ← ∅ foreach v ∈ V do if outdeg(v ) > indeg(v ) then A0 ← A0 ∪ out(v )= {v w | v w ∈ A} else A0 ← A0 ∪ in(v ) = {uv | uv ∈ A} A ← A \ (out(v ) ∪ in(v )) return (V , A0 ) Laufzeit: O (V + A) Qualitätsgarantie: |A0 | ≥ |A|/2 Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 7 Verbesserte Greedy-Heuristik für FAS Betrachte in foreach-Schleife immer Quellen und Senken, falls vorhanden, und sonst den Knoten v mit |outdeg(v ) − indeg(v )| maximal. [ ] Ersetze Prioritätsschlange durch Feld[0..n−1] Laufzeit: O (V + A) von Knotenlisten; führe Maximum mit Qualitätsgarantie: |A0 | ≥ |A|/2 + |V |/6 Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 8 Schritt 2: Lagenzuordnung Problemstellung Gegeben: azyklischer, gerichteter Graph D = (V , A) Gesucht: Abbildung y : V → {1, . . . , |V |}, so dass für alle uv ∈ A gilt y (u ) < y (v ). Zielfunktionen: minimiere. . . Anzahl der Lagen, d.h. |y (V )| Länge der längsten Kante, d.h. maxuv ∈A y (v ) − y (u ) Gesamtlänge der Kanten (d.h. Anzahl der Dummy-Knoten) Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 9 Algorithmus zur Minimierung der Lagenanzahl für jede Quelle q setze y (q ) := 1 für jede Nichtquelle v setze y (v ) := max y (u ) | uv ∈ A + 1 Beob. y (v ) ist. . . Länge eines längsten Wegs von einer Quelle zu v plus 1. . . . also optimal bezüglich der Lagenanzahl! Frage: Berechnung in Linearzeit? Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 10 Linearzeit-Implementierung ComputeLayering(AcyclicDigraph D = (V , A)) y = new int[1..|V |] // alle == 0 foreach Quelle q ∈ V do für jede Quelle q setze y (q) := 1 y (q ) ← 1 foreach Nichtquelle v ∈ V do für jede Nichtquelle v setze y(v ) := ComputeYRec(D , v , y ) max y (u) | uv ∈ A + 1 return y ComputeYRec(AcyclicDigraph D = (V , A), Vertex v , int[ ] y ) if y (v ) == 0 then y (v ) ← max ComputeYRec(D , u , y ) | uv ∈ A + 1 return y (v ) Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 11 Unser Beispiel Alles optimal – oder? Zeichnungen können seeehr breit werden :-( Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 12 Ziel: schmalere Lagenzuordnung Problem: Lagenzuordnung bei vorgegebener Breite Gegeben: azyklischer, ger. Graph D = (V , A), Breite B > 0 Gesucht: Partition der Knotenmenge in minimale Anzahl von Lagen, so dass jeder Lage höchstens B Elemente enthält. ebenfalls! Problem: Precedence-Constrained Multi-Processor Scheduling Gegeben: n Aufträge mit Bearbeitungsdauer 1, B ident. Maschinen und partielle Ordnung < auf den Aufträgen Gesucht: Ablaufplan, der < berücksichtigt und minimale Gesamt-Bearbeitungsdauer hat. NP-schwer, (2 − 2/B )-Approx., keine (4/3 − ε)-Approx. Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 13 Ein Approximationsalgorithmus für PCMPS Eingabe: Präzedenzgraph (schon in Lagen eingeteilt, aber beliebig breit) 8 2 E 6 9 C 3 5 F 1 7 A D 4 G B Anzahl der Maschinen sei B = 2. Ausgabe: Ablaufplan M1 1 2 4 5 6 8 A C E G M2 – 3 – – 7 9 B D F – t 1 2 3 4 5 6 7 8 9 10 Frage: Güte/Approximationsfaktor? Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 14 Algorithmus Aufträge sind in Liste L gespeichert (in beliebiger Reihenfolge, z.B. topologisch sortiert). Versuche zu jedem Zeitpunkt t = 1, 2, . . . so viele Aufträge zu bearbeiten wie momentan möglich. Ein Auftrag in L ist verfügbar, falls seine Vorgänger komplett abgearbeitet sind. Solange es zum aktuellen Zeitpunkt noch freie Maschinen und verfügbare Aufträge gibt, lösche den ersten verfügbaren Auftrag aus L und ordne ihn einer freien Maschine zu. Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 15 Analyse für B = 2 Präzedenzgraph G< 1 2 3 4 5 6 7 Ablaufplan 8 9 A B C D E F G M1 1 2 4 5 6 8 A C E G M2 – 3 – – 7 9 B D F – t 1 2 3 4 5 6 7 8 9 10 Die Kunst der unteren Schranke“ ” OPT ≥ dn/2e und OPT ≥ ` := Anz. Lagen von G< Ziel: Finde Algorithmus, dessen Güte sich mithilfe der unteren Schranke(n) messen lässt. Allg. ≤ (2 − 1/B ) · OPT n+` Beh. ALG ≤ ≈ dn/2e + `/2 ≤ 3/2 · OPT 2 Injektion der Pausen ( ) des Ablaufplans (außer der letzten) in die Lagen von G< Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 16 Schritt 3: Kreuzungsreduktion Problemstellung Gegeben: Graph G , Lagenzuordnung y : V → {1, . . . , |V |} Gesucht: (Um-)Ordnung der Knoten innerhalb der Lagen, so dass die Anzahl der Kreuzungen minimiert wird. Problem ist NP-schwer, sogar für 2 Lagen [Garey & Johnson ’83] kaum Ansätze, die echt über mehrere Layer optimieren Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 17 Iterative Kreuzungsreduktion – Idee Füge Dummy-Knoten für Kanten der (vert.) Länge > 1 ein. Betrachte nacheinander jeweils benachbarte Lagen (L1 , L2 ), (L2 , L3 ), . . . . Minimiere Kreuzungen durch Permutieren von Li +1 bei gegebener Ordnung von Li . Beob. Kreuzungszahl hängt nur von der Permutation der Knoten auf den benachbarten Lagen ab. Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 18 Iterative Kreuzungsreduktion – Algorithmus (1) wähle zufällige Permutation für unterste Lage L1 (2) betrachte iterativ jeweils benachbarte Lagen Li und Li +1 (3) minimiere Anzahl der Kreuzungen durch Umordnen der Knoten in Li +1 (Li fest) Einseitige Kreuzungsminimierung (4) wiederhole Schritte (2)–(3) in umgekehrter Richtung ausgehend von oberster Lage Lh (5) wiederhole Schritte (2)–(4) bis keine Verbesserung mehr erzielt wird (6) wiederhole Schritte (1)–(5) mit unterschiedlichen Startpermutationen Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 19 Einseitige Kreuzungsminimierung Problemstellung Gegeben: bipartiter Graph G = (L1 ∪ L2 , E ), Permutation π1 von L1 Gesucht: Permutation π2 von L2 , die die Anzahl der sich kreuzenden Kantenpaare minimiert Einseitige Kreuzungsminimierung ist NP-schwer. Abb. aus [Kaufmann und Wagner: Drawing Graphs] (c) Springer-Verlag [Eades & Whitesides ’94] Algorithmen Schwerpunktheuristik Medianheuristik Greedy-Switch ILP ... Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 20 Schwerpunktheuristik [Sugiyama et al. ’81] Intuition: wenige Kreuzungen, wenn Knoten nah bei Nachbarn Schwerpunkt von u ist Durchschnitt der x -Koordinaten der Nachbarn von u in Lage L1 [x1 ≡ π1 ] Schlechtes Bsp.? u v X 1 x2 (u ) := bary(u ) := x1 (v ) deg(u ) |{z} v ∈N (u ) | {z k2 − 1 } k −1 bei gleichen Werten werden Knoten um kleines δ versetzt lineare Laufzeit relativ gute Ergebnisse optimal, falls √ keine Kreuzung benötigt wird Faktor-O ( n)-Approximation Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I Übung! · Universität Würzburg 21-3 Medianheuristik [Eades & Wormald ’94] {v1 , . . . , vk } := N (u ) mit π1 (v1 ) < π1 (v2 ) < · · · < π1 (vk ) ( 0 falls N (u ) = ∅ x2 (u ) := med(u ) := π1 (vdk /2e ) sonst. verschiebe Knoten u und v geeignet um δ, falls x2 (u ) = x2 (v ) lineare Laufzeit relativ gute Ergebnisse optimal, falls keine Kreuzung benötigt wird Faktor-3-Approximation Beweis siehe [DETT] Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 21-6 Medianheuristik [Eades & Wormald ’94] {v1 , . . . , vk } := N (u ) mit π1 (v1 ) < π1 (v2 ) < · · · < π1 (vk ) ( 0 falls N (u ) = ∅ x2 (u ) := med(u ) := π1 (vdk /2e ) sonst. verschiebe Knoten u und v geeignet um δ, falls x2 (u ) = x2 (v ) Schlechtes Beispiel? lineare Laufzeit u v relativ gute Ergebnisse optimal, falls keine Kreuzung benötigt wird |{z} | {z } | {z } |{z} Faktor-3-Approximation k k k +1 k +1 Beweis siehe [DETT] 2k(k + 1) + k 2 vs. (k + 1)2 # Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 22 Greedy-Switch-Heuristik vertausche iterativ jeweils benachbarte Knoten, falls dadurch weniger Kreuzungen induziert werden Laufzeit O (L2 ) pro Iteration; maximal |L2 | Iterationen als Post-Processing für andere Heuristiken geeignet Schlechtes Beispiel? L2 L1 | {z k } ≈ k 2 /4 Philipp Kindermann, Alexander Wolff ≈ 2k · Lehrstuhl für Informatik I · Universität Würzburg 23 Ganzzahliges lineares Programm [Jünger & Mutzel, ’97] Konstante cij := Anzahl von Kreuzungen zwischen Kanten, die zu vi oder vj inzident sind, falls π2 (vi ) < π2 (vj ) Variable für 1 ≤ i < j ≤ n2 := |L2 | 1 falls π2 (vi ) < π2 (vj ) xij = 0 sonst vi vj Anzahl Kreuzungen für feste Permutation π2 cross(π2 ) = nX 2 −1 n2 X (cij − cji )xij + i =1 j =i +1 nX 2 −1 · Lehrstuhl für Informatik I cji i =1 j =i +1 {z | Philipp Kindermann, Alexander Wolff n2 X konstant · } Universität Würzburg 24 Fortsetzung ILP Minimiere Anzahl der Kreuzungen: minimiere nX 2 −1 n2 X (cij − cji )xij i =1 j =i +1 Nebenbedingungen: 0 ≤ xij + xjk − xik ≤ 1 für 1 ≤ i < j < k ≤ n2 d.h. wenn xij = 1 und xjk = 1, dann auch xik = 1 0 0 0 (Transitivität) Lösung mit Branch-and-Cut bei wenigen Knoten pro Lage relativ schnell. Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 25 Unser Beispiel – iterativ Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 26 Schritt 4: Knotenpositionierung Ziel: geringe Abweichung der Kanten-Pfade von Geraden Exakt: Quadratisches Programm (QP) Heuristik: iterativ Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 27 Quadratisches Programm Betrachte Kanten-Pfad pe = (v1 , . . . , vk ) zu Kante e = v1 vk mit Dummy-Knoten v2 , . . . , vk −1 x -Koordinate von vi bei gerader Kante v1 vk (bei Einheitslagenabstand): vi i −1 x (vi ) = x (v1 ) + x (vk ) − x (v1 ) k −1 definiere Abweichung von gerader Kante dev(pe ) := k −1 X vk v1 2 x (vi ) − x (vi ) i =2 Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 28 Fortsetzung (QP) Zielfunktion: min X dev(pe ) e ∈E Nebenbedingungen: für alle Knoten v und alle Knoten w im gleichen Layer mit w rechts von v x (w ) − x (v ) ≥ ρ(w , v ) ρ(w , v ) ist minimaler horiz. Abst. zw. Knoten w und v Problem: QP und potentiell exponentielle Breite Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 29 Iterative Heuristik berechne Initial-Layout führe die folgenden Schritte so lange aus, bis Abbruchbedingung erfüllt ist: (1) positioniere Knoten, (2) ziehe Kanten gerade, (3) kompaktifiziere Layout in x -Richtung. Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 30 Unser Beispiel Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 31 Schritt 5: Kanten zeichnen Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 32 Schritt 5 – anschaulich Alle Abb. aus [Kaufmann und Wagner: Drawing Graphs] Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg 33 Unser Beispiel Philipp Kindermann, Alexander Wolff · Lehrstuhl für Informatik I · Universität Würzburg