Algorithmen zur Visualisierung von GraphenSortiere die Menge der Tupel aller Knoten der Tiefe t...

Post on 10-Nov-2020

29 views 0 download

Transcript of Algorithmen zur Visualisierung von GraphenSortiere die Menge der Tupel aller Knoten der Tiefe t...

Algorithmen zur Visualisierung von GraphenDarstellung von Symmetrien und Inkrementelle Verfahren

INSTITUT FUR THEORETISCHE INFORMATIK – LEHRSTUHL ALGORITHMIK I

MARCUS KRUG

www.kit.eduKIT – Universitat des Landes Baden-Wurttemberg und

nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

bevor’s losgeht

Vorschlag fur Prufungsterminess Donnerstag, 1. Marz ab 9:00 Uhrss Freitag, 30. Marz ab 9:00 Uhr

Evaluation

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Darstellung von Symmetrien in Graphen

aus Hong, Eades, Lee ’00

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Darstellung von Symmetrien in Graphen

Definition: Automorphismen eines DAG

Ein Automorphismus eines DAG G = (V,E) ist eine Knotenpermutationπ : V → V , die Adjazenzen respektiert und alle Kantenrichtungen erhaltoder alle Kantenrichtungen umdreht:

(u, v) ∈ E ⇔ (π(u), π(v)) ∈ E

oder(u, v) ∈ E ⇔ (π(v), π(u)) ∈ E.

Die Automorphismen von G bilden mit der Hintereinanderausfuhrung eineGruppe.

ss die Automorphismengruppe eines Graphen zu bestimmen ist GI-vollstandigss fur Graphen mit beschranktem Maximalgrad und planare Graphen gehtdas in Polynomialzeit

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Darstellung von Symmetrien in Graphen

Definition: Automorphismen eines DAG

Ein Automorphismus eines DAG G = (V,E) ist eine Knotenpermutationπ : V → V , die Adjazenzen respektiert und alle Kantenrichtungen erhaltoder alle Kantenrichtungen umdreht:

(u, v) ∈ E ⇔ (π(u), π(v)) ∈ E

oder(u, v) ∈ E ⇔ (π(v), π(u)) ∈ E.

Die Automorphismen von G bilden mit der Hintereinanderausfuhrung eineGruppe.

ss die Automorphismengruppe eines Graphen zu bestimmen ist GI-vollstandigss fur Graphen mit beschranktem Maximalgrad und planare Graphen gehtdas in Polynomialzeit

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Darstellbare Symmetrien

ss ein Automorphismus π eines Graphen ist darstellbar, wenn es eineZeichnung gibt, die eine Symmetrie enthalt, welche π induziertss Lin charakterisiert darstellbare Automorphismen [Lin ’92]ss Darstellbare Automorphismen eines Graphen zu finden ist NP-schwerss fur planare Graphen ist das wieder in Polynomialzeit moglich

12

3 4

1

2 3

4

123

4 5

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Darstellbare Symmetrien

ss ein Automorphismus π eines Graphen ist darstellbar, wenn es eineZeichnung gibt, die eine Symmetrie enthalt, welche π induziertss Lin charakterisiert darstellbare Automorphismen [Lin ’92]ss Darstellbare Automorphismen eines Graphen zu finden ist NP-schwerss fur planare Graphen ist das wieder in Polynomialzeit moglich

stellt 1 → 2 → 3 → 4 → 1 dar,aber nicht 1 → 2 → 3 → 1

stellt 1 → 2 → 3 → 1 dar, abernicht 1 → 2 → 3 → 4 → 1

1 → 2 → 3 → 1, 4 → 5 → 4nicht darstellbar

12

3 4

1

2 3

4

123

4 5

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien in SP-Graphen

πvert

u

v

π(u)

π(v)

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien in SP-Graphen

πvert πhor

u

v

π(u)

π(v)

u

v

π(u)

π(v)

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien in SP-Graphen

πvert πhor πrot

u

v

π(u)

π(v)

u

v

π(u)

π(v)

u

v

π(u)

π(v)

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien in SP-Graphen

πvert πhor πrot {πvert, πhor, πrot}

u

v

π(u)

π(v)

u

v

π(u)

