¨Ubungen zur Vorlesung Graphenalgorithmen 1

Werbung
Prof. Dr. Egon Wanke
Dr. Stefan Hoffmann
Düsseldorf, 16. Mai 2017
Übungen zur Vorlesung
Graphenalgorithmen 1
Die Übungen finden Donnerstags von 10:30 bis 12:00 Uhr in Raum 25.12.01.51 und Donnerstag von 16:10 bis 17:40 Uhr in 25.31.HS 5M statt.
Die Aufgaben sollten unbedingt eigenständig, schriftlich bearbeitet werden und können in
dem Briefkasten auf 25.13.O2 abgegeben werden. Die Abgaben bieten die Möglichkeit in
den Übungen gezielter auf vorhandene Probleme einzugehen und werden zu Beginn der
Übung zurückgegeben, sie werden jedoch im Allgemeinen weder korrigiert noch bewertet
(Ausnahmen werden explizit erwähnt). Bitte geben Sie Ihre Abgaben jeweils spätestens
Mittwoch bis 12:00 Uhr für die Übung am nächsten Tag ab.
Zulassung zur Klausur: Im Laufe des Semesters werden einige Fragen / Aufgaben zum
Erreichen der Zulassung veröffentlicht. Um für die Klausur zugelassen zu werden, müssen
Sie mindestens 40% der erreichbaren Punkte in diesen Aufgaben sammeln. Die Zulassungsaufgaben werden als eigenständige PDF-Dateien auf der Webseite zur Verfügung gestellt.
Termin
Aufgaben
27.04.
1-4
04.05.
11.05
18.05
24.05
25.05
01.06
08.06
15.06
22.06
29.06
06.07
13.07
20.07
5-9
10-13
14-18
19,22-25
26,28-30
-
-
Kommentar
Wiederholung von Grundbegriffen
(Logik, Komplexität von Algorithmen, Graphen)
Achtung: Beginn der 2. Übung vorverlegt auf 16:10 Uhr
Keine Übung, Abgabe der 1. Zulassungsaufgaben!
Keine Übung, Feiertag!
Keine Übung, Feiertag!
Keine Übung, Tag der Klausur!
Aufgabe 1:
Gegeben sind folgende Aussagen:
1. Jeder Frosch ist glücklich, wenn alle seine Kinder quaken können.
2. Alle grünen Frösche können quaken.
3. Ein Frosch ist grün, wenn er Kind mindestens eines grünen Frosches ist.
Formalisieren Sie diese Aussagen mit Hilfe geeigneter Prädikate in Prädikatenlogik.
Aufgabe 2:
Betrachten Sie die folgenden sechs Funktionen fi : N0 → N0 , i ∈ {1, . . . , 6}. (Dabei verstehen wir unter f (n) immer max{0, df (n)e}.)
f1 (n) = n2
f4 (n) = 2n
f2 (n) = n3
f5 (n) = log (n)
f3 (n) = n2 log (n)
f6 (n) = 2n2 + 3n + 4
Füllen Sie folgende Tabelle aus, indem Sie für jedes Paar (fi , fj ) entweder O, Ω oder Θ
eintragen. Tragen Sie Θ ein, genau dann wenn fi ∈ Θ(fj ) gilt. Ansonsten tragen Sie O
bzw. Ω ein, wenn fi ∈ O(fj ) bzw. fi ∈ Ω(fj ) gilt.
j
i
1 2 3 4 5 6
1
2
3
4
5
6
Aufgabe 3:
Zeigen Sie:
1. In einem ungerichteten Graphen ist die Anzahl der Knoten mit ungeradem Grad eine
gerade Zahl.
2. Jeder ungerichtete Graph G = (V, E) mit |V | ≥ 2 hat mindestens zwei Knoten vom
gleichen Grad.
3. Die Anzahl der Knoten in einem ungerichteten Graphen, bei dem jeder Knoten den
Grad 3 hat, ist eine gerade Zahl.
4. Für jedes gerade n ≥ 4 gibt es einen zusammenhängenden ungerichteten Graphen
mit n Knoten, die alle den Grad 3 haben.
Aufgabe 4:
Zeichnen Sie alle (paarweise nicht isomorphen) ungerichteten Graphen mit 4 Knoten.
Aufgabe 5:
Zeigen Sie:
Für jeden ungerichteten Graphen G = (V, E) sind die folgenden Aussagen äquivalent.
1. G ist kreisfrei und zusammenhängend.
2. Zwischen je zwei Knoten aus G existiert genau ein einfacher Weg.
Aufgabe 6:
Sei G = (V, E) ein ungerichteter Graph. Zeigen Sie die Äquivalenz der folgenden beiden
Aussagen:
1. Für jedes Knotenpaar u, v ∈ V gibt es einen Weg zwischen u und v.
2. ∀V 0 ⊂ V mit V 0 6= ∅, V 0 6= V gibt es einen Knoten u0 ∈ V 0 und einen Knoten
u ∈ V \ V 0 mit {u, u0 } ∈ E.
Aufgabe 7:
Sei G = (V, E) ein ungerichteter Graph. Definiere den Komplementgraph G = (V, E) durch
E = {{u, v} | u, v ∈ V ∧ u 6= v ∧ {u, v} ∈
/ E}. G ist selbstkomplementär, wenn G und G
isomorph sind.
1. Zeichnen Sie einen selbstkomplementären Graphen mit 8 Knoten.
2. Bestimmen Sie die Anzahl der Kanten in einem selbstkomplementären Graphen mit
n Knoten.
Aufgabe 8:
Berechnen Sie nach dem in der Vorlesung vorgestellten Algorithmus eine topologische Sortierung des Graphen in Abbildung 1. Wie viele verschiedene topologische Sortierungen gibt
es für dieses Beispiel?
Aufgabe 9:
Geben Sie einen Graphen mit 6 Knoten und 8 Kanten an, sodass die Anzahl der verschiedenen topologischen Sortierungen möglichst groß ist.
Abbildung 1: Graph G
3
1
2
4
6
7
5
Abbildung 2: Graph G
Aufgabe 10:
Bestimmen Sie für den Graphen G in Abbildung 2 den transitiven Abschluss.
Betrachten Sie den aus Vorlesung bekannten Algorithmus für den transitiven Abschluss:
Welchen Wert hat der Laufindex k der äußeren Schleife, wenn die Kante (1, 6) eingefügt
wird?
Aufgabe 11:
Sei G = (V, E) ein gerichteter Graph. Die transitive Basis von G ist ein gerichteter Graph
Gmin := (V, Emin ), so dass der transitive Abschluss von G gleich dem transitiven Abschluss
von Gmin ist und |Emin | ist minimal. (Im Unterschied zur Reduktion muss für eine Basis
nicht gelten, dass Emin ⊆ E)
Zeigen oder widerlegen Sie:
1. Wenn G stark zusammenhängend ist, dann enthält jede transitive Basis genau |V |
Kanten.
2. Wenn eine transitive Basis |V | ≥ 3 Kanten enthält, dann enthält G einen Kreis.
Aufgabe 12:
Sei G = (V, E) ein gerichteter, stark zusammenhängender Graph und n := |V |. Wie viele
Kanten enthält der transitive Abschluss von G?
Aufgabe 13:
Führen Sie in Graphen G in Abbildung 3 eine
1. Tiefensuche
2. Breitensuche
durch, beginnend bei Knoten 9. Geben Sie jeweils die Reihenfolge an, in der die Knoten
besucht werden. Bei Wahlmöglichkeiten soll immer derjenige Knoten mit der kleinsten
Knotennummer gewählt werden. Geben Sie bei der Tiefensuche ebenfalls für jeden Knoten
den DFE-Index an und klassifizieren Sie jede Kante als Baum-, Vorwärts-, Quer- oder
Rückwärtskante.
9
3
4
7
1
6
2
5
8
11
10
Abbildung 3: Graph G
Aufgabe 14:
Sei G = (V, E) ein ungerichteter Graph. G ist bipartit, wenn es eine Partition der Knotenmenge V in zwei Mengen U1 , U2 gibt (d.h. V = U1 ∪ U2 und U1 ∩ U2 = ∅), so dass für alle
Kanten e ∈ E gilt: e ∩ U1 6= ∅ und e ∩ U2 6= ∅.
Entwerfen Sie einen möglichst effizienten Algorithmus, der entscheidet, ob ein gegebener
Graph bipartit ist und schätzen Sie seine Laufzeit ab.
Aufgabe 15:
Geben Sie einen gerichteten Graphen G = (V, E), zwei Startknoten s1 , s2 ∈ V und eine
Kante e ∈ E an, so dass folgende Eigenschaften erfüllt sind. Die verwendete Tiefensuche betrachtet bei Wahlmöglichkeiten immer als erstes denjenigen Knoten mit kleinster
Knotennummer.
1. V ⊂ N
2. Bei einer Tiefensuche von Startknoten s1 werden alle Knoten als besucht markiert
und e ist eine Baumkante
3. Bei einer Tiefensuche von Startknoten s2 werden alle Knoten als besucht markiert
und e ist eine Querkante / Seitwärtskante
Aufgabe 16:
Entwerfen Sie einen möglichst effizienten Algorithmus, der in einem gerichteten Graphen
G = (V, E) einen Kreis minimaler Länge (also mit einer minimalen Anzahl an Kanten)
findet und schätzen Sie die Laufzeit Ihrer Lösung ab.
Aufgabe 17:
Bestimmen Sie alle starken Zusammenhangskomponenten des Graphen G1 (Abbildung 4).
9
3
4
7
1
6
2
5
8
11
10
Abbildung 4: Graph G1
Aufgabe 18:
Bestimmen Sie alle zweifachen Zusammenhangskomponenten sowie alle Artikulationspunkte des Graphen G2 = (V, E) (Abbildung 5). Geben Sie außerdem Mengen E1 und E2 mit
möglichst wenigen, zusätzlichen Kanten an, so dass
1. (V, E ∪ E1 ) zweifach
2. (V, E ∪ E2 ) dreifach
zusammenhängend ist.
Aufgabe 19:
Sei G = (V, E) ein gerichteter, stark zusammenhängender Graph, auf dem eine Tiefensuche durchgeführt wurde und u, v ∈ V zwei Knoten mit den DFS-Nummern DF S[u] und
DF S[v], so dass DF S[u] < DF S[v] gilt. Zeigen oder widerlegen Sie: In G gibt es einen
gerichteten Weg von u nach v der Länge DF S[v] − DF S[u].
Aufgabe 20:
Zeigen oder widerlegen Sie: Ein gerichteter Graph G = (V, E) hat genau dann |V | starke
Zusammenhangskomponenten, wenn es eine topologische Knotenordnung für G gibt.
11
4
2
7
3
5
10
6
8
9
1
Abbildung 5: Graph G2
Aufgabe 21:
Sei G = (V, E) ein gerichteter, kreisfreier Graph, auf dem eine Tiefensuche durchgeführt
wurde, die für jeden Knoten v einen DFE-Index DF E(v) ∈ {1, . . . , |V |} bestimmt hat.
Zeigen oder widerlegen Sie:
h(v) := |V | + 1 − DF E(v) ist eine topologische Knotenordnung für G.
Aufgabe 22:
Zeigen Sie: Ein ungerichteter Graph G = (V, E) ist genau dann k-fach zusammenhängend,
wenn er nicht durch Entfernen von k − 1 Knoten unzusammenhängend werden kann.
Aufgabe 23:
Zeigen Sie, dass für alle k ≥ 3 die k-fachen Zusammenhangshangskomponenten eines ungerichteten Graphen nicht paarweise kantendisjunkt sein müssen.
Aufgabe 24:
Sei G = (V, E) ein ungerichteter, zusammenhängender Graph. Definiere einen Graphen H
wie folgt: H enthält für jede zweifache Zusammenhangskomponente (und jede Brücke) Cv
in G einen Knoten v und eine Kante {u, v} genau dann, wenn Cu und Cv einen gemeinsamen
Knoten in G haben.
1. Zeigen oder widerlegen Sie: H ist zusammenhängend
2. Zeigen oder widerlegen Sie: H ist kreisfrei
Wie könnte diese Definition erweitert/abgeändert werden, so dass H ein Baum ist?
Aufgabe 25:
Führen Sie den Algorithmus zur Bestimmung der starken Zusammenhangskomponenten
an dem Graphen in Abbildung 4 durch.
Aufgabe 26:
Führen Sie den Algorithmus zur Bestimmung der 2-fachen Zusammenhangskomponenten
an dem Graphen in Abbildung 5 durch.
Aufgabe 27:
Sei G = (V, E) ein gerichteter Graph.
Eine Bijektion h : E → {1, . . . , |E|} ist eine topologische Kantenordnung für G, wenn
∀(u, v), (v, w) ∈ E
h((u, v)) < h((v, w)).
1. Zeigen Sie: Es gibt eine topologische Kantenordnung für G genau dann, wenn G
kreisfrei ist.
2. Entwerfen Sie einen möglichst effizienten Algorithmus zur Berechnung einer topologischen Kantenordnung, begründen Sie die Korrektheit Ihrer Lösung und schätzen
Sie die Laufzeit ab.
Aufgabe 28:
Wir betrachten den folgenden Algorithmus, der in einem kantenbewerteten Graphen (V, E, f )
aus einer initialen Distanzfunktion ds durch wiederholte Überprüfung der Dreiecksungleichung eine Kürzeste-Wege-Funktion berechnet.
1: fertig := false;
2: while (!fertig) do
3:
fertig := true;
4:
for all ((u, v) ∈ E) do
5:
if (ds (u) + f ((u, v)) < ds (v)) then
6:
fertig := false;
7:
ds (v) := ds (u) + f ((u, v));
8:
end if
9:
end for
10: end while
1. Geben Sie eine Instanz für das Single Source Shortest Path Problem an, so
dass der obige Algorithmus nicht terminiert.
2. Zeigen Sie:
Wenn der obige Algorithmus terminiert, so hat er eine Laufzeit aus O(|V | · |E|).
Aufgabe 29:
Geben Sie für den kantenbewerteten Graphen G in Abbildung 6 und den Startknoten s
eine Kürzeste-Wege-Funktion ds an.
7
a
s
4
1
2
5
b
2
2
c
1
1
d
3
f
6
e
2
1
−4
Abbildung 6: Graph G zu Aufgabe 29
h
g
Aufgabe 30:
Sei G = (V, E) ein Graph und f : E → R eine Kantenbewertung. In der Vorlesung wurde
die Länge eines Weges p = (u1 , . . . , uk ) als
L(p) := f ((u1 , u2 )) + f ((u2 , u3 )) + · · · + f ((uk−1 , uk ))
definiert. Betrachten Sie nun die folgenden 5 verschiedenen Definitionen für die Länge eines
Weges p = (u1 , . . . , uk ) mit k ≥ 1.
1.
L1 (p) :=
min{f ((u1 , u2 )), f ((u2 , u3 )),
0
2.
Qk−1
i=1
L2 (p) :=
3.
L3 (p) :=



4.
1
. . . , f ((uk−1 , uk ))} falls k ≥ 2
sonst
f ((ui , ui+1 )) falls k ≥ 2
sonst
L3 ((u1 ,...,uk−1 ))+f ((uk−1 ,uk ))
2
f ((uk−1 , uk ))
0
falls k ≥ 3
falls k = 2
sonst

 L4 ((u1 , . . . , uk−1 ))2 + f ((uk−1 , uk ))2 falls k ≥ 3
