Übungsblatt 12 - Chair 11: ALGORITHM ENGINEERING

Werbung
Fakultät für Informatik
Lehrstuhl 11 / Algorithm Engineering
Prof. Dr. Petra Mutzel
Carsten Gutwenger, André Gronemeier, Anna-Lena Lamprecht,
Tobias Marschall, Hubert Wagner, Hoi-Ming Wong
Sommersemester 2008
DAP2 Übung – Blatt 12
Ausgabe: 26. Juni — Abgabe: 03. Juli, 14:00 Uhr
Globalübung: Fr. 11. Juli
Aufgabe 12.1 (5 Punkte)
Gegeben sei der folgende gerichtete Graph G:
m
k
p
q
n
r
u
t
x
o
s
v
y
w
z
Bestimmen Sie unter Verwendung des im Skript angegebenen Algorithmus schrittweise eine
topologische Sortierung der Knoten von G. Geben Sie hierzu vor Eintritt in die While-Schleife
und nach jedem Schleifendurchlauf durch die While-Schleife den aktuellen Zustand der Queue
und den jeweils ausgegebenen Knoten an.
Aufgabe 12.2 (5 Punkte)
Wir betrachten nichtleere, ungerichtete Graphen ohne Mehrfachkanten und ohne Schleifen.
Der Komplementgraph
eines ungerichteten Graphen G = (V, E) ist der ungerichtete Graph
G = V, E , wobei für Knoten u, v ∈ V (u 6= v) (u, v) genau dann eine Kante in G ist, wenn
(u, v) nicht in E enthalten ist.
1. Geben Sie einen ungerichteten Graphen G mit Knotenmenge V = {a, b, c} sowie den
zugehörigen Komplementgraphen G an.
(1 Punkt)
2. Beweisen oder widerlegen Sie:
Sei G ein ungerichteter Graph, G der zugehörige Komplementgraph. Es gilt dann:
G oder G ist zusammenhängend.
(4 Punkte)
Aufgabe 12.3 (6 Punkte)
Gegeben sei der in der nachfolgenden Abbildung dargestellte ungerichtete Graph G mit Gewichtsfunktion w.
6
a
1
b
2
c
5
d
4
6
1
f
3
7
h
2
7
e
4
g
1
2
6
i
9
5
j
2
9
k
8
1
l
1. Bestimmen Sie zu G mit dem Verfahren von Kruskal einen minimalen Spannbaum.
(3 Punkte)
2. Für diese Teilaufgabe legen Sie die Realisierung des Kruskal-Algorithmus mit UnionFind zugrunde. Geben Sie den Zustand der Union-Find-Struktur nach jedem FIND- oder
UNION-Schritt an. Verwenden Sie dabei die Baumrepräsentation von Mengen.
(3 Punkte)
Aufgabe 12.4 (4 Punkte)
Betrachten Sie den folgenden divide-and-conquer Algorithmus zur Berechnung eines minimalen Spannbaumes. Eingabe sei ein ungerichteter zusammenhängender Graph G = (V, E) mit
Gewichtsfunktion.
- Zerlege V in 2 Knotenmengen V1 und V2 , so dass sich |V1 | und |V2 | höchstens um 1
unterscheiden.
- Berechne rekursiv minimalen Spannbaum T1 für G1 = (V1 , E ∩ V1 × V1 ) und minimalen
Spannbaum T2 für G2 = (V2 , E ∩ V2 × V2 ).
- Wähle Kante e aus E ∩ V1 × V2 mit minimalem Gewicht
- return T1 ∪ T2 ∪ {e}.
Zeigen Sie, dass dieser Algorithmus immer einen minimalen Spannbaum für G berechnet, oder
aber geben Sie ein Beispiel dafür an, dass der Algorithmus versagt.
Aufgabe 12.5 (5 Punkte) Bonusaufgabe
1. Ist die folgende Aussage wahr?
Zusammenhängende ungerichtete Graphen, deren Kanten alle paarweise verschiedene Gewichte haben, besitzen genau einen Spannbaum mit kleinstem Gewicht.
(4 Punkte)
2. Gilt die Umkehrung von 1., d.h. gilt die folgende Aussage?
In zusammenhängenden ungerichteten Graphen, die genau einen Spannbaum mit kleinstem Gewicht besitzen, haben alle Kanten paarweise verschiedene Gewichte.
(1 Punkt)
Begründen Sie Ihre Antwort mit einem Beweis oder durch ein Gegenbeispiel.
Mach et jut
– das DAP2-Team
Herunterladen