72
Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählen VO Algorithm Engineering Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 2. VO 5. April 2007

Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kap. 2: HierarchischesGraphenzeichnen

2.1. Kreuzungszählen

VO Algorithm Engineering

Professor Dr. Petra Mutzel

Lehrstuhl für Algorithm Engineering, LS11

2. VO 5. April 2007

Page 2: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Literatur für diese VO

• W. Barth, M. Jünger und P. Mutzel: Simple and Efficient 2-Layer Cross Counting, Journal of Graph Algorithms and Applications(JGAA), 2003

Page 3: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Überblick• Einführung

– Hierarchisches Graphzeichnen– Kreuzungszählen

• Algorithmen– verschiedene klassische Algorithmen– BJM-Algorithmus

• Experimente

Page 4: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Allgemeines Problem

Gegeben: Menge S von GeradensegmentenGesucht: Anzahl der Schnittpunkte

Page 5: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Allgemeiner Fall

Ausgeben der Kreuzungen: Chazelle & Edelsbrunner [1992] O(|E| log |E| + |C|)

Nur Zählen:Chazelle [1985] O(|E|1.695)

Page 6: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Spezielles Problem

Endpunkte der Segmenteliegen auf parallelen Geraden

Page 7: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

...eigentlich: bipartiter Graph

1

0 2 51 3 4

0 2 3 4

Anwendung: Automatisiertes Zeichnen von Graphen

Page 8: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

taz

Page 9: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham
Page 10: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Sugiyama Algorithmus

Page 11: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Festlegung der Schichten

Page 12: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Festlegung der Schichten

Page 13: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Einfügung künstlicher Knoten

Page 14: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 15: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 16: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 17: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 18: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 19: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 20: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Kreuzungsreduktion

Page 21: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Begradigung der Kanten

Page 22: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

26%

26%26%

100%

26,3%

95,2%

91,1%26%22,5% 12% 26% 28%

25%

26,25%

100%

23%

21,3%15,7%

VEAGVereinigte

Elektrizitätswerke

EnBWEnergie

Baden-Württ. AG

VEW AG

RWEEnergie AG

VEWEnergie AG

EnergieVerwaltungs-GmbH

RWEAG

VIAG AG

ContigasAG Bewag AG

VEBAAG

PreussenElektra AG

SydkraftAB

HEWHamburgische

Elektr.-Werke AG

Bayernwerk AG

EBHGmbH

Southern EnergyHolding Bet.-GmbH

AG

100%

1%13.5%

15.4%

30%

60%

20%

Page 23: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Datenbank einer Versicherung

Page 24: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Zählen der Kreuzungen

Vor und nach jeder Heuristik-Anwendung:Zählen von Kreuzungen

1

0 2 51 3 4

0 2 3 4

Page 25: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Zählen der Kreuzungen

g h i k l

a b c d e f

Naiver Algorithmus

Laufzeit: O(|E|2)

Für alle Kantenpaare e,f ∈E:Falls π(eN) < π(fN) UND π(eS) > π(fS)Dann: Zähle Kreuzung

Permutation π(N):

Permutation π(S):

e

f

Page 26: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

0 2 51 3 4

0 2 3 4

Zählen der Kreuzungen

Sweepline Algorithmus

Page 27: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

0 2 51 3 4

0 2 3 4

4

Zählen der Kreuzungen

Page 28: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

0 2 51 3 4

0 2 3 4

12

Zählen der Kreuzungen

Page 29: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

0 2 51 3 4

0 2 3 4

12

Zählen der Kreuzungen

Page 30: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Sweepline Algorithmus

Bewege Sweepline von links nach rechts:Teilung in

• bereits beendete Kanten (links), • noch nicht erreichte Kanten (rechts), und• aktive Kanten (1 Endknoten erreicht)

Page 31: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Sweepline von Sander 1995

Zwei geordnete Listen UL und LL:Endknoten der aktiven Kanten wird in der

• UL-Liste in der oberen Schicht deaktiviert• LL-Liste in der unteren Schicht deaktiviert

Laufzeit: O(|E| + |C|)

Page 32: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Sweepline von Sander 19950. Vorverarbeitung: Splitte Knoten, so dass Knotengrad = 1

für alle Knoten.• Durchlaufe die Knoten nacheinander (von links nach

rechts). • Fall A: Sei v der aktuelle Knoten in unteren Schicht von

