Institut für Computergraphik und Algorithmen

Werbung
Institut für
Computergraphik und
Algorithmen
Abteilung für
Algorithmen und
Datenstrukturen
Sommersemester 2003
Übungen zur Lehrveranstaltung
Algorithmen und Datenstrukturen 2
4. Übungsblatt
Abgabe persönlich in der 4. Übung am 17.06.2003
Kreuzen Sie bitte in den Kästchen diejenigen Aufgaben an, bei denen Sie sich sicher sind, dass Sie die
richtige Lösung präsentieren können.
A1
A2
A3
A4
A5
A6
A7
A8
A9
A 10
kann präsentieren
Aufgabe 1 Maximale Flüsse – Ford-Fulkerson
Finden Sie zu dem nachfolgenden Flussnetzwerk N den maximalen Fluss f ∗ , indem Sie den Algorithmus
von Ford-Fulkerson verwenden:
5
B
D
3
3
4
s A
G t
3
6
7
C
E
2
4
F
a) Visualisieren Sie dazu die einzelnen Schritte des Algorithmus, d.h. Flüsse und Restgraphen.
b) Geben Sie anschließend einen Schnitt in N an, der von f ∗ saturiert wird.
Aufgabe 2 Maximale Flüsse – Edmond-Karp
Eine Variation des Algorithmus von Ford-Fulkerson verwendet augmentierende Pfade mit möglichst wenig
Kanten, d.h. zuerst werden die augmentierenden Pfade gesucht und anschließend wird entlang desjenigen Pfades mit minimaler Kantenzahl augmentiert. Diese Variation ist als Edmond-Karp-Algorithmus
bekannt.
a) Geben Sie den Edmond-Karp-Algorithmus in Pseudocode an.
b) Berechnen Sie den maximalen Fluss des Netzwerks N aus Aufgabe 1 und visualisieren Sie die
einzelnen Schritte in analoger Art und Weise.
Aufgabe 3 Maximale Flüsse
Welche der folgenden Behauptungen sind wahr und welche sind falsch? Belegen Sie Ihre Antwort entweder
durch ein Gegenbeispiel oder einen kurzen Beweis:
a) Falls alle Kanten in einem Flussnetzwerk N verschiedene Kapazitäten haben, dann existiert ein
eindeutiger maximaler Fluss.
1
b) Seien v und w zwei Knoten in einem Flussnetzwerk N . Dann gibt es immer einen maximalen Fluss
f ∗ mit f ∗ (v, w) = 0 oder f ∗ (w, v) = 0
c) Wenn alle Kantenkapazitäten mit einer beliebigen positiven Zahl multipliziert werden, dann ändert
sich der minimale Schnitt nicht.
d) Wenn zu allen Kantenkapazitäten eine beliebige positive Zahl addiert wird, dann ändert sich der
minimale Schnitt nicht.
Aufgabe 4 Maximale Flüsse – Separationsproblem
Beschreiben Sie ein Schnittebenenverfahren zur Lösung der LP-Relaxierung des TSP’s (Handlungsreisendenproblems, s. Skript), das zu Beginn nur die Gradungleichungen und die 0/1-Schranken enthält.
Beschreiben Sie genau, wie Sie das Separationsproblem für die Menge der Subtour-Ungleichungen
X
xe ≥ 2 für alle Mengen W ⊆ V, W 6= ∅, W 6= V
e∈δ(W )
mit Hilfe des Algorithmus von Ford-Fulkerson in polynomieller Zeit lösen.
Aufgabe 5 Maximale Flüsse – Maximales bipartites Matching
Gegeben sei ein bipartiter ungerichteter Graph G = (V, E) mit einer Knotenpartition V = L ∪ R und
L, R ⊆ V disjunkt. Alle Kanten in E liegen zwischen Knoten aus L und R. Ein Matching M ⊆ E ist
eine Teilmenge von Kanten aus E, so dass für alle Knoten v ∈ V höchstens eine Kante im Matching M
inzident zu v ist, d.h. keine zwei Kanten besitzen einen gemeinsamen Knoten. Ein maximales Matching
M ∗ ist ein Matching maximaler Kardinalität: es gilt also |M ∗ | ≥ |M | für jedes andere Matching M .
Finden Sie eine Lösung des maximalen Matching-Problems für einen gegebenen bipartiten ungerichteten
Graphen, indem Sie es auf das Problem der maximalen Flüsse in Netzwerken zurückführen und dieses
Problem mit Hilfe der Methode von Ford-Fulkerson lösen.
Aufgabe 6 Maximale Flüsse – Maximales bipartites Matching
Eine Gruppe von Studenten möchte ihre Vorlesungsbesuche dadurch minimieren, dass sie am liebsten
nur eine/n aus ihrer Gruppe zu jeder der n Vorlesungen schicken. Vorlesung i beginnt zum Zeitpunkt ai
und endet zum Zeitpunkt bi . Die Zeit für das Pendeln von einer Vorlesung i zu einer anderen Vorlesung
j dauert rij Zeit. Wieviele Studenten sind minimal nötig, um alle n Vorlesungen abzudecken?
Formulieren Sie diese Problem als maximales bipartites Matching-Problem. Verwenden Sie dazu einen
bipartiten ungerichteten Graphen G = (V, E) mit den beiden Knotenpartitionen L und R wobei |L| =
|R| = n.
Aufgabe 7 Scan-Line Prinzip
Geben Sie an, in welcher Reihenfolge die Schnittpunkte in der folgenden Menge von Liniensegmenten in
der Ebene berichtet werden, wenn Sie einen Scan-Line-Algorithmus verwenden und die Scan-Line von
links nach rechts über die Ebene schwenken.
A
E
C
B
F
D
Aufgabe 8 Scan-Line Prinzip
Geben Sie ein Beispiel mit der kleinstmöglichen Anzahl von Liniensegmenten an, so dass der erste durch
das Scan-Line-Verfahren gefundene Schnittpunkt nicht der am weitesten links liegende ist.
2
Aufgabe 9 Bereichssuche – 2D-Bäume
Gegeben sei eine Menge von zehn Punkten im zweidimensionalen Raum:
A = (7, 9), B = (15, 14), C = (10, 5), D = (3, 13), E = (13, 6),
F = (17, 2), G = (3, 2), H = (4, 8), I = (15, 11), J = (8, 3)
Bauen Sie, wie in der Vorlesung gezeigt, einen balancierten 2D-Baum auf und zeichnen Sie sowohl den
Baum als auch die entsprechende Zerlegung der Ebene.
Aufgabe 10 Bereichssuche – Quadranten-Bäume
Eine zu 2D-Bäumen ähnliche Struktur sind Quadranten-Bäume. Seien n Punkte in der Ebene gegeben.
Dann lassen sie sich in einen Quadranten-Baum der Ordnung 4 einfügen, indem man den ersten Punkt
in der Wurzel speichert und durch diesen ersten Punkt ein Koordinatenkreuz legt. Es entsteht so eine
Zerlegung der Ebene in vier Quadranten. Die Wurzel erhält vier Zeiger auf die Kinder, einen für jeden
Quadranten. Der nächste Punkt wird als i-tes Kind von der Wurzel eingefügt, wenn er in den i-ten Quadranten bzgl. der Wurzel fällt. Analog wird mit den restlichen Punkten verfahren. Hat ein Elternknoten
bereits ein i-tes Kind, dann wird das Einfügen bei diesem Kind fortgesetzt.
a) Nehmen Sie die Punkte aus Aufgabe 9, bauen Sie einen Quadranten-Baum auf, zeichnen Sie den
Baum und ebenfalls die Zerlegung der Ebene.
b) Geben Sie einen Algorithmus in Pseudocode an, der nach Punkten in einem Quadranten-Baum
sucht.
3
Herunterladen