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