Lösungsvorschlag 13

Werbung
Lehrstuhl für Praktische Informatik III
Norman May
B6, 29, Raum C0.05
68131 Mannheim
Telefon: (0621) 181–2517
Email: [email protected]
Matthias Brantner
B6, 29, Raum C0.05
68131 Mannheim
Telefon: (0621) 181–2517
Email: [email protected]
Algorithmen und Datenstrukturen
Wintersemester 2004/05
13. Lösungsvorschlag
11. Februar 2005
Aufgabe 1
5 Punkte
Sei die Menge {1, . . . , |V |} der Wertebereich der Kantengewichte in einem Graphen
G = (V, E).
Aufgabe 1 a)
3 Punkte
Welche Laufzeit läßt sich zur Berechnung eines minimalen Spannbaums durch Modifikation des Kruskal-Algorithmus erreichen?
Lösung
Aufwand Kruskal:
• Make-Set Operationen: O(V )
• Sortieren: O(E lg E)
• Find-Set und Union Operationen: O(Eα(E, V )),
zur Erinnerung: wegen O(α(E, V )) = O(lg∗ V ) folgt für diesen Schritt: O(E lg∗ V ),
lg∗ ist die iterierte Logarithmus-Funktion.
• Gesamtaufwand: O(E lg E)
Falls die Kantengewichte den Wertebereich {1, . . . , |V |} haben, lassen sich die Kanten mittels Counting-Sort sortieren. Der Aufwand hierfür beträgt O(E). Ausgehend
von der Annahme, daß der Graph verbunden ist, beträgt der Aufwand:
• Make-Set Operationen: O(V )
• Sortieren: O(E)
• Find-Set und Union Operationen: O(E lg ∗ V )
• Gesamtaufwand: O(E lg∗ V )
1
Aufgabe 1 b)
2 Punkte
Welche Laufzeit kann erreicht werden, wenn der Wertebereich der Kantengewichte
gleich der Menge {1, . . . , W }, für eine beliebige ganzzahlige Konstante W ist?
Lösung
Falls die Kantengewichte den Wertebereich {1, . . . , W } haben, kann wiederum CountingSort verwendet werden. Auch hier beträgt der Gesamtaufwand O(E lg∗ V ).
Aufgabe 2
5 Punkte
Sei G = (V, E) ein gewichteter ungerichteter Graph. Sei SG die Menge aller Kanten
von G. Sei A eine Teilmenge von E, dann ist A ∈ lG genau dann, wenn A azyklisch ist.
Das heißt, eine Menge von Kanten A ist unabhängig genau dann, wenn der Teilgraph
GA = (V, A) einen Wald formt.
Aufgabe 2 a)
4 Punkte
Zeigen Sie, daß MG = (SG , lG ) einen Matroiden definiert.
Lösung
Überprüfe die Matroideneigenschaften:
1. Z.Z.: SG ist endlich.
Das ist offensichtlich der Fall, weil E endlich ist.
2. Z.Z.: lG ist eine nicht-leere Familie von unabhängigen Teilmengen von S.
Das trifft zu, weil das Entfernen einer Kante aus einem azyklischen Graphen keine
Zyklen hinzufügen kann.
3. Z.Z.: Wenn A ∈ lG , B ∈ lG und |A| < |B|, dann gibt es ein Element x ∈ B − A,
so daß A ∪ {x} ∈ lG .
Angenommen GA = (V, A) und GB = (V, B) sind Wälder von G und |B| > |A|,
d.h. A und B sind azyklische Mengen von Kanten, und B enthält mehr Kanten
als A.
Es gilt, daß ein Wald mit k Kanten genau |V | − k Bäume enthält. Daher enthält
GA |V | − |A| Bäume, und GB besteht aus |V | − |B| Bäumen.
Weil Wald GB weniger Bäume enthält als Wald GA , muß GB einen Baum T enthalten, dessen Kanten in zwei verschiedenen Bäumen in GA enthalten sind. Weil
T verbunden ist, muß es eine Kante (u, v) geben, so daß u und v in verschiedenen
Bäumen in GA sind. Weil die Kante (u, v) Knoten in verscheidenen Teilbäumen
in Wald GA verbindet, kann diese Kante zum Wald GA hinzugefügt werden, ohne
einen Zyklus zu erzeugen. Also befolgt MG die Austauscheigenschaft.
2
Aufgabe 2 b)
4 Punkte
Zeigen Sie, daß minimale Spannbäume eine optimale Teilmenge auf einem gewichteten Matroiden definieren, wenn die Definition des Matroiden aus Teilaufgabe a) verwendet wird und die Kantengewichte geeignet verwendet werden.
Lösung
Zu zeigen: (1) Spannbäume sind maximal, (2) die maximale Teilmenge, deren Summe der Kantengewichte minimal ist, ist eine optimale Teilmenge von A.
zu (1) Jeder Spannbaum enthält |V | − 1 Kanten.
zu (2) Wir definieren die Gewichtsfunktion für eine Kante e mit Gewicht w(e) als w 0 (e) =
w0 − w(e), wobei w0 > maxe∈E w(e). In dem Matroid MG mit Gewichtsfunktion
w 0 sind alle Kantengewichte positiv. Da w 0 (A) = (|V | − 1)w0 − w(A) für eine
maximal unabhängige Teilmenge A eine unabhängige Teilmenge ist, die w 0 (A)
maximiert, wird w(A) minimiert. Also kann jeder Algorithmus, der eine optimale
Teilmenge A in einem beliebigen Matroiden findet, auch minimale Spannbäume
finden.
Der Algorithmus Generic-Mst ist daher eine Instanz des allgemeinen Greedy-Algorithmus
für gewichtete Matroiden.
Aufgabe 3
4 Punkte
Sei G = (V, E) ein gewichteter, gerichteter Graph. G enthält keine Zyklen mit
negativem Gewicht. Sei s ∈ V der Ausgangsknoten und sei G durch einen Aufruf
von Initialize-Single-Source(G,s) initialisiert. Zeigen Sie, daß eine Sequenz von |V | − 1
Relaxationsschritten existiert, nach deren Durchführung für alle v ∈ V d[v] = δ(s, v)
gilt.
Lösung
Es sei Gπ der Shortest-Path Tree mit der Wurzel s. Falls wir wissen, daß der kürzeste
Pfad von s nach v die Form s ; u → v hat und d[u] = δ(v, u), so können wir den
kürzesten Pfad von s nach v mit einer Relaxation ermitteln. Relaxieren wir nun die
Kanten in Gπ entsprechend der Reihenfolge, die aus einer Tiefensuche resultiert, gilt
für alle v ∈ V , d[v] = δ(s, v). Da Gπ |V | − 1 Kanten enthält, erhalten wir die gesuchte
Sequenz.
Aufgabe 4
6 Punkte
Sei G = (V, E) ein gerichteter Graph. Zu jeder Kante (u, v) ∈ E ist ein Wert r(u, v)
assoziiert, mit 0 < r(u, v) ≤ 1, der die Zuverlässigkeit einer Kommunikationsverbindung zwischen den Knoten u und v beschreibt. Die Zuverlässigkeit einer Kommunikationsverbindung läßt sich als Wahrscheinlichkeit einer erfolgreichen Kommunikation
3
interpretieren. Die Wahrscheinlichkeiten sollen voneinander unabhängig sein. Geben Sie
einen effizienten Algorithmus an, der den zuverlässigsten Pfad zwischen zwei Knoten
findet.
Lösung
Zur Lösung des Problems verwenden wir den Dijkstra-Algorithmus.
Aufgrund der Unabhängigkeit der Wahrscheinlichkeiten ist die Zuverlässigkeit eines
Pfades das Produkt der Wahrscheinlichkeiten der im Pfad enthaltenen Kanten. Um den
Dijkstra-Algorithmus anwenden zu können, führen wir die Gewichtsfunktion w(u, v) =
− lg(r(u, v)) ein. Da 0 < r(u, v) ≤ 1, ist für alle Kanten (u, v), w(u, v) ≥ 0.
Seien x und y zwei Knoten, zwischen denen der zuverlässigste Pfad gefunden werden
soll. Zu zeigen, der Dijkstra-Algorithmus bestimmt den zuverlässigsten Pfad zwischen
x und y.
Beweis:
Der Dijkstra-Algorithmus bestimmt den Pfad p = hv0 , v1 , . . . , vk i mit dem geringsten
Gewicht aus der Menge der Pfade, die vom Knoten x zum Knoten y führen. Das Gewicht
des Pfades wird wie folgt berechnet.
w(p) =
k
X
w(vi−1 , vi )
i=1
Setzen wir die Definition der Kantengewichtsfunktion ein, so erhalten wir
w(p) = −
k
X
lg(r(vi−1 , vi ))
i=1
= − lg
k
Y
i=1
r(vi−1 , vi )
!
Somit ist das Pfadgewicht genau dann minimal, wenn das Produkt der Wahrscheinlichkeiten maximal ist.
4
Herunterladen