Algorithmische Graphentheorie

Werbung
1
Algorithmische Graphentheorie
Sommersemester 2016
1. Vorlesung
Rundreiseprobleme
Prof. Dr. Alexander Wolff
Lehrstuhl für Informatik I
2
Übersicht
I) Eulerkreise
III) Handlungsreisende
II) Hamiltonkreise
(nächste Woche!)
3
I) Eulerkreise
Def.
Sei G ein (un-)gerichteter Graph.
Ein Eulerkreis (-weg ) in G ist ein Kreis (Weg),
der jede Kante genau einmal durchläuft.
Ein Graph heißt eulersch, falls er einen Eulerkreis enthält.
Königsberger Brückenproblem [Euler, 1741]
C
Angenommen ja.
K
Ist dieser
(Multi-) Graph
eulersch?
A
B
Basel 1707 – St. Petersburg 1783
Geburtsstunde der
Graphentheorie!
⇒ Es gibt einen
Eulerkreis K.
D
Aber deg D = 3,
also ungerade.
4
Satz von Euler für ungerichtete Graphen
Satz.
Sei G ein ungerichteter und zshg. Graph. Dann gilt:
G eulersch ⇔ alle Knoten haben geraden Grad.
Beweis.
⇒“ klar.
”
vk = v0
K
v1
v
G
⇐“ Sei v0 ∈ V . Wähle einen Nachbarn v1 ∈ Adj[v0 ].
”
Markiere die Kante v0 v1 als gebraucht.
Wiederhole diesen Schritt, bis aktueller Knoten
vk nur noch zu gebrauchten Kanten inzident ist.
Alle Knotengrade gerade ⇒ vk = v0 ., d.h.
K := hv0 , v1 , . . . , vk−1 , v0 i ist Kreis.
⇒ in (V, E(K)) haben alle Knoten geraden Grad.
5
Satz von Euler für ungerichtete Graphen
Satz.
Sei G ein ungerichteter und zshg. Graph. Dann gilt:
G eulersch ⇔ alle Knoten haben geraden Grad.
Beweis.
⇒“ klar.
”
v0
K
v
K0
G
⇐“ Im Restgraphen (V, E \ E(K)) haben alle Kno”
ten geraden Grad.– aber er muss nicht zshg. sein!
Beweis
konstruktiv.
Laufzeit der
Konstruktion?
Durchlaufe K noch einmal.
Wenn ein Knoten v ∈ K noch eine unbenutzte
Kante besitzt, finde einen neuen Kreis K 0 durch
v und füge ihn in K ein.
Durchlaufe weiter den neuen Kreis K (bis v0 ).
6
Eulerkreis, ganz schnell
Satz.
Sei G = (V, E) ein ungerichteter und zshg. Graph.
(i) Man kann in O(E) Zeit testen, ob G eulersch ist.
(ii) Falls G eulersch ist,
so kann man in O(E) Zeit einen Eulerkreis finden.
Beweis. (ii) Implementiere den Beweis des Satzes von Euler.
Trick: Verwalte in jedem Knoten v einen Zeiger curr[v],
der auf den ersten Nachbarn w zeigt mit vw
unbenutzt; falls alle zu v inzidenten Kanten
benutzt sind, sei curr[v] = nil .
Beispiel:
v
curr[v]
Gesamtanzahl
Zeigeränderungen
P
= v∈V deg v
= 2|E|
7
Satz von Euler für gerichtete Graphen
Satz.
Satz.
schwach
| {z } ?
Sei G ein ungerichteter und zshg. Graph. Dann:
für jeden Knoten v gilt:
G eulersch ⇔
indeg v = outdeg v.
schwach
| {z }
Sei G = (V, E) ein ungerichteter und zshg. Graph.
(i) Man kann in O(E) Zeit testen, ob G eulersch ist.
(ii) Falls G eulersch ist,
so kann man in O(E) Zeit einen Eulerkreis finden.
Beweis. Im Prinzip wie im ungerichteten Fall.
Man muss einen curr-Zeiger allerdings nur dann
weiterrücken, bevor man die aktuelle Kante benutzt.
P
Kosten fürs Zeigerbewegen:
v∈V outdeg v = |E|.
8
II) Hamiltonkreise
Def.
Sei G ein (un-)gerichteter Graph.
Ein Hamiltonkreis (-weg ) in G ist ein Kreis (Weg),
der jeden Knoten genau einmal durchläuft.
Ein Graph heißt hamiltonsch, falls er einen
Hamiltonkreis enthält.
Sir William Rowan Hamilton
Icosian Game / Traveller’s Dodecahedron
1805 Dublin – 1865 Dunsink
(c) 2002 James Dalgety, The Puzzle Museum
9
A Voyage Round the World
Frage:
Ist das Skelett des Dodekaeders hamiltonsch?
Antwort: Ja!
PS: Die Skelette der vier anderen platonischen Körper auch :-)
10
Bad News
Satz.
[Karp, 1972]
(Un)gerichteter Hamiltonkreis und -weg sind NP-schwer.
Beweis. SAT ist NP-schwer [Cook, 1971]
SAT p CLIQUE p VC p gerHK p HK
Was nun?
– lässt sich (in Polynomialzeit) reduzieren auf“
”
– ist höchstens so schwer wie“
”
• Finde Graphenklassen, in denen alle Graphen hamiltonsch sind.
• Finde möglichst große Graphenklassen, in denen das HamiltonkreisProblem polynomiell lösbar ist.
• Finde möglichst spezielle Graphenklassen, in denen das
Hamiltonkreis- Problem NP-schwer ist.
• Finde notwendige oder hinreichende Bedingungen dafür, dass ein
Graph hamiltonsch ist.
11
Satz von Bondy und Chvátal [1976]
Satz.
⇒“
”
⇐“
”
K v3
vi−1
K0
Beweis.
v2
u
v
Sei G = (V, E) ein ungerichteter Graph mit |V | ≥ 3.
Seien u und v nicht-adjazente Knoten von G mit
:= (V, E ∪ {uv})
deg u + deg v ≥ n := |V |. Dann gilt:
G hamiltonsch ⇔ G + uv hamiltonsch.
Jeder HK in G ist auch ein HK in G + uv.
O.B.d.A. benutzt jeder HK in G + uv Kante uv.
Sei K = hu = v1 , v2 , . . . , vn = v, ui ein solcher.
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
vi Es gilt |A| = degG u − 1 und |B| = degG v − 1.
vn−1
vn−2 ⇒ |A| + |B| = degG u + degG v − 2 ≥ n − 2
aber |A ∪ B| ≤ n − 3 ⇒ es gibt ein i ∈ A ∩ B.
⇒ K 0 = hu, v2 , . . . , vi−1 , v, vn−1 , . . . , vi , ui ist HK in G. 12
Satz von Dirac
Satz.
Sei G = (V, E) ein ungerichteter Graph mit |V | ≥ 3.
Seien u und v nicht-adjazente Knoten von G mit
deg u + deg v ≥ |V |. Dann gilt:
G hamiltonsch ⇔ G + uv hamiltonsch.
Kor.
Sei G = (V, E) ein ungerichteter Graph mit |V | ≥ 3.
Falls jeder Knoten von G Grad ≥ |V |/2 hat,
so ist G hamiltonsch.
Beweis. Probieren Sie’s!
Herunterladen