Lösungsvorschläge – Blatt 5

Werbung
Algorithmik für schwere Probleme
Departement Informatik
Prof. Dr. Juraj Hromkovič
Dr. Hans-Joachim Böckenhauer
Dr. Richard Královič
http://www.ita.inf.ethz.ch/alscpr17
Lösungsvorschläge – Blatt 5
Zürich, 28. März 2017
Lösung zu Aufgabe 7
(a) Wenn für zwei Bags Xi und Xj gilt, dass Xi ⊆ Xj , dann gilt auch Xi ⊆ Xk für alle
Knoten Xk auf dem Pfad von Xi nach Xj . Folglich ist eine Baumzerlegung genau
dann klein, wenn für jede Kante {Xi , Xj } in T gilt, dass Xi 6⊆ Xj und Xj 6⊆ Xi . Also
genügt es, alle Kanten {Xi , Xj } einer Baumzerlegung zu inspizieren und diejenigen,
welche die Bedingung für eine kleine Baumzerlegung nicht erfüllen, zu kontrahieren,
d. h. durch einen neuen Knoten Xij zu ersetzen mit Xij = Xi ∪ Xj .
Es ist offensichtlich, dass dies in Linearzeit (bezüglich |V (T )|) möglich ist.
(b) Die Baumzerlegung hat Weite k, also hat jede Bag höchstens Grösse k + 1. Ein
Algorithmus muss jede mögliche 3-Färbung dieser Menge betrachten und überprüfen,
ob sie gültig ist. Es gibt für eine Knotenmenge der Kardinalität höchstens k + 1
höchstens 3k+1 viele verschiedene 3-Färbungen. Die Überprüfung, ob eine 3-Färbung
gültig ist, kann mit einer geeigneten Datenstruktur (z. B. einer Adjazenzliste) in Zeit
k 2 erfolgen. Die Gesamtlaufzeit des Algorithmus pro Bag ist somit in O(3k+1 · k 2 ).
(c) Wir beweisen die Aussage per Induktion über |V |.
Für |V | = 1 gilt sie offensichtlich: Eine kleine Baumzerlegung eines Graphen mit
einem Knoten v enthält genau eine Bag {v}.
Die Aussage gelte nun also für |V | − 1. Wir nehmen an, sie gilt nicht für |V | und
betrachten o. B. d. A. eine beliebige kleine Baumzerlegung der Grösse |V | + 1. Sei
X ein Blatt in dieser Baumzerlegung. Wir beobachten, dass in X mindestens ein
Knoten vorkommt, der sonst in keiner Bag vorkommt. (Andernfalls würden alle
Knoten in X auch in ihrer Nachbar-Bag vorkommen, und es würde sich nicht um
eine kleine Baumzerlegung handeln.) Wir nehmen o. B. d. A. an, dass es genau einen
solchen Knoten v in X gibt. Durch Entfernen von X und der adjazenten Kante
entsteht eine kleine Baumzerlegung für den Graphen G[V − {v}] der Grösse |V |, was
jedoch ein Widerspruch zur Annahme ist, dass die Aussage für |V | − 1 gilt.
(d) Für jedes Blatt Xi in T gilt offensichtlich Extcol(Xi ) = Col(Xi ).
Für einen beliebigen inneren Knoten X nehmen wir an, Extcol(X1 ), . . . , Extcol(Xm )
wurden bereits berechnet, wobei X1 , . . . , Xm die Kinder von X sind. Dann besteht
Extcol(X) aus allen Färbungen c ∈ Col(X), so dass für jedes Kind Xi eine Färbung
ci ∈ Col(Xi ) besteht und c und ci übereinstimmen für alle Knoten in X ∩ Xi .
Ein Algorithmus muss folglich für jede mögliche Kombination einer Färbung c ∈
Col(X) und einer Färbung ci ∈ Col(Xi ) überprüfen, ob sie für alle Knoten in X ∩ Xi
übereinstimmt.
Offensichtlich gilt |Extcol(Xi )| ≤ |Col(Xi )| ≤ 3k+1 für jede Bag Xi . Somit gibt es
(3k+1 )2 = 32(k+1) mögliche Kombinationen von Färbungen. Die Überprüfung, ob c und
ci auf allen Knoten in X ∩Xi übereinstimmen, benötigt höchstens Zeit 2(k +1). Somit
ist die Gesamtlaufzeit des Algorithmus pro Kante in O(32(k+1) 2(k + 1)) = O(32k · k).
Der Algorithmus wird auf jeder Kante genau einmal ausgeführt (nämlich für den
jeweiligen Elternknoten), insgesamt ist seine Laufzeit also in O(|E(T )| · 32k · k). Wir
gehen davon aus, dass die betrachtete Baumzerlegung klein ist, also gilt gemäss
Aufgabenteil (c) |E(T )| = |V (T )| − 1 ≤ |V | − 1. Die Laufzeit des Algorithmus ist
somit in O(|V | · 32k · k).
Lösung zu Aufgabe 8
Wir betrachten das (l × l)-Gitter Gl×l = (V, E) aus der Aufgabenstellung. Zunächst
nummerieren wir die Knoten von oben links nach unten rechts durch, wir bezeichnen also
den j-ten Knoten der i-ten Zeile mit v(i−1)l+j für i, j ∈ {1, 2, . . . , l}.
Die Aussage beweisen wir konstruktiv durch die explizite Angabe einer Baumzerlegung.
Dazu setzen wir Xk = {vk , vk+1 , . . . , vk+l }, für k = 1, 2, . . . , l(l − 1). Dann ist (V 0 , E 0 ) mit
V 0 := {X1 , X2 , . . . , Xl(l−1) } und
E 0 := {{Xi , Xi+1 } | 1 ≤ i ≤ n − 1}
eine gültige Baumzerlegung für Gl×l . Um uns davon zu überzeugen, überprüfen wir die
drei Eigenschaften:
(i) Es ist nach Konstruktion sofort klar, dass jeder Knoten aus V in mindestens einer
Menge Xk vorkommt.
(ii) Zu sehen, dass jede horizontale Kante in mindestens einer Bag ist, ist offensichtlich.
Jede vertikale Kante ist ebenfalls in einer Bag enthalten. Dies folgt sofort aus der
Grösse der Bags (diese sind grösser als die Länge einer Zeile) und der Tatsache, dass
sich jeweils die Bag Xk+1 aus der Bag Xk durch Entfernen und Hinzufügen eines
Knotens ergibt.
(iii) Alle Bags, die einen festen Knoten enthalten, bilden nach Konstruktion offensichtlich
einen Teilbaum in T .
Es gilt |Xk | = l + 1 für 1 ≤ k ≤ l(l − 1), wir haben also gezeigt, dass die Baumweite von
Gl×l höchstens l ist.
Bemerkung: Wir haben hier sogar einen Spezialfall gezeigt, denn der Baum T ist ein Pfad.
Herunterladen