Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer Tobias Pröger Thomas Tschager 13. Mai 2015 Datenstrukturen & Algorithmen Aufgabe 12.1 Blatt 12 FS 15 Matchings. Sei G = (V, E) ein ungerichteter Graph. Eine Menge M ⊆ E heisst Matching, wenn je zwei verschiedene Kanten e, e0 ∈ M keinen gemeinsamen Knoten haben. Die Grösse eines Matchings ist die Anzahl seiner Kanten. Ein Matching M ⊆ E heisst inklusionsmaximal, wenn keine Kante e ∈ E\M existiert, sodass M ∪· {e} ein Matching ist. Ein Matching der Grösse d|V |/2e heisst perfekt. a) Sei M ∗ ein Matching maximaler Kardinalität. Zeigen Sie, dass für jedes inklusionsmaximale Matching M ⊆ E die Beziehung |M | ≤ |M ∗ | ≤ 2|M | gilt. b) Geben Sie einen Graphen mit 8 Knoten sowie ein inklusionsmaximales Matching an, das genau halb so viele Kanten wie ein Matching mit maximaler Kardinalität besitzt. c) Beschreiben Sie einen möglichst effizienten Algorithmus, der ein beliebiges inklusionsmaximales Matching berechnet. Geben Sie auch die Laufzeit an. d) Geben Sie eine Teilmenge der Knoten des folgenden bipartiten Graphen an, die mit dem Satz von Hall beweist, dass der Graph kein perfektes Matching besitzt. Aufgabe 12.2 a b c d e f g h i j Dominosteine platzieren. In dieser Aufgabe soll ein Spielfeld, auf dem ein Gitter mit n Zeilen und m Spalten gezeichnet ist, mit möglichst vielen Dominosteinen bedeckt werden. Einige Felder des Gitters müssen jedoch frei bleiben. Das Gitter ist als (n × m) Matrix gegeben. Ein Eintrag der Matrix enthält eine 1, wenn das entsprechende Feld nicht bedeckt werden darf, und andernfalls eine 0. Berechnen Sie die maximale Anzahl von Dominosteinen, die auf das Spielfeld gelegt werden können, sodass sich zwei Dominosteine nicht gegenseitig überdecken und die in der Matrix mit 1 gekennzeichneten Feldern frei bleiben. Im folgenden Beispiel ist ein Spielfeld mit drei Zeilen und sechs Spalten dargestellt. Die schwarzen Felder müssen frei bleiben. Es können höchstens sechs Dominosteine auf dem Spielfeld platziert werden. Aufgabe 12.3 Programmieraufgabe: Dominosteine platzieren. In dieser Aufgabe soll die Lösung aus Aufgabe 12.4 implementiert werden. Das Spielfeld wird als (n × m) Matrix mit Einsen und Nullen gegeben und die maximale Anzahl von nichtüberlappenden Dominosteine soll berechnet werden, sodass kein Feld mit einer 1 in der Matrix bedeckt wird. Eingabe Die erste Zeile der Eingabe enthält lediglich die Anzahl t der Testinstanzen. Danach folgt die Beschreibung der Testinstanzen. Die erste Zeile enthält die Dimensionen der Matrix n, m < 30. Anschließend folgen n Zeilen, die jeweils m Elemente der entsprechenden Zeile der Matrix enthalten. Ausgabe Für jede Testinstanz soll lediglich eine Zeile ausgegeben werden. Sie enthält die gesuchte maximale Anzahl von Domino-Steinen, die auf dem gegebenen Gitter platziert werden können. Beispiel Eingabe: 3 1 0 3 1 0 0 2 1 0 3 1 0 2 0 0 1 3 0 1 0 0 Ausgabe: 0 2 1 Anmerkungen • In 30% der Testinstanzen gilt n, m ≤ 5, in 80% der Testinstanzen n, m ≤ 10. • Ein Algorithmus mit Laufzeit O((nm)2 ) genügt um die volle Punktzahl zu erhalten. Abgabe: Bis Mittwoch, den 20. Mai 2015. 2