Kante (w,v) 3. Falls v Endknoten ist, dann4. CrossCount += |LL|5. u = first(UL)6. While u links von w liegt {7. CrossCount += 1; u = next(UL)8. }9. /* jetzt gilt: u==w /* entferne w aus Liste UL10. Sonst: aktiviere neue Kante: Eintrag in Liste LL11. Fall B: vertausche Rollen von UL und LL

Page 33: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Geht es schneller als O(|E|+|C|)?

Anzahl der Kreuzungen: • Worst Case: |E|2• Average Case: ¼ |E|2

Auflisten von Kreuzungen:

Zählen von Kreuzungen:

NEIN!

JA!

Page 34: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Ein zweiter Sweepline Algorithmus: O(|E| log |V|) Waddle & Malhotra [1999]

1

0 2 51 3 4

0 2 3 4

Probleme: • viele komplizierte Fallunterscheidungen• aufwändiger Algorithmus (viele Seiten)• aufwändige Implementierung

Zählen der Kreuzungen

Page 35: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Ein einfacherO(|E| log |V|) Algorithmus

1

0 2 51 3 4

0 2 3 4

Zählen der Kreuzungen

Page 36: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

0 2 51 3 4

0 2 3 4

Lexikographisches Sortieren

Page 37: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 2 51 3 4

0 3 40 1 2 3 4 0 2 2

Lexikographisches Sortieren

Page 38: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 2 51 3 4

0 3 40 1 2 3 4 0 2 2

Beobachtung

Die Anzahl der Kreuzungen ist gleich derAnzahl der Inversionen der unteren Folge.

Page 39: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 0 01

0

3 4

2 51

22 23

3

4

4

Zählen der Inversionen

Insertion Sort

Page 40: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 0 01

0

3 4

2 51

22 23

3

4

4

Kreuzungen: 2 + 4 + 2 + 1 + 3 = 12

Zählen der Inversionen

Insertion Sort

Page 41: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 01

0

3 4

2 51

2 23

3

4

4

0 2

Kreuzungen: 2 + 4 + 2 + 1 + 3 = 12

Zählen der Inversionen

Insertion Sort

Page 42: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 0 0 1

0

3 4

2 51

22 2 3

3

4

4

Kreuzungen: 2 + 4 + 2 + 1 + 3 = 12

Zählen der Inversionen

Insertion Sort

Page 43: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 0 1

0 2 51

2 2 3

3

4

4

0 2 3 4

Zählen der Inversionen

Insertion Sort

Page 44: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

0 2 51 3 4

0 2 3 4

Alternative 2: Verbesserung auf O(|E| log |Vsmall|)

Alternative 1: Merge Sort: O(|E| log |E|)

Laufzeit: O(|C|)Insertion Sort

Zählen der Inversionen

Page 45: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Accumulator Tree

Page 46: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 2 51 3 4

0 3 40 1 2 3 4 0 2 2

Page 47: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 3 40 1 2 3 4 0 2 2

Page 48: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0

00

0000

0 0 0 0000010 2 3 4

0 3 40 1 2 3 4 0 2 2

Page 49: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0

00

0000

0 0 0 0000010 2 3 4

0 3 40 1 2 3 4 0 2 2

Page 50: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

01

0001

1 0 0 0000010 2 3 4

0 3 41 2 3 4 0 2 2

Page 51: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

1

01

0001

1 0 0 0000010 2 3 4

0 3 41 2 3 4 0 2 2

Page 52: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

2

02

0002

1 1 0 0000010 2 3 4

0 3 42 3 4 0 2 2

Page 53: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

3

03

0012

2 1 1 0000010 2 3 4

3 43 4 0 2 2

+1

Page 54: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

3

03

0013

2 1 1 0000010 2 3 4

3 43 4 0 2 2

+1+1

Page 55: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

3

04

0013

2 1 1 0000010 2 3 4

3 43 4 0 2 2

+1+1

Page 56: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

4

04

0013

2 1 1 0000010 2 3 4

3 43 4 0 2 2

+1+1

Page 57: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0 0 0 1

0

3 4

2 51

22 2 3

3

4

4

1+1=2 Kreuzungen bisher

2

0 3 40 1 2 3 4 0 2 2

Page 58: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

11

29

0254

3 1 3 0002210 2 3 4

(+1+1)+1+2+1+1+1+1+2+1=12 Kreuzungen

Page 59: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Algorithmus CrossCount1. Sortiere die untere Schicht lexikographisch →

southsequence[0..r-1]2. Initialisierung des Accumulator Tree3. CrossCount = 0; /* Kreuzungsanzahl */4. For (k=0; k<r; k++) { /* füge Kante k ein */5. index = southsequence[k] + startindex6. tree[index]++; /* Eintrag auf Blattebene */7. While (index>0) { /* laufe Baum hoch */8. If (index zu linkem Kind gehörig) 9. crosscount += tree[index + 1];9. Wandere eine Schicht nach oben: neuer index10. tree[index]++; /* Eintrag auf aktueller Schicht */11. } 12.}

Page 60: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

C-Program-Fragment/* build the accumulator tree */