π(v)

u

v

π(u)

π(v)

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien in SP-Zeichnungen

Satz (Hong, Eades, Lee ’00)

Die in einem kreuzungsfreien Aufwartslayout eines SP-Graphen darstell-baren Symmetrien sind entwederss {id}ss {id, π} mit π ∈ {πvert, πhor, πrot}ss {id, πvert, πhor, πrot}.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

P

S

S

S

S

P

SSQ Q

QQ

Q

Q

Q Q Q Q

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

P

S

S

S

S

P

SSQ Q

QQ

Q

Q

Q Q Q Q

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im DekompositionsbaumKanonische Kodierung

ss Setze C(G) = 〈0〉 fur alle Q-Knoten G.ss Fur jede Tiefe t = maxG tiefe(G), . . . , 0ss Fur jeden S- oder P-Knoten G der Tiefe t mit NachfolgernG1, . . . , Gk setze C(G) = 〈c(G1), . . . , c(Gk)〉 und sortiere C(G)nichtabsteigend, falls G ein P-Knoten ist.ss Sortiere die Menge der Tupel aller Knoten der Tiefe t lexiko-graphisch.ss Fur jede Komponente G der Tiefe t setze ihre Kodierung aufc, falls ihr Tupel in der sortierten Tupelfolge als c-tes ver-schiedenes Tupel auftritt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im DekompositionsbaumKanonische Kodierung

ss Setze C(G) = 〈0〉 fur alle Q-Knoten G.ss Fur jede Tiefe t = maxG tiefe(G), . . . , 0ss Fur jeden S- oder P-Knoten G der Tiefe t mit NachfolgernG1, . . . , Gk setze C(G) = 〈c(G1), . . . , c(Gk)〉 und sortiere C(G)nichtabsteigend, falls G ein P-Knoten ist.ss Sortiere die Menge der Tupel aller Knoten der Tiefe t lexiko-graphisch.ss Fur jede Komponente G der Tiefe t setze ihre Kodierung aufc, falls ihr Tupel in der sortierten Tupelfolge als c-tes ver-schiedenes Tupel auftritt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im DekompositionsbaumKanonische Kodierung

ss Setze C(G) = 〈0〉 fur alle Q-Knoten G.ss Fur jede Tiefe t = maxG tiefe(G), . . . , 0ss Fur jeden S- oder P-Knoten G der Tiefe t mit NachfolgernG1, . . . , Gk setze C(G) = 〈c(G1), . . . , c(Gk)〉 und sortiere C(G)nichtabsteigend, falls G ein P-Knoten ist.ss Sortiere die Menge der Tupel aller Knoten der Tiefe t lexiko-graphisch.ss Fur jede Komponente G der Tiefe t setze ihre Kodierung aufc, falls ihr Tupel in der sortierten Tupelfolge als c-tes ver-schiedenes Tupel auftritt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im DekompositionsbaumKanonische Kodierung

ss Setze C(G) = 〈0〉 fur alle Q-Knoten G.ss Fur jede Tiefe t = maxG tiefe(G), . . . , 0ss Fur jeden S- oder P-Knoten G der Tiefe t mit NachfolgernG1, . . . , Gk setze C(G) = 〈c(G1), . . . , c(Gk)〉 und sortiere C(G)nichtabsteigend, falls G ein P-Knoten ist.ss Sortiere die Menge der Tupel aller Knoten der Tiefe t lexiko-graphisch.ss Fur jede Komponente G der Tiefe t setze ihre Kodierung aufc, falls ihr Tupel in der sortierten Tupelfolge als c-tes ver-schiedenes Tupel auftritt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im DekompositionsbaumKanonische Kodierung

ss Setze C(G) = 〈0〉 fur alle Q-Knoten G.ss Fur jede Tiefe t = maxG tiefe(G), . . . , 0ss Fur jeden S- oder P-Knoten G der Tiefe t mit NachfolgernG1, . . . , Gk setze C(G) = 〈c(G1), . . . , c(Gk)〉 und sortiere C(G)nichtabsteigend, falls G ein P-Knoten ist.ss Sortiere die Menge der Tupel aller Knoten der Tiefe t lexiko-graphisch.ss Fur jede Komponente G der Tiefe t setze ihre Kodierung aufc, falls ihr Tupel in der sortierten Tupelfolge als c-tes ver-schiedenes Tupel auftritt.