f ((uk−1 , uk ))2
falls k = 2
L4 (p) :=

0
sonst
5.
(
L5 (p) :=
Pk−1
i=1
0
f ((ui ,ui+1 ))
k−1
falls k ≥ 2
sonst
Untersuchen Sie, in wie weit die folgende Eigenschaft für die 5 Längenmaße L1 , . . . , L5
stimmt:
Für jeden kürzesten Weg p = (v1 , . . . , vk ) von v1 nach vk ist jeder Teilweg
p0 = (vi , vi+1 , . . . , vj ) mit 1 ≤ i ≤ j ≤ k ein kürzester Weg von vi nach vj .
Aufgabe 31:
Für einen kantenbewerteten, gerichteten Graphen G = (V, E, f ), einen Startknoten s ∈ V
und eine Kürzeste-Wege-Funktion ds definieren wir den Kürzeste-Wege-Teilgraph
G0 = (V, E 0 ) durch E 0 := {(u, v) ∈ E | ds (u) + f ((u, v)) = ds (v)}.
Zeigen oder widerlegen Sie: Jeder Kreis in G0 hat die Länge 0.
Aufgabe 32:
Führen Sie den Kürzeste-Wege-Algorithmus von Dijkstra an dem Graphen aus Abbildung
7 für den Startknoten s durch. Geben Sie dazu an:
1. Den Inhalt der Prioritätswarteschlange vor jedem Aufruf von extract-min
2. Die berechnete Kürzeste-Wege-Funktion ds
3. Den berechneten Kürzeste-Wege-Baum
−1
s
7
a
3
−2
b
7
4
2
2
c
6
1
2
d
f
e
1
2
1
−2
1
h
g
3
Abbildung 7: Graph G zu Aufgabe 32
Aufgabe 33:
Geben Sie einen gerichteten, kantenbewerteten Graphen G = (V, E, g) an (beschriftete
Zeichnung genügt), so dass folgende Eigenschaften erfüllt sind:
1. V = {a, b, c, d, e, f }
2. Dijkstras Algorithmus, gestartet bei Knoten a, terminiert.
3. Möglichst viele der Knoten werden von Dijkstras Algorithmus, gestartet bei Knoten
a, mehr als einmal in die Prioritätswarteschlange eingefügt.
Aufgabe 34:
Im Gegensatz zu den anderen Kürzeste-Wege-Algorithmen terminiert der Algorithmus von
Floyd-Warshall auch bei der Existenz von Kreisen negativer Länge. In diesem Fall sind die
berechneten Weglängen mit Vorsicht zu genießen, da sie nicht alle dem kürzesten Wegewert
entsprechen. Erweitern Sie den Algorithmus so, dass er jeden Knoten, der auf einem Kreis
negativer Länge liegt, genau einmal ausgibt. Wie lässt sich diese Information nutzen, um
zu entscheiden, ob eine berechnete Weglänge dem kürzesten Wegewert entspricht?
Aufgabe 35:
Die längste Weglänge von einem Knoten u zu einem Knoten v ist die maximale Länge aller
Wege von u nach v, falls ein solches Maximum existiert. Beschreiben Sie, wie man mit Hilfe
von Kürzeste-Wege Algorithmen das Längste-Wegeproblem lösen kann. Veranschaulichen
Sie Ihre Idee an dem Graphen in Abbildung 8.
2
1
1
-3
1
u
v
5
2
Abbildung 8: Graph G zur Aufgabe 35
Aufgabe 36:
Wir betrachten den Graphen in Abbildung 9.
1. Geben Sie eine Kantenfolge minimaler Länge an, so dass nach Überprüfung der Dreiecksungleichung in dieser Reihenfolge aus einer beliebigen, initialen Distanzfunktion
da eine Kürzeste-Wege-Funktion für a entsteht.
2. Bestimmen Sie eine Kürzeste-Wege-Funktion für den Knoten a in G und transformieren Sie den Graphen G mit dieser in einen Distanzgraphen G0 .
3. Bestimmen Sie eine Kürzeste-Wege-Funktion für den Knoten d im Graphen G0 .
Aufgabe 37:
Gegeben sei ein gerichteter, kantenbewerteter Graph G = (V, E, f ), ein Knoten s ∈ V und
eine initiale Distanzfunktion ds . Geben Sie einen Algorithmus an, der eine Kantenfolge
minimaler Länge bestimmt, so dass nach Überprüfung und Aktualisierung der Dreiecksungleichung in dieser Reihenfolge aus ds eine Kürzeste-Wege-Funktion wird. Begründen Sie
die Korrektheit Ihrer Lösung.
Aufgabe 38:
Zeigen Sie, dass für jeden ungerichteten Baum mit n Knoten und m Kanten gilt:
m=n−1
c
b
1
−1
2
4
1
a
d
4
1
−1
G
f
−1
e
Abbildung 9: Graph G zur Aufgabe 36
Aufgabe 39:
Betrachten Sie den folgenden Graphen G = (V, E):
b
c
h
g
a
k
f
d
e
i
1. Geben Sie die Knotenmengen aller starken Zusammenhangskomponenten von G an:
2. Geben Sie eine Menge E 0 ⊆ V × V mit möglichst wenigen Elementen an, so dass der
Graph (V, E ∪ E 0 ) stark zusammenhängend ist:
3. Geben Sie eine Menge E 00 ⊆ E mit möglichst wenigen Kanten an, so dass es eine
topologische Knotenordnung für den Graphen (V, E \ E 00 ) gibt. Geben Sie auch eine
solche Knotenordnung an:
4. Starten Sie eine Tiefensuche bei Knoten a. Im Falle einer Wahlmöglichkeit soll derjenige Knoten mit kleinstem, lexikographischen Wert (a < b < . . . < z) als nächstes
besucht werden. Schreiben Sie an jeden Knoten v die DFS- und DFE-Nummer in der
Notation DF S[v]/DF E[v] und an jede Kante B,V,R,Q, je nachdem ob es sich um
eine Baumkante, Vorwärtskante, Rückwärtskante oder Querkante handelt.
Aufgabe 40:
Transformieren Sie den Graphen aus Abbildung 10 in einen Distanzgraphen.
7
a
4
3
−2
−1
i
7
s
b
2
j
2
c
6
1
2
d
−2
f
e
1
2
1
−2
1
h
g
Abbildung 10: Graph G zu Aufgabe 40
Aufgabe 41:
Wir betrachten den Speziallfall von kantenbewerteten Graphen, in denen es nur zwei verschiedene, ganzzahlige, positive Kantengewichte gibt. Skizzieren Sie, wie für diesen Fall
eine Prioritätswarteschlange implementiert werden kann, so dass Dijkstras Algorithmus
das Single Source Shortest Path Problem in linearer Laufzeit löst.
Aufgabe 42:
Bestimmen Sie einen minimalen Spannbaum für den Graphen in Abbildung 11 durch wiederholte Anwendung der grünen Kantenregel. Geben Sie dabei in jedem Schritt die gewählte Kantenmenge V 0 und die neu gefärbte Kante an.
Aufgabe 43:
Bestimmen Sie einen minimalen Spannbaum für den Graphen in Abbildung 11 durch wiederholte Anwendung der roten Kantenregel. Geben Sie dabei in jedem Schritt den gewählten Kreis C und die neu gefärbte Kante an.
a
15
9
f
b
2
6
4
g
15
11
k
6
2
4
3
e
15
h
1
1
c
2
d
Abbildung 11: Graph G zu den Aufgaben 42 und 43
Aufgabe 44:
Betrachten Sie den folgenden, kantenbewerteten Graphen:
1
7
a
3
b
4
d
7
4
2
2
c
6
3
2
e
g
2
f
1
1
1
1
h
i
3
1. Führen Sie Prims Algorithmus mit Startknoten a durch und geben Sie die Kanten
des berechneten Spannbaums in der Reihenfolge an, in der sie vom Algorithmus grün
gefärbt werden:
2. Führen Sie den Algorithmus von Kruskal durch und geben Sie die Kanten des berechneten Spannbaums in der Reihenfolge an, in der sie vom Algorithmus grün gefärbt
werden:
Aufgabe 45:
Für eine Folge von 8 union-Operationen, angewendet auf die initialen Mengen
{1}, {2}, . . . , {9},
sei TH der bei Vereinigung nach Höhe entstehende Baum und TG der bei Vereinigung nach
Größe entstehende Baum.
Geben Sie eine solche Folge von union-Operationen an, so dass die Höhen von TH und TG
unterschiedlich sind. Zeichnen Sie ebenfalls TH und TG .
Aufgabe 46:
Geben Sie einen Linearzeitalgorithmus zur Berechnung eines minimalen Spannbaums für
kantenbewertete, ungerichtete Graphen mit nur drei verschiedenen Kantengewichten an.
Aufgabe 47:
Zeigen Sie, dass bei Union-Find Datenstrukturen auch bei dem Verfahren “Vereinigung
nach Höhe” folgende Eigenschaft erhalten bleibt: Ein Baum mit Höhe h hat mindestens 2h
Knoten.
Aufgabe 48:
Wir versuchen nun Spannbäume in gewurzelten, gerichteten Graphen zu berechnen - eine
Variante, die in der Praxis durchaus anzutreffen ist. Gegeben ist nun also ein gerichteter,
kantenbewerteter Graph G = (V, E, f ) und eine Wurzel w ∈ V . Gesucht ist eine Menge
E 0 ⊆ E von Kanten, so dass für T = (V, E 0 ) gilt:
1. T kreisfrei,
2. ∀v ∈ V \ {w} :
indeg(v) = 1,
P
3.
e∈E 0 f (e) minimal.
Ein naheliegender Versuch besteht darin den Algorithmus von Prim zu modifizieren, indem
- ausgehend von der Wurzel als Startknoten - immer eine Kante mit minimalem Gewicht
gewählt wird, die vom bisher aufgebauten Baum zu einem neuen Knoten gerichtet ist.
Zeigen Sie durch ein Gegenbeispiel, dass dieser Algorithmus nicht korrekt arbeitet.
Aufgabe 49:
Überlegen Sie sich einen Algorithmus, der das Problem aus Aufgabe 48 korrekt löst und
beschreiben Sie die Idee und die Arbeitsweise des Algorithmus.
Hinweis: Den Algorithmus von Kruskal zu modifizieren ist ebenfalls nicht sinnvoll.
Aufgabe 50:
Erweitern Sie die Definition des Netzwerkflussproblems auf mehrere Quellen s1 , . . . , sn und
mehrere Senken t1 , . . . , tm .
Handelt es sich bei dieser Erweiterung um ein grundlegend neues Problem oder gibt es einfache Techniken, um eine derartige Instanz auf das bekannte Netzwerkflussproblem zurückzuführen?
Aufgabe 51:
Sei G = (V, E) ein Netzwerk mit Kapazitätsfunktion c : E → R+ , Quelle s ∈ V und Senke
t ∈ V . Zeigen Sie:
1. Es gibt eine immer eine Flussfunktion fs,t mit maximalem Fluss, so dass für alle
Kanten (v, s) ∈ E gilt: fs,t ((v, s)) = 0.
2. Nicht für jede Flussfunktion fs,t mit maximalem Fluss gilt zwangsläufig, dass
fs,t ((v, s)) = 0 für alle Kanten (v, s) ∈ E.
Aufgabe 52:
Bestimmen Sie für das Netzwerk G = (V, E) in Abbildung 12 mit Kapazitätsfunktion
c : E → R+ , Quelle s ∈ V und Senke t ∈ V eine Flussfunktion fs,t mit maximalem
Fluss mit dem Netzwerkflussalgorithmus von Dinic. Zeichnen Sie dazu nach jedem Schritt
den Restgraphen und den Niveaugraphen. Geben Sie außerdem jeweils einen blockierenden
Fluss an.
4
b
d
12
8
6
s
a
4
t
9
10
8
c
11
4
e
Abbildung 12: Netzwerk zu den Aufgaben 52
Aufgabe 53:
Geben Sie die Laufzeit des besten, Ihnen bekannten, Algorithmus an, der das jeweilige
Problem löst.
Problem
Berechnung einer topologischen Knotenordnung
Test auf Zusammenhang in ungerichteten Graphen
Test auf starken Zusammenhang in gerichteten Graphen
Berechnung der zweifachen Zusammenhangskomponenten in
ungerichteten Graphen
Berechnung des transitiven Abschlusses in Graphen mit k
starken Zusammmenhangskomponenten
Single Pair Shortest Path Problem für kantenbewertete Graphen, in denen alle Kanten das Gewicht 5 haben
Single Source Shortest Path Problem für kantenbewertete Graphen, in denen alle Kantengewichte positiv sind
All Pairs Shortest Path Problem für kreisfreie, kantenbewertete Graphen
Single Source Shortest Path Problem für kantenbewertete Graphen, die keine Kreise negativer Länge enthalten
All Pairs Shortest Path Problem für kantenbewertete
Graphen, die keine Kreise negativer Länge enthalten
Berechnung eines minimalen Spannbaums in kantenbewerteten, ungerichteten Graphen, in denen alle Kantengewichte aus
der Menge {1, 2, π, 4, 5} sind
Berechnung eines minimalen Spannbaums in kantenbewerteten, ungerichteten, zusammenhängenden, kreisfreien Graphen
Berechnung eines minimalen Spannbaums in kantenbewerteten, ungerichteten Graphen
Netzwerkflussproblem
O(...)
Herunterladen