Uebung 10 - Lehrstuhl für Informatik der RWTH Aachen

Werbung
Datenstrukturen und Algorithmen SS17
Übungsblatt 10 (Abgabe 12.07.2017)
Prof.aa
Dr. Ir. G. Woeginger
T. Hartmann, D. Korzeniewski, B. Tauer
Allgemeine Hinweise:
• Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung
(Tutorium) bearbeitet werden. Namen und Matrikelnummern der Studierenden sind auf jedes Blatt
der Abgabe zu schreiben. Heften bzw. tackern Sie die Blätter!
• Die Nummer der Übungsgruppe muss links oben auf das erste Blatt der Abgabe geschrieben
werden. Notieren Sie die Gruppennummer gut sichtbar, damit wir besser sortieren können.
• Die Lösungen müssen bis Mittwoch, den 12.07.2017 um 16:00 Uhr in den Übungskasten vom i1
(Erdgeschoss, Treppenhaus E1 im Informatik-Zentrum) eingeworfen werden. Alternativ können Sie die
Lösungen auch vor der Abgabefrist direkt bei Ihrer Tutorin/Ihrem Tutor abgeben.
Globalübungsaufgabe1 (All Pair Shortest Path):
Betrachten Sie den folgenden Graphen:
4
A
B
3
1
3
1
1
C
D
Führen Sie den Algorithmus von Floyd auf diesem Graphen aus. Geben Sie dazu nach jedem Durchlauf der
äußeren Schleife die aktuellen Entfernungen in einer Tabelle an. Die erste Tabelle enthält bereits die Adjazenzmatrix nach Bildung der reflexiven Hülle. Der Eintrag in der Zeile i und Spalte j ist also ∞, falls es keine
Kante vom Knoten der Zeile i zu dem Knoten der Spalte j gibt, und sonst das Gewicht dieser Kante. Beachten
Sie, dass in der reflexiven Hülle jeder Knoten eine Kante mit Gewicht 0 zu sich selbst hat.
1.
A
B
C
D
2.
A
0
3
3
1
A
B
4
0
∞
∞
B
C
∞
∞
0
∞
C
D
∞
1
1
0
D
3.
A
B
C
D
4.
A
A
B
B
C
C
D
D
A
B
C
D
A
B
C
D
1
Datenstrukturen und Algorithmen SS17
Übungsblatt 10 (Abgabe 12.07.2017)
5.
A
B
C
D
A
B
C
D
2
Datenstrukturen und Algorithmen SS17
Übungsblatt 10 (Abgabe 12.07.2017)
Globalübungsaufgabe2 ((Gewichtetes) Matching):
a) Wenden Sie den in der Vorlesung Vorgestellten Algorithmus auf nachfolgenden kanten-gewichteten bipartiten Graphen an.
x1
x2
7
7
x3
3
6
8
9
y1
y2
5
y3
b) Es sei G = (X ∪ Y, E) ein bipartiter Graph mit |X| = |Y |, der KEIN perfektes Matching besitzt.
Entwerfen Sie einen schnellen Algorithmus, der eine Menge S ⊆ X mit |N (S)| < |S| berechnet.
3
Datenstrukturen und Algorithmen SS17
Übungsblatt 10 (Abgabe 12.07.2017)
Globalübungsaufgabe3:
Entwerfen Sie einen effizienten Algorithmus für das folgende Problem:
Eingabe: positive ganze Zahlen x1 , ..., xn und y1 , ..., yn .
Frage: Gibt es Operatoren o1 , ..., on ∈ {+, −, ∗, /}, sodass die n reellen Zahlen xi oi yi paarweise verschieden
sind?
Gehen Sie dabei aus, dass sie xi o1 yi für alle i ∈ {1, . . . , n} in konstanter Zeit berechnen können.
Hausaufgabe4 (All Pair Shortest Path):
(5 Punkte)
a) Betrachten Sie den folgenden Graphen:
7
4
A
B
C
3
5
2
1
2
1
97
4
D
E
2
Führen Sie den Algorithmus von Floyd auf diesem Graphen aus. Geben Sie dazu nach jedem Durchlauf
der äußeren Schleife die aktuellen Entfernungen in einer Tabelle an. Die erste Tabelle enthält bereits die
Adjazenzmatrix nach Bildung der reflexiven Hülle. Der Eintrag in der Zeile i und Spalte j ist also ∞, falls
es keine Kante vom Knoten der Zeile i zu dem Knoten der Spalte j gibt, und sonst das Gewicht dieser
Kante. Beachten Sie, dass in der reflexiven Hülle jeder Knoten eine Kante mit Gewicht 0 zu sich selbst hat.
1.
A
B
C
D
E
2.
A
0
5
∞
∞
4
A
B
7
0
3
∞
2
B
C
∞
4
0
∞
2
C
D
1
∞
∞
0
2
D
E
∞
1
97
∞
0
E
3.
A
B
C
D
E
4.
A
A
B
B
C
C
D
D
E
E
4
A
B
C
D
E
A
B
C
D
E
Datenstrukturen und Algorithmen SS17
Übungsblatt 10 (Abgabe 12.07.2017)
5.
A
B
C
D
E
6.
A
A
B
B
C
C
D
D
E
E
A
B
C
D
Hausaufgabe5 (Transitive Hülle):
E
(2+3=5 Punkte)
a) Betrachten Sie den Graphen G = (V, E) aus der vorherigen Hausaufgabe. Geben Sie die transitive Hülle
E ∗ der Kantenrelation E an?
b) Betrachten Sie folgende Relation R. Bestimmen Sie die transitive Hülle R∗ von R.