Zwei Knoten u und v gleicher Tiefe sind genau dann isomorph, wenn sieden gleichen Code haben.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 111

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

11

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

11

〈1, 1〉

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

11

〈1, 1〉

1 1

11

11

2

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

11

〈1, 1〉

1 1

11

11

2

〈1, 1〉〈1, 1〉

〈1, 1, 2〉

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

11

〈1, 1〉

1 1

11

11

2

〈1, 1〉〈1, 1〉

〈1, 1, 2〉1

1 2

P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Knotenkodierung im Dekompositionsbaum

P

S

〈0〉〈0〉

〈0〉

〈0〉 〈0〉 〈0〉 〈0〉

〈0〉

〈0〉

〈0〉

S

S

P

SS

1 11

〈1, 1〉〈1, 1〉

1

11

〈1, 1〉

1 1

11

11

2

〈1, 1〉〈1, 1〉

〈1, 1, 2〉1

1 2

〈1, 1, 2〉 1P

SS

S

P

SS

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Vertikale SymmetrienSatz (Hong, Eades, Lee ’00)

Gegeben sei der kanonische Dekompositionsbaum eines serien-parallelen Graphen. Es sei G eine Komponente, die durch Kompo-sition der Komponenten G1, . . . , Gk entstehe.ss Ist G ein S-Knoten, dann ist G vertikal symmetrisch, wenn alle

G1, . . . , Gk vertikal symmetrisch sind.ss Ist G ein P-Knoten, so betrachten wir die Klassen Gj = {Gi : 1 ≤i ≤ k, c(Gi) = j}, j = 1, . . . , k, von isomorphen Teilgraphen.ss |Gj | gerade ∀j ⇒ vertikal symmetrischss |Gj | ungerade fur genau ein j ⇒ G vertikal symmetrisch g.d.w.

Graphen in Gj vertikal symmetrischss |Gi|, |Gj | ungerade fur i 6= j ⇒ G nicht vertikal symmetrisch

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Vertikale SymmetrienSatz (Hong, Eades, Lee ’00)

Gegeben sei der kanonische Dekompositionsbaum eines serien-parallelen Graphen. Es sei G eine Komponente, die durch Kompo-sition der Komponenten G1, . . . , Gk entstehe.ss Ist G ein S-Knoten, dann ist G vertikal symmetrisch, wenn alle

G1, . . . , Gk vertikal symmetrisch sind.ss Ist G ein P-Knoten, so betrachten wir die Klassen Gj = {Gi : 1 ≤i ≤ k, c(Gi) = j}, j = 1, . . . , k, von isomorphen Teilgraphen.ss |Gj | gerade ∀j ⇒ vertikal symmetrischss |Gj | ungerade fur genau ein j ⇒ G vertikal symmetrisch g.d.w.

Graphen in Gj vertikal symmetrischss |Gi|, |Gj | ungerade fur i 6= j ⇒ G nicht vertikal symmetrisch

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Vertikale SymmetrienSatz (Hong, Eades, Lee ’00)

Gegeben sei der kanonische Dekompositionsbaum eines serien-parallelen Graphen. Es sei G eine Komponente, die durch Kompo-sition der Komponenten G1, . . . , Gk entstehe.ss Ist G ein S-Knoten, dann ist G vertikal symmetrisch, wenn alle

G1, . . . , Gk vertikal symmetrisch sind.ss Ist G ein P-Knoten, so betrachten wir die Klassen Gj = {Gi : 1 ≤i ≤ k, c(Gi) = j}, j = 1, . . . , k, von isomorphen Teilgraphen.ss |Gj | gerade ∀j ⇒ vertikal symmetrischss |Gj | ungerade fur genau ein j ⇒ G vertikal symmetrisch g.d.w.

Graphen in Gj vertikal symmetrischss |Gi|, |Gj | ungerade fur i 6= j ⇒ G nicht vertikal symmetrisch

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Vertikale SymmetrienSatz (Hong, Eades, Lee ’00)

