• Keine Ergebnisse gefunden

Planaritätstest von Boyer und Myrvold

N/A
N/A
Protected

Academic year: 2021

Aktie "Planaritätstest von Boyer und Myrvold"

Copied!
57
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

© 17.01.19 Jens M. Schmidt

Planaritätstest von Boyer und Myrvold

Jens M. Schmidt

G

H C

A

D

F E

x

K

H I

J y v

u v

(2)

© 17.01.19 Jens M. Schmidt

Planare Graphen, Zeichnungen und Rotationssysteme

Algorithmus von Boyer-Myrvold, Walkup, Walkdown

Korrektheit

Laufzeit O(n)

Folgerungen

Überblick

(3)

© 17.01.19 Jens M. Schmidt

Kuratowski [1930]: Ein Graph ist genau dann planar, falls er weder eine K

3,3

- Unterteilung noch eine K

5

-Unterteilung enthält.

Wagner [1937]: Ein Graph ist genau dann planar, falls er weder K

3,3

noch K

5

als Minor enthält.

Wir zeigen beide Theoreme (algorithmisch)!

Planare Graphen vs. Zeichnungen

1 2

4 3 1

2

4

3

planarer Graph planarer Graph nicht-planarer Graph nicht-planare Zeichnung planare Zeichnung nicht-planare Zeichnung

äquivalent → Übung

(4)

© 17.01.19 Jens M. Schmidt

N

Stereographische Projektion projiziert die 2-Sphäre S 0 (bis auf deren „Nordpol“

(0,0,1)) auf die euklidische Ebene und zurück.

Korollar: Ein Graph ist genau dann planar, wenn er in S 0 gezeichnet werden kann.

Für jede Zeichnung eines Graphen in S 0 kann S 0 so „gerollt“ werden, dass der Nordpol in einer beliebigen Fläche ist.

Korollar: Jeder planare Graph hat eine planare Zeichnung mit einer beliebigen Fläche als Außenfläche.

Stereographische Projektion

S 0

(5)

© 17.01.19 Jens M. Schmidt

Rotationssystem / kombinatorische Einbettung := Funktion, die jedem Knoten eine zyklische Ordnung seiner inzidenten Kantenmenge zuweist.

Sphärische Einbettung := Rotationssystem einer planaren Zeichnung im Uhrzeigersinn → sphär. Einb. sind Äquivalenzklassen planarer Zeichnungen

Planare Einbettung := sphärische Einbettung + Angabe der äußeren Fläche

Theorem: Für ein gegebenes Rotationssystem kann (leicht) in Zeit O(m) getestet werden, ob es eine sphärische Einbettung ist.

Kombinatorische Einbettungen

gleiche sphärische Einbettung

c d

h a

i e f

g b

c d

h a

i e f

g

b

ungleiche planare Einbettung

(6)

© 17.01.19 Jens M. Schmidt

Jahr Algorithmus Idee Laufzeit

1961 Auslander, Parter (Goldstein '63: Korrektur) cycle-based O(n

3

) 1964 Demoucron, Malgrange, Pertuiset cycle-based O(n

2

) 1967 Lempel, Even, Cederbaum vertex-addition O(n

2

)

1974 Hopcroft, Tarjan cycle-based O(n)

1976 Booth, Lueker (LEC mit st-numbering+PQ-Bäume) vertex-addition O(n) 1985/2003 de Fraysseix, Ossona de Mendez, Rosenstiehl edge-addition O(n)

1993/2003 Shih, Hsu vertex-addition O(n)

1999/2004 Boyer, Myrvold vertex-addition O(n)

2012/2017 S. constr. sequence O(n)

State-of-the-Art:

In Praxis am schnellsten (100.000 Kanten in ca. 0.1 Sekunden); 2007 in OGDF

Zertifizierend: Geben planare Einbettung oder Kuratowski-Teilgraph aus.

Historie Planaritätstests

hier

(7)

© 17.01.19 Jens M. Schmidt

OGDF-Implementierung

(8)

© 17.01.19 Jens M. Schmidt

T := DFS-Baum, identifiziere Knoten mit deren DFIs

