Ferienkurs zur algorithmischen diskreten

Werbung
Ferienkurs zur algorithmischen diskreten
Mathematik
von Dipl.-Math. Wolfgang Kinzner
Allgemeine Informationen
• Zeitraum des Kurses: 2.4.bis 4.4.2012
• Raum: MI 03.06.011
• Meine E-Mail: who [email protected]
• Homepage zum Kurs: http://ferienkurse.ma.tum.de/Ferienkurse/WiSe1112/AlgDM
Inhaltsverzeichnis
1 Grundlagen der algorithmischen Graphentheorie
2
2 Kürzeste Wege
7
3 Minimal aufspannende Bäume und Matroide
11
4 Flüsse
16
5 Komplextitätstheorie
20
6 Matchings und TSP-Problem
22
1
1
Grundlagen der algorithmischen Graphentheorie
Übung 1 (Asymptotisches Zählen)
Seien f, g : N → R+
0 zwei Funktionen. Sind die folgenden Aussagen richtig oder falsch?
(a) f (n) = Θ(g(n))
⇐=
(b) f (n) = o(g(n))
=⇒
(n)
limn→∞ fg(n)
< ∞.
f (n) = O(g(n)) und f (n) 6= Θ(g(n)).
1
n
= o(nǫ ) für 0 < ǫ < 1.
√
(d) n2 + 5n − 7 n + (−1)n ln n = Θ(n2 ).
(c)
(e) 10n = O(2n ).
(f ) Es gibt zwei Funktionen f, g, für die weder f (n) = O(g(n)) noch g(n) = O(f (n)) gilt.
2
Übung 2 (Grundlegende Definitionen zu Graphen)
Sind folgende Aussagen richtig oder falsch?
(a) Stabile Mengen sind Wälder, Pfade sind Bäume.
(b) Ein Graph ist genau dann ein Baum, wenn je zwei Knoten durch einen Pfad verbunden sind.
(c) Ein Graph mit n Knoten und n − 1 Kanten ist ein Baum.
(d) Ein Wald mit n Knoten und n − 1 Kanten ist ein Baum.
(e) Bäume und Wälder sind bipartit.
3
Übung 3 (Adjazenzmatrix)
Sei G ein ungerichteter Graph mit n Knoten, der durch seine Adjazenzmatrix A = (aij ) ∈ Rn×n
gegeben ist. Zeigen Sie, dass man mit einer Matrix-Multiplikation und O(n2 ) weiteren Schritten
überprüfen kann, ob G ein Dreieck besitzt.
4
Übung 4 (Breiten- und Tiefensuche (1))
Sei G ein Graph. Sind die folgenden Aussagen richtig oder falsch?
(a) Der Baum, der durch Tiefensuche in G gefunden wird, hat immer Maximalgrad höchstens 3.
(b) In dem Baum, der durch Breitensuche in G gefunden wird, kann es Knoten mit höherem Grad
als 3 geben.
(c) Liefern DFS und BFS denselben Spannbaum, dann war G bereits selber ein Baum.
(d) Liefern DFS und BFS bei gleichem Startknoten denselben Spannbaum, dann war G bereits selber
ein Baum.
(e) In jedem Graphen mit mindestens zwei Knoten gibt es zwei Knoten v1 6= v2 , die man als Startknoten von BFS bzw. DFS verwenden kann, so dass die Algorithmen den gleichen Spannbaum
erzeugen.
(f ) In jedem bipartiten Graphen mit mindestens zwei Knoten gibt es zwei Knoten v1 6= v2 , die
man als Startknoten von BFS bzw. DFS verwenden kann, so dass die Algorithmen den gleichen
Spannbaum erzeugen.
5
Übung 5 (Breiten- und Tiefensuche (2))
Sei G = (V, E) ein Graph mit |V | = n. Sind die folgenden Aussagen richtig oder falsch?
(a) Man kann mit DFS/BFS in O(n) testen, ob G kreisfrei ist.
(b) Man kann mit DFS/BFS in O(n) testen, ob G zusammenhängend ist.
(c) Man kann mit DFS/BFS in O(n) testen, ob G ein Baum ist.
(d) Man kann mit DFS/BFS in O(n) testen, ob G bipartit ist.
6
2
Kürzeste Wege
Übung 6 (Kürzeste Wege)
Sei G = (V, E, ℓ) ein gewichteter Graph und {s, t} ∈ V . Sind die folgenden Aussagen richtig oder
falsch?
(a) Ein kürzester s, t-Weg ist eindeutig.
(b) Ist ℓ injektiv, so ist ein kürzester s, t-Weg eindeutig.
(c) Der aus zwei kürzesten s, v- und v, t-Wegen zusammengesetzte Weg ist ein kürzester s, t-Weg.
(d) Treffen sich zwei kantendisjunkte kürzeste s, t-Wege in v ∈ V \{s, t}, dann können die jeweiligen
s, v- bzw. v, t-Teilwege zu zwei weiteren kürzesten s, t-Wegen kombiniert werden.
(e) Ist ℓ : E → N injektiv, dann kann es ein solches v nicht geben.
7
Übung 7 (Dijkstra-Algorithmus)
Sei G = (V, A, ℓ) entsprechend nachfolgender Skizze, in der nur die beiden eingetragenen Kantengewichte gegeben seien. In der Tabelle daneben sehen sie, in welcher Reihenfolge der DijkstraAlgorithmus die Knoten markiert und welchen Distanzwert die Knoten zum Zeitpunkt des Markierens
besitzen.
v1
Knoten
s
v1
v3
v2
v4
t
v3
6
s
t
v2
1
v4
Distanzwert
0
3
4
?
6
< 10
Geben sie für alle Kanten die größtmöglichen Teilmengen von N = {1, 2, 3, . . .} an, aus denen die
fehlenden Kantengewichte stammen können (eventuell in Abhängigkeit voneinander), und geben sie
die daraus resultierenden Distanzwerte für v2 und t an.
8
Übung 8 (Floyd-Warshall-Algorithmus (1))
Gegeben sei der folgende gerichtete, gewichtete Graph G = (V, E, ℓ) mit V = {v1 , ..., v6 } und E =
{e1 , ..., e8 }. Gesucht ist ein kürzester v1 , v6 -Weg und dessen Länge.
v2
3
v4
2
2
v1
-3
1
v3
v6
-2
1
5
v5
(a) Zeigen Sie, dass der Dijkstra-Algorithmus für dieses Problem unbrauchbar ist.
(b) Berechnen Sie mithilfe des Floyd-Warshall-Algorithmus so einen Weg und dessen Länge.
9
Übung 9 (Floyd-Warshall-Algorithmus (2))
Was passiert beim Floyd-Warshall Algorithmus zur Bestimmung (kürzester) s, t-Distanzen, wenn es
zwar einen Zyklus negativer Länge gibt, dieser jedoch nicht von s aus erreichbar ist oder t nicht von
diesem erreicht werden kann? Geben Sie eine direkte Modifikation des Algorithmus an, so dass die
(kürzeste) s, t-Distanz gefunden wird.
10
3
Minimal aufspannende Bäume und Matroide
Übung 10 (MST-Algorithmen)
(a) G und ℓ können so gewählt sein, dass G einen Spannbaum T enthält, der vom KruskalAlgorithmus nicht konstruiert werden kann, egal wie dieser eingestellt wird.
(b) G und ℓ können so gewählt sein, dass G einen Spannbaum T enthält, der bei entsprechdem
Startknoten vom Prim-Algorithmus nicht konstruiert werden kann, egal wie dieser eingestellt
wird.
(c) Ist ℓ injektiv, so liefern der Prim-Algorithmus und der Kruskal-Algorithmus immer dasselbe
Ergebnis.
(d) Ist ℓ injektiv, dann wird der minimale Spannbaum auch immer vom (modifizierten) DijkstraAlgorithmus korrekt erzeugt.
11
Übung 11 (Reverse Kruskal)
Betrachten Sie den folgenden Algorithmus:
Input: Zusammenhängender Graph G = (V, E, ℓ), Längenfunktion ℓ : E → R≥0
Output: Baum T = (V, F )
ReverseKruskal(G, ℓ)
(1) Sortiere alle Kanten in E so, daß ℓ(e1 ) ≤ . . . ≤ ℓ(em )
(2) for i = m to 1 do
(3)
if G − ei zusammenhängend then G := G − ei
Zeigen Sie:
(a) Reverse Kruskal erzeugt einen aufspannenden Baum von G.
(b) Ist ℓ injektiv, T R der von Reverse Kruskal erzeugte Baum und T der durch den klassischen
Algorithmus von Kruskal erzeugte Baum dann gilt für die Kante em mit dem größten Gewicht
in E: em ist Kante in T R ⇐⇒ em ist Kante in T .
12
Übung 12 (Minimal aufspannende Bäume)
Sei G = (V, E, ℓ) ein gewichteter und zusammenhängender Graph.
Beweisen Sie: Jeder MST ist ein spannender Baum mit kleinster größter Kante.
13
Übung 13 (Matroide)
Sei G = (V, A, ℓ) ein gerichteter, gewichteter Graph mit Gewichtsfunktion ℓ : A → R>0 und sei
s ∈ V . Wir defnieren
P := {P : P ist gerichteter Weg in G mit Startknoten s}
und
I := {A ⊆ P : (∀P1 , P2 ∈ A mit P1 6= P2 : P1 und P2 haben verschiedene Endknoten g)}
das Mengensystem, das eine Menge A von Wegen aus P genau dann als Element enthält, wenn alle
Wege aus A verschiedene Endknoten haben.
Zeigen Sie, dass M = (P, I) ein Matroid ist.
14
Übung 14 (Unabhängigkeitssystem und Rangquotient)
Sei G = (V, E) ein Graph mit E 6= ∅. Eine Teilmenge M ⊆ E heißt Matching, falls für alle e, e′ ∈ M
mit e 6= e′ gilt, dass e ∩ e′ = ∅. Wir definieren I := {M ⊆ E : M Matching}.
(a) Zeigen Sie, dass U := (E, I) ein Unabhängigkeitssystem, aber i.A. kein Matroid ist.
(b) Zeigen Sie, dass ein inklusionsmaximales Matching M ′ stets der folgenden Beziehung genügt:
|M ′ | ≥
(c) Beweisen Sie ρ(U) ≥ 21 .
15
1
max |M|.
2 M ∈I
4
Flüsse
Übung 15 (MaxFlow-MinCut-Theorem)
Bestimmen Sie einen minimalen Schnitt im folgenden Graphen. Wie groß ist der maximale s,t-Fluss?
Können Sie anhand eines oder mehrerer minimaler Schnitte einen maximalen s,t-Fluss bestimmen?
2
v1
2
5
s
1
7
v3
3
4
6
v4
v2
4
t
5
3
16
v5
6
Übung 16 (Ford-Fulkerson-Algorithmus)
17
Übung 17 (Edmonds-Karp-Algorithmus)
Die folgende Abbildung zeigt ein Netzwerk N mit seinen Flusskapazitäten.
4
v1
6
5
8
s
6
v3
6
v4
7
3
t
5
v2
Benutzen Sie den Algorithmus von Edmonds-Karp, um einen maximalen Fluss in N zu finden. Skizzieren Sie dazu die entsprechenden Restenetzwerke und skizzieren Sie jeweils darin die Breitensuche
zum Finden eines augmentierenden Weges.
18
Übung 18 (Diskrete Tomographie und Edmonds-Karp)
Es seien zwei Folgen (ai )i∈[n] , (bi )i∈[n] von natürlichen Zahlen gegeben. Gesucht ist ein gerichteter
Graph G = ([n], A), in dem jeder Knoten i den Aus-Grad ai und den Ein-Grad bi hat.
Gegen sie ein polynomielles Verfahren an, das eine mögliche Adjazenzmatrix von G berechnet oder
feststellt, dass eine solche nicht existiert.
19
5
Komplextitätstheorie
Übung 19 (Transformation)
Betrachten Sie die folgenden Entscheidungsprobleme:
• Partition (P):
Seien n und α1 , . . . , αn natürliche Zahlen. Kann [n] in zwei Mengen I und J partitioniert
werden, sodass
X
X
αi =
αj ?
i∈I
j∈J
• Subset-Sum (S):
Seien n, α1 , . . . , αn und b natürliche Zahlen. Existiert I ⊆ [n], sodass
X
αi = b ?
i∈I
Zeigen Sie, dass die beiden Probleme polynomial äquivalent sind, d.h. es gilt
(a) P ≤p S, und
(b) S ≤p P .
20
Übung 20 (≤p , P, NP, NP-schwer und NPC)
Sind die folgenden Aussage richtig oder falsch? Nehmen sie an, dass P6=NP ist. Sind die folgenden
Aussage richtig oder falsch?
(a) ≤p ist eine Äquivalenzrelation auf P .
(b) ≤p ist eine Äquivalenzrelation auf NP .
(c) ≤p ist eine Äquivalenzrelation auf NP C.
(d) EulerTour:= {hGi : G geschlossener Kantenzug, der jede
Kante genau einmal benutzt} ∈ P
(e) BoundedDegreeSpanningTree:= {hG, ki : G hat einen aufspannenden Baum T ⊆ G mit △(T ) ≤
k} ist NP-schwer.
(f ) 3-COL ∈ NPC.
21
6
Matchings und TSP-Problem
Übung 21 (Matchings)
Gegeben sei ein gerichteter, kreisfreier Graph G = (V, A) auf n Knoten. Ausgehend von G wird der
Graph G′ = (Vout ∪˙ Vin , A′ ) definiert mit
Vout = {v ∈ V : v hat positiven Aus-Grad},
Vin = {v ∈ V : v hat positiven Ein-Grad},
A′ = {(u, v) ∈ Vout × Vin : (u, v) ∈ A}.
Zeigen sie, dass G′ genau dann ein Matching der Größe k hat, wenn n − k knotendisjunkte Wege in
G existieren, so dass jeder Knoten in G von mindestens einem Weg überdeckt wird. Dabei gilt ein
einzelner Knoten als Weg der Länge 0.
22
Übung 22 (Flussalgorithmus)
Bestimmen Sie mit Hilfe des Flussalgorithmus ein maximales Matching im folgenden Graphen:
8
6
7
3
4
1
2
23
9
5
Übung 23 (Hopcroft-Karp-Algorithmus)
Gegeben sei der folgende Graph:
(a) Gibt es eine Möglichkeit für den Hopkroft-Karp-Algorithmus, nach einer Augmentationsphase
ein größtes Matching in G gefunden zu haben?
(b) Gibt es eine Möglichkeit für den Hopkroft-Karp-Algorithmus, mehere Augmentationsphasen zu
brauchen, um in G ein größtes Matching zu finden?
24
Übung 24 (TSP-Approximation)
Konstruiere Beispiele, die zeigen, dass die Approximationsgüte der MST- bzw. Christofides-Heuristik
(genau) 2 bzw. 23 ist.
25
Herunterladen