Gegeben sei der kanonische Dekompositionsbaum eines serien-parallelen Graphen. Es sei G eine Komponente, die durch Kompo-sition der Komponenten G1, . . . , Gk entstehe.ss Ist G ein S-Knoten, dann ist G vertikal symmetrisch, wenn alle

G1, . . . , Gk vertikal symmetrisch sind.ss Ist G ein P-Knoten, so betrachten wir die Klassen Gj = {Gi : 1 ≤i ≤ k, c(Gi) = j}, j = 1, . . . , k, von isomorphen Teilgraphen.ss |Gj | gerade ∀j ⇒ vertikal symmetrischss |Gj | ungerade fur genau ein j ⇒ G vertikal symmetrisch g.d.w.

Graphen in Gj vertikal symmetrischss |Gi|, |Gj | ungerade fur i 6= j ⇒ G nicht vertikal symmetrisch

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beweisidee vertikale Symmetrie

S-Knoten

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beweisidee vertikale Symmetrie

S-Knoten

P-Knoten, alle Klassen gerade Anzahl

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beweisidee vertikale Symmetrie

S-Knoten

P-Knoten, alle Klassen gerade Anzahl

P-Knoten, eine Klasse ungerade Anzahl & v-symm.alle Knoten v-symm.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien zeichnen

aus Hong, Eades, Lee ’00

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien zeichnen

aus Hong, Eades, Lee ’00

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Symmetrien zeichnen

aus Hong, Eades, Lee ’00

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Inkrementelle VerfahrenAllgemeine Vorgehensweisess bestimme geeignete Knoten-Ordnungss berechne Layout inkrementell durch iteratives Hinzufugen der Knoten

Beispiel: Orthogonale Zeichnung von Graphen mit Maximalgrad ≤ 4

Vorgehensweisess 2-fach-Zusammenhangskomponenten berechnenss fur jede 2-fach-Zusammenhangskomponente geeignete Knoten-Ordnungberechnenss Inkrementelles Layout fur Zusammenhangskomponentess rekursiver Ansatz fur Gesamt-Graph

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Blocke und Block-BaumSchnittknoten (Artikulation): Knoten, dessen Entfernen die Anzahl derZusammenhangskomponenten erhoht; C Menge der Schnittknoten von G

Block-Baum

Baum T = (B, F ) mit B = B ∪C und F enthalt alle Kanten zwischen b ∈ Bund c ∈ C genau dann, wenn c ∈ b gilt.

Block maximaler 2-fach zusammenhangender Graph oder Brucke oderisolierter Knoten; Menge der Blocke B

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Blocke und Block-BaumSchnittknoten (Artikulation): Knoten, dessen Entfernen die Anzahl derZusammenhangskomponenten erhoht; C Menge der Schnittknoten von G

Block-Baum

Baum T = (B, F ) mit B = B ∪C und F enthalt alle Kanten zwischen b ∈ Bund c ∈ C genau dann, wenn c ∈ b gilt.

Block maximaler 2-fach zusammenhangender Graph oder Brucke oderisolierter Knoten; Menge der Blocke B

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Blocke und Block-BaumSchnittknoten (Artikulation): Knoten, dessen Entfernen die Anzahl derZusammenhangskomponenten erhoht; C Menge der Schnittknoten von G

Block-Baum

Baum T = (B, F ) mit B = B ∪C und F enthalt alle Kanten zwischen b ∈ Bund c ∈ C genau dann, wenn c ∈ b gilt.

Block maximaler 2-fach zusammenhangender Graph oder Brucke oderisolierter Knoten; Menge der Blocke B

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

w

u

v

x

z

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

w

u

v

x

z

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

Vorwartskante w → u

w

u

v

x

z

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

Vorwartskante w → u

Ruckwartskante v ↪→ w

w

u

v

x

z

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

Vorwartskante w → u

Ruckwartskante v ↪→ w

Querkante

w

u

v

x

z

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

Vorwartskante w → u

Ruckwartskante v ↪→ w

Querkante

w

u

v

x

z

Baumpfad z ∗→ x

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

Vorwartskante w → u

Ruckwartskante v ↪→ w

Querkante

w

u

v

x

z