Für Knoten v sei lowpoint(v) kleinster DFI, der über 0 oder mehr Baumkanten und anschließend genau einer Nichtbaumkante (gerichtet) erreichbar ist.

Berechenbar in Zeit O(n+m) während DFS (bottom-up). wie genau?

Lowpoints

lowpoints

10 4

1

6

5

9 3

2

7 8

1 1 1

4 2

5

5 6

6

6

(9)

© 17.01.19 Jens M. Schmidt

Planare Graphen, Zeichnungen und Rotationssysteme

Algorithmus von Boyer-Myrvold, Walkup, Walkdown

Korrektheit

Laufzeit O(n)

Folgerungen

Überblick

(10)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Algorithmus

(11)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Algorithmus

2

4 5

6 1

3

7

(12)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Virtuelle Wurzel eines Blocks hat genau 1 Kind in T:

Wenn Block=Kante: ok

Andernfalls wäre Block nicht 2-zusammenhängend.

Algorithmus

virtuelle Wurzel virtu elle Wur zel

1

2

3

5 3

2

4 5

6 6 1

3

7

(13)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Algorithmus

1

2

3

5 3

2

4 5

6 6 1

3

7

(14)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Algorithmus

1

2

3

5 3

2

4 5

6 6 1

3

7

(15)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Algorithmus

1

2

3

5 3

2

4 5

6 6 1

3

7

(16)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Algorithmus

1

2

3

5 3

2

4 5

6 6 1

3

7

(17)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Algorithmus

1

2

3

5 3

2

4 5

6 6 1

3

7

(18)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Ein nicht-virtueller Knoten x heißt (rekursiv definiert)

pertinent, falls vx Rückwärtskante ist oder

Algorithmus

stellt als dynamische Information bereit:

1

2

3

5 3

2

4 5

6 6 1

3

7

(19)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Ein nicht-virtueller Knoten x heißt (rekursiv definiert)

pertinent, falls vx Rückwärtskante ist oder

ein Kinderblock von x einen pertinenten Knoten enthält;

Algorithmus

stellt als dynamische Information bereit:

1

2

3 2

4

1

3 3

5 5

6 6

7

(20)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Ein nicht-virtueller Knoten x heißt (rekursiv definiert)

pertinent, falls vx Rückwärtskante ist oder

ein Kinderblock von x einen pertinenten Knoten enthält;

Algorithmus

stellt als dynamische Information bereit:

1

2

3 3

2

4 5

1

3

5 6

6

7

(21)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Ein nicht-virtueller Knoten x heißt (rekursiv definiert)

pertinent, falls vx Rückwärtskante ist oder

ein Kinderblock von x einen pertinenten Knoten enthält;

extern, falls eine Rückwärtskante yx mit y< DFI v existiert oder

Algorithmus

stellt als dynamische Information bereit:

1

2

3 2

4

1

3 3

5 5

6 6

7

(22)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Ein nicht-virtueller Knoten x heißt (rekursiv definiert)

pertinent, falls vx Rückwärtskante ist oder

ein Kinderblock von x einen pertinenten Knoten enthält;

extern, falls eine Rückwärtskante yx mit y< DFI v existiert oder ein Kinderblock von x einen externen Knoten enthält.

Ein Block heißt pertinent / extern, wenn er einen solchen Knoten enthält.

Algorithmus

stellt als dynamische Information bereit:

1

2

3 2

4

1

3 3

5

6 6 5

7

(23)

© 17.01.19 Jens M. Schmidt

G := schlichter zshgnd. Graph mit  3n-5 Kanten (ignoriere weitere)

→ verändert Planarität nicht und bewirkt, dass wir O(n) Kanten haben Block := inkl.max. zshngd. Teilgraph ohne cut-vertex (Kante / 2-zshngd.) Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Algorithmus

1

2

3 2

4

1

3 3

5

6 6 5

7

(24)

© 17.01.19 Jens M. Schmidt

Walkdown(u=5):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

Algorithmus

1

2

3 2

4

1

3 3

5

6 6 5

7

B

(25)

© 17.01.19 Jens M. Schmidt

Walkdown(u=5):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