firstindex = 1;while (firstindex<q) firstindex *=2;treesize = 2*firstindex – 1; /* number of tree nodes */firstindex -= 1; /* index of leftmost leaf */tree = (int *) malloc(treesize*sizeof(int));for (t=0; t<treesize; t++) tree[t] = 0;

/* count the crossings */

crosscount = 0; /* number of crossings */for (k=0; k<r; k++) { /* insert edge k */index = southsequence[k] + firstindex;tree[index]++;while (index>0) {

if (index%2) crosscount += tree[index + 1];index = (index – 1)/2;tree[index]++;

}}printf(“Number of crossings: %d\n”,crosscount);free(tree);

Page 61: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Praktische Experimente

SAN Sander [1995] O(|E| + |C|)

WAM Waddle & Malhotra [1999] O(|E| log |V|)

INS Insertion Sort O(|E| + |C|)

MER Merge Sort O(|E| log run(p))

BJM Neuer Algorithmus O(|E| log |Vsmall|)

Page 62: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Laufzeit für dünne Graphen

0

5

10

15

20

25

0 5000 10000 15000 20000 25000 30000

Knotenanzahl pro Schicht

Lauf

zeit

in 1

/100

Sek

unde

n

SAN

WAM

INS

MER

Page 63: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Laufzeit für dünne Graphen

0

5

10

15

20

25

0 5000 10000 15000 20000 25000 30000

Knotenanzahl pro Schicht

Lauf

zeit

in 1

/100

Sek

unde

n

SAN

WAM

INS

MER

BJM

Page 64: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Laufzeit für dünne Graphen

0

5

10

15

20

25

0 5000 10000 15000 20000 25000 30000

Knotenanzahl pro Schicht

Lauf

zeit

in 1

/100

Sek

unde

n

SAN

WAM

INS

MER

BJM

SANMED

WAMMED

INSMED

MERMED

BJMMED

Page 65: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0

50

100

150

200

250

300

350

0 50000 100000 150000 200000 250000 300000 350000 400000 450000 500000

Knotenanzahl pro Schicht

Lauf

zeit

in 1

/100

Sek

unde

n

BJMMERWAMSANINSBJMMEDMERMEDWAMMEDSANMEDINSMED

Laufzeit für große dünne Graphen

Page 66: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

0

2

4

6

8

10

12

0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000

Kantenanzahl pro Schichtenpaar

Lauf

zeit

in 1

/100

Sek

unde

n

BJM

MER

WAM

SAN

INS

BJMMED

MERMED

WAMMED

SANMED

INSMED

Laufzeit für dichte Graphen

Page 67: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Computational ExperimentsAT&T Graphen

1. Phase: Schichteneinteilung von AGD• longest-path-layering: 30,061 Instanzen• Coffman-Graham-layering: 57,300 Instanzen

Für jede Instanz:10 zufällige Umsortierungen

gefolgt durch einen Median-Sortierschritt

Anzahl an Testläufen:601,220 “longest path”

1,146,000 “Coffman-Graham”

Page 68: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Computational ExperimentsAT&T Graphen

Longest path layering

1 bis 6,566 obere Knoten, 63 durchschnittlich1 bis 5,755 untere Knoten, 57 durchschnittlich

1 bis 6,566 Kanten, 64 durchschnittlich

Zufällige Umsortierungen:0 bis 10,155,835 Kreuzungen, 24,472 durchschnittlich

Median-sortierte Schichten:0 bis 780,017 Kreuzungen, 182 durchschnittlich

Page 69: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Computational ExperimentsAT&T Graphen

Coffman-Graham layering

1 bis 3,278 obere Knoten, 142 durchschnittlich1 bis 3,278 untere Knoten, 137 durchschnittlich

1 bis 3,276 Kanten, 141 durchschnittlich

Zufällige Umsortierungen:0 bis 2,760,466 Kreuzungen, 47,559 durchschnittlich

Median-sortierte Schichten:0 bis 2,872 Kreuzungen, 4 durchschnittlich

Page 70: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Graphen aus der PraxisAT&T Graphen

Page 71: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Folgerung

WAM, MER, BJMReduzieren die Laufzeit

des Sugiyama-Algorithmussignifikant!

BJM ist sehr einfachzu implementieren!

Page 72: Kap. 2: Hierarchisches Graphenzeichnen 2.1. Kreuzungszählenls11- · 2007-04-10 · 0 bis 780,017 Kreuzungen, 182 durchschnittlich. Computational Experiments AT&T Graphen Coffman-Graham

Offenes Problem

Gegeben: eine Permutation von 0..n-1:

Ist wirklich Zeit Θ(n log n) nötig, umdie Anzahl der Inversionen zu zählen?

Vielen Dank