Baumpfad z ∗→ x

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Terminologie

Spannbaum Baum der alle Knoten enthalt

Spannbaum mit Wurzel Jeder Knoten(außer der Wurzel) hat eindeutigenVorganger

DFS-Baum Spannbaum mit Wurzel, derdurch Tiefensuche in Graphen entsteht

offener Pfad Pfad von der Wurzel zum ak-tuellen Knoten der Tiefensuche

Lowpoint Der Lowpoint w von u ist derKnoten in T (G), der s am nachsten ist,so dass ein Weg u ∗→ v ↪→ w existiert.

Vorwartskante w → u

Ruckwartskante v ↪→ w

Querkante

w

u

v

x

z

Baumpfad z ∗→ x

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

Beobachtung [Tarjan ’73]

Ein Graph G = (V,E) ist genau dann zweifach zusammenhangend, wennim DFS-Baum T (G) nur die Wurzel s ihr eigener Lowpoint ist und wenn eshochstens eine Kante v → w gibt, so dass v der Lowpoint von w ist (dannist v die Wurzel).

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

Beobachtung [Tarjan ’73]

Ein Graph G = (V,E) ist genau dann zweifach zusammenhangend, wennim DFS-Baum T (G) nur die Wurzel s ihr eigener Lowpoint ist und wenn eshochstens eine Kante v → w gibt, so dass v der Lowpoint von w ist (dannist v die Wurzel).

Algorithmus zur Berechnung von 2-fachen Zusammenhangskomponentenvon Tarjanss 1. Phase: berechne Lowpointsss 2. Phase: benutze Lowpoint-Information, um Zusammenhangskompo-

nenten zu berechnenss Nachteil: Graph muss 2 mal durchsucht werden

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

Andere Herangehensweise [Gabow ’00]Pfadbasierte Berechnung von 2-fachen Zusammenhangskomponenten inDFS-Baum

Beobachtung

Zwei Kanten sind in der gleichen 2-fachen Zusammenhangskomponentengenau dann, wenn es einen einfachen Kreis gibt, der beide Kanten enthalt.

→ Aquivalenz-Relation auf der Menge der Kanten, benutze ”erste” Kanteeiner Komponente als Reprasentant

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

nicht klassifizierte KantenReprasentanten-Kandidaten

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

t 2

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

t

g

2

3

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

t

g

h

2

3

4

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4t

g

h

2

3

4

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4t

g

h

4 2

3

4

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

4 2

3

4 5

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

4 2

3

4

5

6

5

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

a

4 2

3

4

5

6

7

5

6

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

a

4 2

3

4

5

6

7

7

5

6

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

4 2

3

4

8

5

6

7

7

5

6 6

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

4 2

3

4

8

5

6

7

7

5

5

6 6

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

4 2

3

4

8

5

6

7

7

5

5

6 6

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

c

4 2

3

4

8

5

6 9

7

7

5

5

5

6 6

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)f → c f → c (5)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

c

4 2

3

4

8

5

6 9

7

7

5

5

5

6 6

9

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)f → c f → c (5)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

c

d

4 2

3

4

8

5

6 9

107

7

5

5

5

6 69

9

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)f → c f → c (5)c→ d c→ d (9)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

c

d

4 2

3

4

8

5

6 9

107

7

5

5

5

6 69

10

9

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)f → c f → c (5)c→ d c→ d (9)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

c

d

4 2

3

4

8

5

6 9

107

7

5

5

5

6 69

10

9

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)f → c f → c (5)c→ d c→ d (9)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung von Blocken

s 1

t

g

h f

b

ea

c

d

1

2

3

4

3

t

g

h f

b

ea

c

d

4 2

3

4

8

5

6 9

107

7

5

5

5

6 69

10

9

nicht klassifizierte KantenReprasentanten-Kandidaten

s→ t s→ t (1)t→ g t→ g (2)g → h g → h (3)g → f g → f (3)g → ff → b f → b (5)b→ a b→ a (6)b→ e b→ e (6)f → c f → c (5)c→ d c→ d (9)

Stack CStack S

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

st-Ordnung

Satz [Lempel, Even, Cederbaum, 1967]

