01. Vorlesung (14.04.2015)

Werbung
Algorithmische Graphentheorie
Sommersemester 2015
1. Vorlesung
Rundreiseprobleme
1
Prof.
Dr. Alexander Wolff
Lehrstuhl für Informatik I
Übersicht
I) Eulerkreise
2
Übersicht
I) Eulerkreise
II) Hamiltonkreise
2
Übersicht
I) Eulerkreise
II) Hamiltonkreise
2
III) Handlungsreisende
Übersicht
I) Eulerkreise
III) Handlungsreisende
II) Hamiltonkreise
2
(nächste Woche!)
I) Eulerkreise
Def.
3
Sei G ein (un-)gerichteter Graph.
Ein Eulerkreis (-weg ) in G ist ein Kreis (Weg),
der jede Kante genau einmal durchläuft.
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.
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]
3
Basel 1707 – St. Petersburg 1783
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]
Altstadt
Pregel
Kneiphof
3
Basel 1707 – St. Petersburg 1783
Vorstadt
Alter Pregel
Lohmse
Neuer Pregel
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]
Altstadt
Pregel
Kneiphof
3
Basel 1707 – St. Petersburg 1783
Vorstadt
Alter Pregel
Lohmse
Neuer Pregel
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]
Altstadt
Pregel
Kneiphof
3
Basel 1707 – St. Petersburg 1783
Vorstadt
Alter Pregel
Lohmse
Neuer Pregel
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
A
3
Basel 1707 – St. Petersburg 1783
B
D
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
Ist dieser
(Multi-) Graph
eulersch?
3
Basel 1707 – St. Petersburg 1783
A
B
D
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.
Geburtsstunde der
Graphentheorie!
Königsberger Brückenproblem [Euler, 1741]
C
Ist dieser
(Multi-) Graph
eulersch?
3
Basel 1707 – St. Petersburg 1783
A
B
D
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.
Geburtsstunde der
Graphentheorie!
Königsberger Brückenproblem [Euler, 1741]
C
Ist dieser
(Multi-) Graph
eulersch?
3
Basel 1707 – St. Petersburg 1783
A
B
Angenommen ja.
D
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
Ist dieser
(Multi-) Graph
eulersch?
3
Basel 1707 – St. Petersburg 1783
A
B
Geburtsstunde der
Graphentheorie!
Angenommen ja.
⇒ Es gibt einen
Eulerkreis K.
D
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?
3
Basel 1707 – St. Petersburg 1783
A
B
Geburtsstunde der
Graphentheorie!
⇒ Es gibt einen
Eulerkreis K.
D
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?
3
Basel 1707 – St. Petersburg 1783
A
B
Geburtsstunde der
Graphentheorie!
⇒ Es gibt einen
Eulerkreis K.
D
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?
3
Basel 1707 – St. Petersburg 1783
A
B
Geburtsstunde der
Graphentheorie!
⇒ Es gibt einen
Eulerkreis K.
D
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?
3
Basel 1707 – St. Petersburg 1783
A
B
Geburtsstunde der
Graphentheorie!
⇒ Es gibt einen
Eulerkreis K.
D
Aber deg D = 3,
also ungerade.
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?
3
Basel 1707 – St. Petersburg 1783
A
B
Geburtsstunde der
Graphentheorie!
⇒ Es gibt einen
Eulerkreis K.
D
Aber deg D = 3,
also ungerade.
Satz von Euler für ungerichtete Graphen
Satz.
4
Sei G ein ungerichteter und zshg. Graph. Dann gilt:
Satz von Euler für ungerichtete Graphen
Satz.
4
Sei G ein ungerichteter und zshg. Graph. Dann gilt:
G eulersch ⇔ alle Knoten haben geraden Grad.
Satz von Euler für ungerichtete Graphen
Satz.
4
Sei G ein ungerichteter und zshg. Graph. Dann gilt:
G eulersch ⇔ alle Knoten haben geraden Grad.
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.
”
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.
”
⇐“
”
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.
”
⇐“ Sei v0 ∈ V .
”
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.
”
v0
⇐“ Sei v0 ∈ V .
”
4
G
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
v1
G
⇐“ Sei v0 ∈ V . Wähle einen Nachbarn v1 ∈ Adj[v0 ].
”
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.
”
v0
v1
G
⇐“ Sei v0 ∈ V . Wähle einen Nachbarn v1 ∈ Adj[v0 ].
”
Markiere die Kante v0 v1 als gebraucht.
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
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.
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
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
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
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 .
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
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 .
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.
4
Alle Knotengrade gerade ⇒ vk = v0 ,. d.h.
K := hv0 , v1 , . . . , vk−1 , v0 i ist Kreis.
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.
4
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.
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
G
⇐“ Im Restgraphen (V, E \ E(K)) haben alle Kno”
ten 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
G
⇐“ Im Restgraphen (V, E \ E(K)) haben alle Kno”
ten geraden Grad.– aber er muss nicht zshg. sein!
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
G
⇐“ Im Restgraphen (V, E \ E(K)) haben alle Kno”
ten geraden Grad.– aber er muss nicht zshg. sein!
Wie würden Sie den Beweis zu Ende bringen?
Diskutieren Sie mit Ihren NachbarInnen!
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
G
⇐“ Im Restgraphen (V, E \ E(K)) haben alle Kno”
ten geraden Grad.– aber er muss nicht zshg. sein!
Durchlaufe K noch einmal.
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!
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.
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!
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.
5
Durchlaufe weiter den neuen Kreis K (bis v0 ).
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!
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.
5
Durchlaufe weiter den neuen Kreis K (bis v0 ).
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!
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.
5
Durchlaufe weiter den neuen Kreis K (bis v0 ).
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.
5
Durchlaufe weiter den neuen Kreis K (bis v0 ).
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.
Eulerkreis, ganz schnell
Satz.
6
Sei G = (V, E) ein ungerichteter und zshg. Graph.
Eulerkreis, ganz schnell
Satz.
6
Sei G = (V, E) ein ungerichteter und zshg. Graph.
(i) Man kann in O(E) Zeit testen, ob G eulersch ist.
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.
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.
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:
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 .
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 .
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
Reihenfolge
unbenutzt; falls alle zu v inzidenten Kanten
entsprechend
Adj[v]!
benutzt sind, sei curr[v] = nil .
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
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
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
6
curr[v]
Gesamtanzahl
Zeigeränderungen
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
6
curr[v]
Gesamtanzahl
Zeigeränderungen
P
= v∈V deg v
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
6
curr[v]
Gesamtanzahl
Zeigeränderungen
P
= v∈V deg v
= 2|E|
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
6
curr[v]
Gesamtanzahl
Zeigeränderungen
P
= v∈V deg v
= 2|E|
Satz von Euler für gerichtete Graphen
Satz.
Sei G ein ungerichteter und zshg. Graph. Dann:
G eulersch
7
⇔
Satz von Euler für gerichtete Graphen
Satz.
7
Sei G ein ungerichteter und zshg. Graph. Dann:
für jeden Knoten v gilt:
G eulersch ⇔
deg v gerade.
Satz von Euler für gerichtete Graphen
Satz.
7
schwach
| {z } ?
Sei G ein ungerichteter und zshg. Graph. Dann:
für jeden Knoten v gilt:
G eulersch ⇔
deg v gerade.
Satz von Euler für gerichtete Graphen
Satz.
schwach
| {z } ?
Sei G ein ungerichteter und zshg. Graph. Dann:
für jeden Knoten v gilt:
G eulersch ⇔
deg v gerade.
7
? ) Der unterliegende ungerichtete Graph ist zusammenhängend.
Satz von Euler für gerichtete Graphen
Satz.
7
schwach
| {z } ?
Sei G ein ungerichteter und zshg. Graph. Dann:
für jeden Knoten v gilt:
G eulersch ⇔
deg v gerade.
Satz von Euler für gerichtete Graphen
Satz.
7
schwach
| {z } ?
Sei G ein ungerichteter und zshg. Graph. Dann:
für jeden Knoten v gilt:
G eulersch ⇔
indeg v = outdeg v.
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.
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.
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.
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.
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.
Kosten fürs Zeigerbewegen:
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
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|.
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|.
7
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
8
1805 Dublin – 1865 Dunsink
(c) 2002 James Dalgety, The Puzzle Museum
A Voyage Round the World
Frage:
9
Ist das Skelett des Dodekaeders hamiltonsch?
A Voyage Round the World
Frage:
Ist das Skelett des Dodekaeders hamiltonsch?
Antwort: Ja!
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 :-)
9
Bad News
Satz.
10
[Karp, 1972]
Bad News
Satz.
10
[Karp, 1972]
(Un)gerichteter Hamiltonkreis und -weg sind NP-schwer.
Bad News
Satz.
[Karp, 1972]
(Un)gerichteter Hamiltonkreis und -weg sind NP-schwer.
Beweis. SAT ist NP-schwer [Cook, 1971]
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
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
– lässt sich (in Polynomialzeit) reduzieren auf“
”
– ist höchstens so schwer wie“
”
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?
10
– lässt sich (in Polynomialzeit) reduzieren auf“
”
– ist höchstens so schwer wie“
”
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.
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.
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.
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.
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.
10
Satz von Bondy und Chvátal [1976]
Satz.
11
Sei G = (V, E) ein ungerichteter Graph mit |V | ≥ 3.
Seien u und v nicht-adjazente Knoten von G mit
deg u + deg v ≥ n := |V |. Dann gilt:
G hamiltonsch ⇔ G + uv hamiltonsch.
Satz von Bondy und Chvátal [1976]
Satz.
11
Sei G = (V, E) ein ungerichteter Graph mit |V | ≥ 3.
Seien u und v nicht-adjazente Knoten von G mit
deg u + deg v ≥ n := |V |. Dann gilt:
G hamiltonsch ⇔ G + uv hamiltonsch.
Satz von Bondy und Chvátal [1976]
Satz.
11
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.
Satz von Bondy und Chvátal [1976]
Satz.
Beweis.
11
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.
Satz von Bondy und Chvátal [1976]
Satz.
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.
Beweis.
⇒“ Jeder HK in G ist auch ein HK in G + uv.
”
11
Satz von Bondy und Chvátal [1976]
Satz.
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.
Beweis.
⇒“ Jeder HK in G ist auch ein HK in G + uv.
”
11
Satz von Bondy und Chvátal [1976]
Satz.
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.
Beweis.
⇒“ Jeder HK in G ist auch ein HK in G + uv.
”
⇐“ O.B.d.A. benutzt jeder HK in G + uv Kante uv.
”
11
Satz von Bondy und Chvátal [1976]
Satz.
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.
Beweis.
⇒“ 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.
11
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Beweis.
v2
u
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
Beweis.
v2
u
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
Beweis.
v2
u
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
Es gilt |A| = degG v − 1
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
Es gilt |A| = degG v − 1 und |B| = degG u − 1.
v
vn−1
11
vn−2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Es gilt |A| = degG v − 1 und |B| = degG u − 1.
⇒ |A| + |B| = degG v + degG u − 2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Es gilt |A| = degG v − 1 und |B| = degG u − 1.
⇒ |A| + |B| = degG v + degG u − 2 ≥
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Es gilt |A| = degG v − 1 und |B| = degG u − 1.
⇒ |A| + |B| = degG v + degG u − 2 ≥ n − 2
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Es gilt |A| = degG v − 1 und |B| = degG u − 1.
⇒ |A| + |B| = degG v + degG u − 2 ≥ n − 2
aber |A ∪ B| ≤ n − 3
Satz von Bondy und Chvátal [1976]
Satz.
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.
K v3
Betrachte A = i ∈ {3, . . . , n − 1} | uvi ∈ E
und
B = i ∈ {3, . . . , n − 1} | vvi−1 ∈ E .
Beweis.
v2
u
v
vn−1
11
vn−2
Es gilt |A| = degG v − 1 und |B| = degG u − 1.
⇒ |A| + |B| = degG v + degG u − 2 ≥ n − 2
aber |A ∪ B| ≤ n − 3 ⇒ es gibt ein i ∈ A ∩ B.
Satz von Bondy und Chvátal [1976]
Satz.
⇒“
”
⇐“
”
K v3
vi−1
Beweis.
v2
u
v
vn−1
11
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 v − 1 und |B| = degG u − 1.
vn−2 ⇒ |A| + |B| = degG v + degG u − 2 ≥ n − 2
aber |A ∪ B| ≤ n − 3 ⇒ es gibt ein i ∈ A ∩ B.
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 v − 1 und |B| = degG u − 1.
vn−1
vn−2 ⇒ |A| + |B| = degG v + degG u − 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. 11
Satz von Dirac
Satz.
12
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.
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.
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!
12
Herunterladen