Datenstrukturen & Algorithmen Blatt 12 FS 15

Werbung
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
Herunterladen