Ist G = (V,E) ein zweifach zusammenhangender Graph, dann existiert zujeder Kante (s, t) ∈ E eine s-t-Ordnung.

Definition

Sei G = (V,E) ein zweifach zusammenhangender Graph und s 6= t ∈ V .Eine Ordung s = v1, v2, . . . , vn = t der Knoten von G heißt s-t-Ordnung,falls fur alle Knoten vj , 1 < j < n, gilt:

es ex. 1 ≤ i < j < k ≤ n mit {vi, vj}, {vj , vk} ∈ E .

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

st-Ordnung

Satz [Lempel, Even, Cederbaum, 1967]

Ist G = (V,E) ein zweifach zusammenhangender Graph, dann existiert zujeder Kante (s, t) ∈ E eine s-t-Ordnung.

Definition

Sei G = (V,E) ein zweifach zusammenhangender Graph und s 6= t ∈ V .Eine Ordung s = v1, v2, . . . , vn = t der Knoten von G heißt s-t-Ordnung,falls fur alle Knoten vj , 1 < j < n, gilt:

es ex. 1 ≤ i < j < k ≤ n mit {vi, vj}, {vj , vk} ∈ E .

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung einer st-Ordnung

Berechnung einer st-Orientierung aus Ohrenzerlegung

Satz

G hat eine st-Ordnung genau dann, wenn er eine st-Orientierung hat.

st-Orientierung

Sei G = (V,E) ein Graph. Eine st-Orientierung (bipolar orientation) von Gist eine Orientierung der Kanten, so dass der resultierende Graph azyklischist und s die einzige Quelle sowie t die einzige Senke sind.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Berechnung einer st-Ordnung

Berechnung einer st-Orientierung aus Ohrenzerlegung

Satz

G hat eine st-Ordnung genau dann, wenn er eine st-Orientierung hat.

st-Orientierung

Sei G = (V,E) ein Graph. Eine st-Orientierung (bipolar orientation) von Gist eine Orientierung der Kanten, so dass der resultierende Graph azyklischist und s die einzige Quelle sowie t die einzige Senke sind.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

Definition

Sei G = (V,E) ein 2-fach zusammenhangender Graph. Ein Ohr von G istein einfacher Pfad oder Kreis O = (v0, {v0, v1}, v1, . . . , vk−1, {vk−1, vk}, vk).Ein Ohr heißt offen, falls v0 6= vk ist, d.h. falls O ein einfacher Pfad ist.

Eine Folge D = (P0, . . . , Pr) von (offenen) Pfaden heißt (offene) Ohren-dekomposition, falls E(P0), . . . , E(Pr) eine Partition von E ist und furalle Pi = (v0, e1, v1, . . . , ek, vk), 1 ≤ i ≤ r, gilt {v0, vk} ⊆ Vi−1 und{v1, . . . , vk−1} ∩ Vi−1 = ∅.

Eine Ohrendekomposition beginnt mit {s, t} ∈ E, falls P0 = (s, {s, t}, t).

Eine Ohrendekomposition induziert Graphen Gi = (Vi, Ei) mit Vi =⋃ij=0 V (Pj) und Ei =

⋃ij=0E(Pj), 0 ≤ i ≤ r.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

Definition

Sei G = (V,E) ein 2-fach zusammenhangender Graph. Ein Ohr von G istein einfacher Pfad oder Kreis O = (v0, {v0, v1}, v1, . . . , vk−1, {vk−1, vk}, vk).Ein Ohr heißt offen, falls v0 6= vk ist, d.h. falls O ein einfacher Pfad ist.

Eine Folge D = (P0, . . . , Pr) von (offenen) Pfaden heißt (offene) Ohren-dekomposition, falls E(P0), . . . , E(Pr) eine Partition von E ist und furalle Pi = (v0, e1, v1, . . . , ek, vk), 1 ≤ i ≤ r, gilt {v0, vk} ⊆ Vi−1 und{v1, . . . , vk−1} ∩ Vi−1 = ∅.

Eine Ohrendekomposition beginnt mit {s, t} ∈ E, falls P0 = (s, {s, t}, t).

Eine Ohrendekomposition induziert Graphen Gi = (Vi, Ei) mit Vi =⋃ij=0 V (Pj) und Ei =

