Technische Universität Berlin Institut für Mathematik ADM I – Graphen und Netzwerkalgorithmen Sommersemester 2007 Prof. Dr. Stefan Felsner Felix König Elisabeth Günther Torsten Ueckerdt 12. Übungsblatt Abgabe: Freitag, 13.7.2007, vor der Übung Dies ist das vorletzte Blatt der zweiten Semesterhälfte. Aufgabe 45 5 Punkte Zeigt, dass in einer knickmininalen orthogonal planaren Zeichnung eines planaren Graphen alle Knicke einer Kante immer nur in die gleiche Richtung“ gehen. (Anders gesagt: Jede Fläche bildet ” mit einer sie begrenzenden Kante entweder nur kleine oder nur große Knicke.) a) Gebt einen geometrischen Beweis an. b) Gebt einen Beweis an, der über kostenminimale Flüsse argumentiert. Aufgabe 46 5 Punkte Das Resultat von Aufgabe 3 auf Blatt 1 war, dass die Hall Condition ein notwendiges und hinreichendes Kriterium für die Existenz eines perfekten Matchings in einem bipartiten Graphen ist. Gebt einen Beweis dieser Tatsache an, dessen Argumentation auf maximalen Flüssen beruht und keine Induktion benutzt. Aufgabe 47 5 Punkte Sei G = (V, E) ein bipartiter Graph und M ein Matching in G. Gebt einen polynomiellen Algorithmus an, der direkt (d.h. ohne den Umweg über ein Flussproblem) einen M -augmentierenden Weg in G findet oder feststellt, dass es keinen solchen gibt, und argumentiert, warum er korrekt arbeitet. Aufgabe 48 5 Punkte Slither ist ein Zwei-Personen-Spiel, das auf einem Graphen G = (V, E) gespielt wird: Die Spieler First und Second ziehen abwechselnd, wobei First das Spiel beginnt. Ein Spielzug besteht in der Auswahl einer bisher von keinem Spieler gewählten Kante. Nach jedem Zug muss die Menge aller von den Spielern gewählten Kanten einen elementaren Weg (also einen Weg ohne Knotenwiederholungen) darstellen. Wer zuerst nicht mehr ziehen kann, verliert. a) Zeigt, dass First seinen Sieg erzwingen kann, falls es ein perfektes Matching in G gibt. b) Ein Knoten v ∈ V heißt inessenziell, falls es ein maximales Matching in G gibt, das v nicht überdeckt. Zeigt, dass Second seinen Sieg erzwingen kann, falls First als erstes eine Kante (u, v) mit u inessenziell wählt. Programmieraufgabe 10 (Abnahme während einer der RBs am 13.7.2007): Gegeben sei ein Schachbrett (d.h. ein schwarz-weiß kariertes Rechteck) der Größe n × m, in dem einige Felder fehlen“. Das ganze könnte in etwa so aussehen (links die zugehörige Eingabedatei mit ” der Größe des Schachbretts in der ersten und den Koordinaten der linken oberen Ecke der fehlenden Felder in den folgenden Zeilen): x y 7 x 6 1, 1 2, 1 3, 4 6, 4 Ziel ist es, so viele Dominosteine (also 1×2 oder 2×1 Rechtecke) wie möglich auf dem Schachbrett zu platzieren, ohne fehlende“ Felder zu überdecken. Natürlich dürfen die Dominosteine auch nicht ” über den Rand des Schachbretts hinausragen. Benutzt den Algorithmus aus Aufgabe 47 und implementiert ein Programm, das Instanzen im oben angegebenen Format einlesen kann und die Anzahl und Koordinaten der maximal auf dem Schachbrett platzierbaren Dominosteine berechnet und ausgibt. Testdateien gibt es auf der HP.