1
0
R=
0
0
1
1
0
0
1
1
1
0

0
0

0
0
Geben Sie eine Relation R0 mit minimaler Kardinalität aus (dh. die Relation dargestellt als Matrix hat
eine minimale Anzahl von 1en), sodass R∗ die transitive Hülle von R0 ist.
Hausaufgabe6 (Gewichtetes Matching):
(3+2+2+4=11 Punkte)
a) Wenden Sie den in der Vorlesung Vorgestellten Algorithmus auf nachfolgenden kanten-gewichteten bipartiten Graphen an. Zeichnen Sie für die dritte und folgende Iteration den Hilfsgraphen.
x1
x2
4
8
x3
3
5
3
y1
y2
6
3
y3
b) Betrachten Sie den vollständigen bipartiten Graphen K100,100 (bestehend aus zwei Paritionen X und Y
von je 100 Knoten wo jeder Knoten aus X mit jedem Knoten aus Y verbunden ist). Konstruieren Sie
ganzzahlige Kantengewichte für K100,100 , sodass gilt: Das Matching mit maximalem Gewicht ist eindeutig
und besteht aus genau 50 Kanten.
c) Gibt es eine derartige Konstruktion, wie in b), auch mit ganzzahligen POSITIVEN Kantengewichten?
Falls ja, geben Sie ein solches an. Falls nein, beweisen Sie das dies der Fall ist.
d) In der Vorlesung wurde gezeigt, dass jeder Graph G = (V, E) die Ungleichung τ (G) ≥ ν(G) erfüllt: Das
kleinste Vertex-Cover ist mindestens so groß wie das größte Matching.
Zeige: Für jedes reelle ε > 0 existiert ein Graph G, für den τ (G) ≥ (2 − ε) ν(G) gilt.
5
Datenstrukturen und Algorithmen SS17
Übungsblatt 10 (Abgabe 12.07.2017)
Hausaufgabe7:
(6 Punkte)
Die Bananenhändler auf Booten verkaufen auf den Wasserstraßen vom Bananenland ihre Bananen. Die Bananenhändler befinden sich auf den Kreuzungen der Wasserstraßen. Es gibt mittlerweile jedoch so viele Bananenhändler, dass mehrere Bananenhändler auf der gleichen Kreuzung verkaufen. Bis zu 3 Händler befinden sich auf
einer Kreuzung. Sie wollen sich absprechen und den Markt besser unter sich aufteilen in dem sei sich von den
Kreuzungen auf die Straßen verteilen. Dabei soll in Zukunft jede Straße nur von einem Händler besetzt werden.
Die wenig seetauglichen Boote der Bananenhändler, können jedoch nur maximal zu einer angrenzenden Straße
einer Nachbarkreuzung fahren.
Gelingt den Bananenverkäufern ihr Vorhaben? Entwerfen Sie einen möglichst effizienten Algorithmus um möglichst viele Händler auf die Wasserstraßen zu verteilen. Untersuchen Sie die Laufzeit Ihres Algorithmus.
6
Herunterladen