⋃ij=0E(Pj), 0 ≤ i ≤ r.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

Definition

Sei G = (V,E) ein 2-fach zusammenhangender Graph. Ein Ohr von G istein einfacher Pfad oder Kreis O = (v0, {v0, v1}, v1, . . . , vk−1, {vk−1, vk}, vk).Ein Ohr heißt offen, falls v0 6= vk ist, d.h. falls O ein einfacher Pfad ist.

Eine Folge D = (P0, . . . , Pr) von (offenen) Pfaden heißt (offene) Ohren-dekomposition, falls E(P0), . . . , E(Pr) eine Partition von E ist und furalle Pi = (v0, e1, v1, . . . , ek, vk), 1 ≤ i ≤ r, gilt {v0, vk} ⊆ Vi−1 und{v1, . . . , vk−1} ∩ Vi−1 = ∅.

Eine Ohrendekomposition beginnt mit {s, t} ∈ E, falls P0 = (s, {s, t}, t).

Eine Ohrendekomposition induziert Graphen Gi = (Vi, Ei) mit Vi =⋃ij=0 V (Pj) und Ei =

⋃ij=0E(Pj), 0 ≤ i ≤ r.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

Definition

Sei G = (V,E) ein 2-fach zusammenhangender Graph. Ein Ohr von G istein einfacher Pfad oder Kreis O = (v0, {v0, v1}, v1, . . . , vk−1, {vk−1, vk}, vk).Ein Ohr heißt offen, falls v0 6= vk ist, d.h. falls O ein einfacher Pfad ist.

Eine Folge D = (P0, . . . , Pr) von (offenen) Pfaden heißt (offene) Ohren-dekomposition, falls E(P0), . . . , E(Pr) eine Partition von E ist und furalle Pi = (v0, e1, v1, . . . , ek, vk), 1 ≤ i ≤ r, gilt {v0, vk} ⊆ Vi−1 und{v1, . . . , vk−1} ∩ Vi−1 = ∅.

Eine Ohrendekomposition beginnt mit {s, t} ∈ E, falls P0 = (s, {s, t}, t).

Eine Ohrendekomposition induziert Graphen Gi = (Vi, Ei) mit Vi =⋃ij=0 V (Pj) und Ei =

⋃ij=0E(Pj), 0 ≤ i ≤ r.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

G1

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

G1

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

G1

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

G1

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Ohrenzerlegung

G0

s

g

h f

b

ea

c

G1

Iteratives Vorgehen [Brandes ’02]ss P0 = (s{s, t}, t)ss solange ∃ w → x ∈ Ei, v ↪→ w /∈ Ei

mit x ∗→ v und w, x ∈ Viss u letzter Knoten in Vi auf x ∗→ v

⇒ Pi+1 = u∗→ v ↪→ w (Ohr zu v ↪→ w)

t

d

Satz

D(T ) ist eine offene Ohrendekomposition, die mit {s, t} beginnt.

Satz [Whitney ’32]

Ist G ein zweifach zusammenhangender Graph, dann existiert fur jedeKante {s, t} ∈ E eine offene Ohrendekomposition, die mit {s, t} beginnt.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Orientierung der KantenDefinition: Ruckwartskante v ↪→ w hangt vonVorwartskante w → x ab, fur die w ∗→ v gilt.

Orientierung der Kanten: Betrachte Sequenzvon Ohren P0, P1, . . . , Pk in D(T ). Orientiere P0

von s nach t und anschließend iterativ alle weit-ere Ohren entsprechend der Orientierung ihrerabhangigen Kante.

s

c

a e d

f

b

h

t

g

Satz

Die Orientierung von P0, . . . , Pi liefert eine s-t-Orientierung von Gi fur alle0 ≤ i ≤ r, und fur die partiellen Ordnungen ≺i gilt:

w → x ∈ Ei und w ≺i x (bzw. x ≺i w) =⇒ w ≺i v (bzw. v ≺i w)

fur alle v ∈ T (x) ∩ Vi.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

st-OrdnungIterative Berechnung der st-Ordnungss starte mit Sequenz (s, t)ss betrachte Ohren P1, . . . , Pr in dieser Ordnungss sei Pi = u