Algorithmus

1

2

3 2

4

1

3 3

6 5

7

(26)

© 17.01.19 Jens M. Schmidt

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

Algorithmus

1

2

3 2

4

1

3 3

6 5

7

jetzt v=2

nach Walkup(v=2):

(27)

© 17.01.19 Jens M. Schmidt

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

Algorithmus

1

2 2

4

1

3 3

6 5

7

(28)

© 17.01.19 Jens M. Schmidt

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

und traversiere in die Richtung weiter, in der zuerst ein pertinenter Knoten erreichbar ist.

→ kann implizit Block spiegeln

Algorithmus

1

2 2

4

1

3 3

6 5

7

(29)

© 17.01.19 Jens M. Schmidt

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

und traversiere in die Richtung weiter, in der zuerst ein pertinenter Knoten erreichbar ist.

→ kann implizit Block spiegeln

Algorithmus

1

2 2

4

1

3

6

7 3

5

(30)

© 17.01.19 Jens M. Schmidt

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

und traversiere in die Richtung weiter, in der zuerst ein pertinenter Knoten erreichbar ist.

→ kann implizit Block spiegeln

Algorithmus

1

2 2

4

1

3

6

7 3

5

(31)

© 17.01.19 Jens M. Schmidt

1

2 2

4

1

3

6 5

7

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

und traversiere in die Richtung weiter, in der zuerst ein pertinenter Knoten erreichbar ist.

→ kann implizit Block spiegeln

Algorithmus

(32)

© 17.01.19 Jens M. Schmidt

Walkdown(u=3):

B := Block, der v und u enthält.

2 Iterationen: Eine gegen, eine im Uhrzeigersinn (CCW und CW).

Traversiere an B gewurzelte pertinente Blöcke top-down.

Jeden Block an äußerer Fläche in gewählter Richtung.

Regel für jeden erreichten Knoten w, solange w  v:

Falls vorhanden, bette Rückwärtskante vw zur v-Wurzel in gewählter Richtung ein. → verschmilzt Pfad von Blöcken

Falls w pertinenten Kinderblock hat,

steige zu diesem ab

(falls mehrere, zuerst zu nicht-externen),

und traversiere in die Richtung weiter, in der zuerst ein pertinenter Knoten erreichbar ist.

→ kann implizit Block spiegeln

Falls in beiden Richtungen zuerst ein externer nicht

pertinenter Knoten liegt, stoppe CCW und CW-Walkdown mit diesen beiden Stoppknoten.

Stoppe, falls w extern und nicht pertinent

(dann ist w der Stoppknoten des aktuellen Walkdowns, hier Knoten 6)

Algorithmus

1

2 2

4

1

3

6 5

7

(33)

© 17.01.19 Jens M. Schmidt

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Algorithmus

1

2 2

4

1

3

6 5

7

(34)

© 17.01.19 Jens M. Schmidt

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Algorithmus

1

2 2

4

1

3

6 5

7

(35)

© 17.01.19 Jens M. Schmidt

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Algorithmus

1

6 5

7 2

4

3

1

(36)

© 17.01.19 Jens M. Schmidt

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Algorithmus

1

6 5

7 2

4

3

1

(37)

© 17.01.19 Jens M. Schmidt

1

6 5

7 2

4

3

1

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Identifiziere virtuelle Knoten mit realen

Algorithmus

(38)

© 17.01.19 Jens M. Schmidt

1

6 5

7 2

4

3

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Identifiziere virtuelle Knoten mit realen

Gebe komb. Einbettung aus (planar)

Algorithmus

(39)

© 17.01.19 Jens M. Schmidt

Algorithmus [Boyer-Myrvold 2004]:

Berechne DFS-Baum T und dessen lowpoints

Zerlege E(T) in Blöcke entlang cut-vertices

Für Knoten v := n,...,1 (umgekehrte DFI-Reihenfolge)

Für jede Rückwärtskante vw

Walkup(vw) finde einzubettenden Teilgraph

Für jedes Kind u von v in T:

Walkdown(u) bette Rückwärtskanten ein

Falls eine Rückwärtskante nicht eingebettet:

Extrahiere Kuratowski-Teilgraph; STOPP

Identifiziere virtuelle Knoten mit realen

Gebe komb. Einbettung aus (planar)

Algorithmus

(40)

© 17.01.19 Jens M. Schmidt

Walkdown spiegelt implizit Blöcke durch Richtungsänderung bei Abstieg, falls notwendig.

→ hier: C und G

Komplizierteres Walkdown-Beispiel

G

H C

A

D

F E

x

K

H I

J y v

u v

G H

C

A

D E F

x

K

H

I J

y u

v

(41)

© 17.01.19 Jens M. Schmidt

Planare Graphen, Zeichnungen und Rotationssysteme

Algorithmus von Boyer-Myrvold, Walkup, Walkdown

Korrektheit

Laufzeit O(n)

Folgerungen

Überblick

(42)

© 17.01.19 Jens M. Schmidt G

H C

A

D

F E

x

K

H I

J

y v

u

Jede Einbettung einer Rückwärtskante erhält planare Einbettung:

Falls alle eingebettet wurden, ist G planar (und wir erhalten Zeugen dafür).

Was, wenn eine Rückwärtskante von v nicht eingebettet wird?

Korrektheit

Mergeknoten := cut-vertices von B-v Block B

ehemalige Blöcke vor Einbettung von v

(da Schritt v nur inzidente Kanten von v einbettet)

CCW-Stoppknoten x CW-Stoppknoten y

(43)

© 17.01.19 Jens M. Schmidt

Lemma: Falls eine Kante nicht eingebettet wird, enthält G einen Kuratowski-Minor.

Beweis:

Sei w ein pertinenter Knoten, der wegen x und y nicht erreicht wird.

x, y sind zum Stoppzeitpunkt in gemeinsamen Block B; sei r dessen virt. Wurzel Falls STOPP bei Richtungsfindung nach Abstieg: klar. Sonst wurde in den x und y enthaltenen Blöcken jeweils mindestens einmal eingebettet → gleicher Block

B ist 2-zusammenhängend da  3 Knoten x,y,w enthalten

Fall A: r  v.

→ K

3,3

-Minor.

Fall B: w hat pertinenten externen Kinderblock.

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor

x y

u v

w z

B

→ K

3,3

-Minor.

(44)

© 17.01.19 Jens M. Schmidt

p

x

-p

y

-Pfad := Pfad in B, dessen Endknoten p

x

und p

y

jeweils innere Knoten des v- x-w- und v-y-w-Pfades sind, und diese als einzige Bs Außenfläche schneiden.

Falls B keinen p

x

-p

y

-Pfad enthält: <=> {v,w} ist Separationspaar von B

Nach Def. von Walkdown(u) enthält B-v nur Knoten des Teilbaums T(u) von T

→ Jeder x-y-Pfad in G[V(T(u))] enthält w (denn kein solcher verlässt B)

→ Eindeutiger x-y-Pfad in T(u) enthält w

→ w ist DFS-Vorfahre von x oder y und Mergeknoten da cut-vertex von B-v

→ Walkdown(u) besucht w früher als x oder y

→ Falls vw-Kante vorhanden, wurde diese bereits eingebettet

→ w pertinent wegen pertinentem externen Kinderblock → Fall B

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor

v

G H

C

A

D E F

x

K

H

I J

y u

v

x y

u v

w z

(45)

© 17.01.19 Jens M. Schmidt

Sonst enthält B p

x

-p

y

-Pfade:

Sei P der höchste solche, d.h. der, dessen Kanten in der Fläche enthalten sind, die entsteht, wenn aus B die inneren zu v inzidenten Kanten gelöscht werden.

P schneidet B-Außenfläche genau in Endknoten p

x

und p

y

→ Vor Einbettung von v bilden P und untere B-Außenfläche einen Block D

→ p

x

und p

y

sind Mergeknoten bis auf DFI-größeren, wenn beide in Blattblock

→ Der DFI-kleinere (hier p

y

) ist Wurzel von D da Blöcke nur an Wurzeln verschmolzen werden

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor

F

G

H

I J

E D

v

C

u

y

x w

px

py

P