∗→ v ↪→ w das Ohr zu v ↪→ wss falls Pi von w nach u orientiert wird, fuge Sequenz V (Pi) unmittelbar voru ein, sonst hinter u

w

u Pi+1

(s, . . . , w, . . . , u, . . . , t)

x1x2 x3

w

u Pi+1

x1x2 x3

(s, . . . , u, . . . , w, . . . , t)

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

st-OrdnungIterative Berechnung der st-Ordnungss starte mit Sequenz (s, t)ss betrachte Ohren P1, . . . , Pr in dieser Ordnungss sei Pi = u

∗→ v ↪→ w das Ohr zu v ↪→ wss falls Pi von w nach u orientiert wird, fuge Sequenz V (Pi) unmittelbar voru ein, sonst hinter u

Satz

Die erhaltene Ordnung von Vi ist eine lineare Erweiterung von ≺i fur alle0 ≤ i ≤ r.

w

u Pi+1

(s, . . . , w, . . . , u, . . . , t)

x1x2 x3

w

u Pi+1

x1x2 x3

(s, . . . , u, . . . , w, . . . , t)

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ b→ f→ g→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s

t

g

hf

b

ea

c

d

s→ b→ f→ g→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ b→ f→ g→ h→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s

t

g

hf

b

ea

c

d

s→ a→ b→ f→ g→ h→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ a→ b→ f→ g→ h→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s

t

g

hf

b

ea

c

d

s→ a→ b→ e→ f→ g→ h→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s→ a→ b→ e→ f→ g→ h→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Eager st-Ordering

s

t

g

hf

b

ea

c

d

process ears(tree edge w → x) beginforeach v ↪→ w ∈ D[w → x] do

u ← v;while u 6∈ L do u ← PARENT [u];

P ← (u∗→ v ↪→ w);

if w → x von w nach x (bzw. x nach w) orientiert thenorientiere P von w nach u (bzw. u nach w);fuge innere Knoten von P unmittelbar vor (bzw. hinter) uin L ein;

foreach Baumkante w′ → x′ von P do process ears(w′ → x′);

D[{w, x}] ← ∅;

dfs(vertex v) begini ← i + 1; DFS [v] ← i;while es ex. nicht nummerierte Kante e = {v, w} do

DFS [e] ← DFS [v];if w nicht nummeriert then

CHILDEDGE [v] ← e;PARENT [w] ← v;dfs(w);

else{w, x} ← CHILDEDGE [w];D[{w, x}] ← D[{w, x}] ∪ {e};if x ∈ L then process ears(w → x);

s

t

g

hf

b

ea

c

d

s→ a→ b→ e→ f→ c→ d→ g→ h→ t

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Algorithmus fur Blocke

0

1v1 v2

vi vi vi vn

vn−1

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

1

2

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

3

1

2 3

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

4

3

1

2 3

4

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

4

55

3

1

2 3

4

55

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

4

55

56

3

1

2 3

4

5556

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

4

55

57

56

3

1

2 3

4

5556

57

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Beispiel

1

2 3

4

5556

57

1 2

4

55

57

56

3

1

2 3

4

5556

57

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Planaritat

vi

Gi−1

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Analyse

Satz [Biedl & Kant ’94]

Die benotigte Gittergroße ist hochstens (m− n+ 1)× n.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Analyse

Satz [Biedl & Kant ’94]

Die benotigte Gittergroße ist hochstens (m− n+ 1)× n.

Satz [Biedl & Kant ’94]

Die Gesamtzahl der Knicke ist hochstens 2m−2n+4, und keine Kante hatmehr als zwei Knicke, es sei denn G ist ein Oktaeder.

Algorithmen zur Visualisierung von Graphen

Marcus Krug

Institut fur Theoretische Informatik

Lehrstuhl Algorithmik I

Algorithmus fur allgemeine Graphen

Satz [Biedl & Kant ’94]

Sei G ein einfach zusammenhangender Graph mit Maximalgrad 4. Dannkann G auf einem Gitter der Große n × n mit hochstens 2 Knicken proKante eingebettet werden.

v

v

v

G0

G1

G2G3

G4

G1G2

v1

v2 v3

v4