B

x y

u v

w z

(46)

© 17.01.19 Jens M. Schmidt

Fall C: p

x

ist innerer Knoten des v-x-Außenpfades ohne y (oder analog für p

y

).

Sonst ist p

x

=x oder DFS-Vorgänger von x

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor Fall C:

K

3,3

-Minor

x y

u v

w z

x y

w u

px

v

F

G

H

I J

E D

v

C

u

y x

px w

py

P

B

(47)

© 17.01.19 Jens M. Schmidt

Fall C: p

x

ist innerer Knoten des v-x-Außenpfades ohne y (oder analog für p

y

).

Sonst ist p

x

=x oder DFS-Vorgänger von x

Fall D: P enthält inneren Knoten z, von dem ein B-interner Pfad nach v existiert.

Sonst

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor Fall C:

K

3,3

-Minor Fall D:

K

3,3

-Minor

x y

u v

w z

x y

w u

px

v

x y

w u

z

v

F

G

H

I J

E D

v

C

u

y x

px w

py

P

B

(48)

© 17.01.19 Jens M. Schmidt

Fall C: p

x

ist innerer Knoten des v-x-Außenpfades ohne y (oder analog für p

y

).

Sonst ist p

x

=x oder DFS-Vorgänger von x

Fall D: P enthält inneren Knoten z, von dem ein B-interner Pfad nach v existiert.

Sonst

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor Fall C:

K

3,3

-Minor Fall D:

K

3,3

-Minor

x y

w u

z

v

x y

w u

px

x y v

u v

w z

F

G

H

I J

E D

v

C

u

y x

px w

py

P

B

(49)

© 17.01.19 Jens M. Schmidt

Fall C: p

x

ist innerer Knoten des v-x-Außenpfades ohne y (oder analog für p

y

).

Sonst ist p

x

=x oder DFS-Vorgänger von x

Fall D: P enthält inneren Knoten z, von dem ein B-interner Pfad nach v existiert.

Sonst war p

x

bei Erreichen von p

y

im Walkdown(u)

pertinent und extern da in Block C, der x enthält, abgestiegen wurde (existiert, da nicht in Fall C)

1. behandelter Knoten auf Pfad P (sonst Fall D)

→ D-Außenpfad enthält inneren externen Knoten sonst wäre Walkdown zuerst zu w traversiert

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor Fall C:

K

3,3

-Minor Fall D:

K

3,3

-Minor

F

G

H

I J

E D

v

C

u

y x

px w

py

P

B

x y

u v

w z

x y

w u

px

v

x y

w u

z

v

(50)

© 17.01.19 Jens M. Schmidt

Fall C: p

x

ist innerer Knoten des v-x-Außenpfades ohne y (oder analog für p

y

).

Sonst ist p

x

=x oder DFS-Vorgänger von x

Fall D: P enthält inneren Knoten z, von dem ein B-interner Pfad nach v existiert.

Sonst war p

x

bei Erreichen von p

y

im Walkdown(u)

pertinent und extern da in Block C, der x enthält, abgestiegen wurde (existiert, da nicht in Fall C)

1. behandelter Knoten auf Pfad P (sonst Fall D)

→ D-Außenpfad enthält inneren externen Knoten sonst wäre Walkdown zuerst zu w traversiert

→ Fall E

Korrektheit

x y

u v

w r

Fall B:

K

3,3

-Minor Fall A:

K

3,3

-Minor Fall C:

K

3,3

-Minor Fall D:

K

3,3

-Minor Fall E:

K

5

-Minor

x y

u v

w z

x y

w u

px

v

x y

w u

z

v

x y

u

v

w F

G

H

I J

E D

v

C

u

y x

px w

py

P

B

(51)

© 17.01.19 Jens M. Schmidt

Planare Graphen, Zeichnungen und Rotationssysteme

Algorithmus von Boyer-Myrvold, Walkup, Walkdown

Korrektheit

Laufzeit O(n)

Folgerungen

Überblick

(52)

© 17.01.19 Jens M. Schmidt

Theorem: Der Boyer-Myrvold Algorithmus hat Laufzeit O(n).

Beweis:

Sei v einzubettender Knoten.

Wie findet Walkup(vw) pertinente Knoten+Blöcke effizient?

Starte bei w und traversiere Blockaußenflächen parallel

Bei Erreichen der virtuellen Wurzel iteriere mit Vaterblock

→ Laufzeit = O(Summe der kürzeren Außenpfade)

Flächen-Konto:

Verrechne entstehende Laufzeitkosten mit den inneren Kanten der später von vw eingeschlossenen Fläche

Diese werden nie mehr besucht.

→ Walkup(vw) hat amortisiert Laufzeit O(1)

(unabhängig von potentiellen Spiegelungen der Blöcke)

Problem: Walkup(vw') kann gleiche Blöcke wieder traversieren

Laufzeit O(n)

v

w

v u

w‘

(53)

© 17.01.19 Jens M. Schmidt

Theorem: Der Boyer-Myrvold Algorithmus hat Laufzeit O(n).

Beweis:

Sei v einzubettender Knoten.

Wie findet Walkup(vw) pertinente Knoten+Blöcke effizient?

Starte bei w und traversiere Blockaußenflächen parallel

Bei Erreichen der virtuellen Wurzel iteriere mit Vaterblock

→ Laufzeit = O(Summe der kürzeren Außenpfade)

Flächen-Konto:

Verrechne entstehende Laufzeitkosten mit den inneren Kanten der später von vw eingeschlossenen Fläche

Diese werden nie mehr besucht.

→ Walkup(vw) hat amortisiert Laufzeit O(1)

(unabhängig von potentiellen Spiegelungen der Blöcke)

Problem: Walkup(vw') kann gleiche Blöcke wieder traversieren

Lösung: Markiere jeden besuchten Knoten mit v + stoppe Traversierung an mit v markierten Knoten

Externe Knoten: durch lowpoints in Zeit O(1) testbar

Laufzeit O(n)

v

w

v u

w‘

(54)

© 17.01.19 Jens M. Schmidt

Wie spiegelt Walkdown(u) Blöcke effizient?

Speichere in virtueller Wurzel, ob Block gespiegelt zu interpretieren ist.

→ künftige Traversierungen werden dadurch in Zeit O(1) invertiert

Kosten für Walkdown-Traversierung und Einbetten von Rückwärtskanten vw

Jeder Schritt amortisiert in Zeit O(1) durch Face-konto, bis auf:

Kosten für Pfade P vom letzten eingebetteten Knoten bis Stoppknoten x

P kann in Folgeschritten immer wieder traversiert werden → ineffizient

Lösung: Füge jeweils Abkürzungskante vx ein (  2 pro Block, erhält Planarität)

→ Damit ist Walkdownrichtung nach Abstieg in Block in Zeit O(1) entscheidbar.

Laufzeit O(n)

F

G

H

I J

E D

v

C

u

x

y

(55)

© 17.01.19 Jens M. Schmidt

Planare Graphen, Zeichnungen und Rotationssysteme

Algorithmus von Boyer-Myrvold, Walkup, Walkdown

Korrektheit

Laufzeit O(n)

Folgerungen

Überblick

(56)

© 17.01.19 Jens M. Schmidt

Korrektheitsbeweis ergibt entweder planare Einbettung oder K

3,3

- oder K

5

-Minor.

Nach Eulerformel ist im letzteren Fall der Graph nicht planar.

→ Korollar [Wagner 1937]: Ein Graph ist genau dann planar, falls er weder K

3,3

noch K

5

als Minor enthält.

Nach Übung äquivalent zu:

→ Korollar [Kuratowski 1930]: Ein Graph ist genau dann planar, falls er weder eine K

3,3

-Unterteilung noch eine K

5

-Unterteilung enthält.

Folgerungen

(57)

© 17.01.19 Jens M. Schmidt

Berechne (kanten-)maximalen planaren Teilgraph: NP-schwer

Berechne inklusions-maximalen planaren Teilgraph: O(m) [Djidjev 2006]

Verallgemeinerungen?

F

G

H

I J

E D

v

C

u

x

y

Referenzen

ÄHNLICHE DOKUMENTE