Aufgabe 6.3 Betrachten Sie erneut die Steiner-Bäume gemäß Aufgabe 5.4 (zusammen mit den dort einV geführten Bezeichnungen). Sei dabei E = 2 und ` : E → (0, ∞), sodass die Dreiecksungleichung erfüllt ist (d.h. `({v1 , v2 }) ≤ `({v1 , v3 }) + `({v3 , v2 }) für alle v1 , v2 , v3 ∈ V ). Ferner sei B 0 die Menge aller Kantenmengen F von Steiner-Bäumen H in G mit degH (v) ≥ 3 für alle Steiner-Knoten v ∈ S und I 0 die monotone Hülle von B 0 (also die Menge aller I ⊂ F ∈ B 0 ). a) Zeigen Sie: (i) Es existiert immer ein bezüglich ` minimaler Steiner-Baum in B 0 . (ii) Für alle F ∈ B 0 gilt für die zugehörige Menge der Steiner-Knoten, dass |S| ≤ |T | − 2 gilt. (iii) Selbst wenn die Knoten aus G alle in R eingebettet sind und ` dem euklidischen Abstand entspricht, liefert der Greedy-Algorithmus über B 0 schon auf kleinen Graphen beliebig schlechte Ergebnisse. (iv) 1 Konstruieren Sie einen Algorithmus mit Approximationsgüte 2 für Gewichtsfunktionen, die die Dreiecksungleichung erfüllen. b) Wie gelangt man zu obiger Problemstellung, wenn die Dreiecksungleichung evtl. nicht erfüllt ist, aber ` > 0 gilt und nicht notwendig ein Steiner-Baum gesucht ist, sondern nur eine bezüglich ` minimale Kantenmenge die alle Terminale verbindet? Lösung zu Aufgabe 6.3 a) (i) Dass minimale Steiner-Bäume keine Steiner-Blätter enthalten folgt bereits aus der Definition in 6.4. Da für ` die Dreiecksungleichung gilt, können aber auch Steiner-Knoten v mit Grad 2 vernachlässigt werden, da die direkte Kante zwischen den beiden durch v verbundenen Knoten nicht länger ist als die beiden mit v inzidenten Kanten. (ii) Jeder Steiner-Baum F ∈ B0 besitzt |T | + |S| − 1 Kanten. Nehmen wir an, dass |S| > |T | − 2 gilt, so folgt X X X degF (v) = degF (v) − degF (v) ≤ 2(|T | + |S| − 1) − 3|S| < |T |. v∈T v∈T ∪S v∈S Dann existiert aber ein Knoten v ∈ T mit degF (v) = 0 im Widerspruch zu F Steiner-Baum. (iii) Betrachten Sie folgenden Graphen: Die Knoten seien wie folgt in R1 eingebettet: ti = i(1+) ∈ T i = 0, . . . , 3, vj = −N −j ∈ V \T , j = 0, 1. Der optimale SteinerBaum ist dann offensichtlich gleich dem optimalen Spannbaum auf T , Länge 3(1+ ) (durchgezogene Kanten). Der Greedy-Algorithmus wählt zunächst die Kante zwischen den beiden Steiner-Knoten und muss dann um die Gradbedingungen zu erfüllen Kanten der Länge N , N + 1 + , N + 3 + 2 und N + 4 + 3 hinzufügen (gestrichelte Kanten). 1 Zusatzaufgabe, muss nicht bearbeitet werden. (iv) Die folgenden Algorithmen erzeugen Faktor 2 Approximationen des optimalen Steiner-Baums: • Bestimme einen minimalen Spannbaum B in dem durch T induzierten Subgraphen (etwa mit Prim oder Kruskal). Beweis der Güte: Sei F ein minimaler Steiner-Baum. Wir doppeln alle Kanten von F . Der so entstandene Multigraph besitzt offensichtlich einen Eulerkreis E. Sortiert man nun die Knoten aus T entlang des Kreises E und betrachtet den so entstandenen Weg W , so ist dieser aufgrund der Dreieicksungleichung kürzer als zwei mal die Länge der Kanten aus F . Da W aber auch ein (sehr spezieller) Spannbaum in dem durch T induzierten Subgraphen ist, ist W nicht kürzer als die Summe der Kanten in B. • Bestimme einen minimalen Spannbaum auf ganz V . Lösche dann alle SteinerBlätter, solange bis nur noch Terminal-Blätter existieren. Dann lösche die Steiner-Knoten vom Grad zwei und verbinde die entstehenden zwei Zusammenhangskomponenten mit einer minimalen Kante, die diese (direkt) verbindet. Für den maximalen Steiner-Baum Fg+ ∈ B 0 der so entsteht, gilt `(Fg+ ) ≤ 2`(F ). Beweis der Güte: Sei Sg+ die Menge der Steiner-Knoten in Fg+ und S die Menge der Steiner-Knoten in F . Dann kann ohne Einschränkung angenommen werden, dass S ⊂ Sg+ . Denn ist v ∈ S \ Sg+ so kann eine der mit v in der Optimallösung inzidenten Kanten ohne Verlust durch die aus Fg+ ersetzt werden, die die entstehenden T -Zusammenhangskomponenten direkt verbindet. Seien nun Fg+ = {ē1 , . . . , ēk } und F = {e1 , . . . , el }, wobei |T | − 1 ≤ l ≤ k ≤ |T |+|Sg+ |−1 ≤ 2|T |−3 und `(ē1 ) ≤ · · · ≤ `(ēk ), `(e1 ) ≤ · · · ≤ `(el ). Die Kanten aus Fg+ können (während einer Greedy-Konstruktion) wie folgt in zwei Teilmengen zerlegt werden: F1 enthält die Kanten, die zunächst nur SteinerKnoten aus Sg+ \ S miteinander verbinden oder Steiner-Knoten aus Sg+ \ S an eine (T ∪ S)-Zusammenhangskomponente anbinden (|Sg+ \ S| Stück). F2 enthält diejenigen Kanten die (T ∪ S)-Zusammenhangskomponenten (evtl. über andere Knoten) verbinden (|T ∪ S| − 1 Stück). Wegen (d) ist |F1 | ≤ |F2 | = l und nach Konstruktion existiert zu jedem ēi ∈ F1 ein ēj ∈ F2 mit j > i also auch `(ēj ) ≥ `(ēi ) und damit `(F1 ) ≤ `(F2 ). Betrachtet man nun F und F2 dann gilt aufgrund der Greedy-Auswahl der Kanten in F2 , dass `(F2 ) ≤ `(F ). Insgesamt folgt also die Behauptung. Man beachte, dass der erste Algorithmus per Definition keine Steiner-Knoten benutzt, der zweite sogar dazu neigt zu viele zu verwenden. Tendenziell wird der eine also gute Resultate liefern, wenn der andere schlechte liefert. Folgendes Beispiel deutet jedoch an, dass auch das Minimum über beide Ergebnisse asymptotisch keine bessere Approximationsschranke liefert: Im folgenden Graphen seien die die Kantenlängen 1 für alle durchgezogenen Kanten und 1 + für alle gestrichelten Kanten. Die restlichen Knotenabstände seien gemäß der kürzesten Wege entlang der anderen Kanten definiert (die Dreiecksungleichung ist also erfüllt). Der erste Approximationsalgorithmus erzeugt einen Spannbaum auf den Terminalen, Gewicht 22+10. Der zweite Approximationsalgorithmus wählt genau den Steiner-Baum der durchgezogenen Kanten, Gewicht 21. Der optimale Steiner-Baum besteht allerdings aus den gestrichelten Kanten, Gewicht 12(1 + ). Man erkennt leicht, dass man auf dieser Weise Graphen mit 3 × 2q Terminalen erzeugen kann, sodass die Güteschranke beider Approximationsalgorithmen asymptotisch (q → ∞, → 0) erreicht wird. b) Durch Bestimmung kürzester Wege zwischen je zwei Knoten kann immer angenommen werden, dass die Dreiecksungleichung gilt. Die entsprechenden Kanten des Hilfsgraphen müssen dann später nur in die korrekten Wege zurück transformiert werden. Aufgabe 6.4 Sei G = (V, E, `) ein gewichteter gerichteter Graph und v1 ∈ V . Dann ist A ⊂ E eine Arboreszenz (Branching, gerichteter Baum) mit Wurzel v1 in G, wenn |A| = |V | − 1 und für alle v ∈ V existieren gerichtete Wege von v1 nach v in A. a) Formulieren Sie die Suche nach maximalen Arboreszenzen (mit Wurzel v1 ) in einem gewichteten Digraphen als Maximierungsaufgabe über einem Unabhängigkeitssystem U. b) Um zu entscheiden, ob G eine Arboreszenz mit Wurzel v1 besitzt, kann man zum vollständigen Graphen Ḡ = (V, (V )2 ) übergehen (mit (V )2 = {(v, w) : v, w ∈ V, v 6= w}), die Gewichtsfunktion `(e) = 1, falls e ∈ E und `(e) = 0, falls e 6∈ E definieren und fragen, ob es in Ḡ eine Arboreszenz A mit Wurzel v1 vom Gewicht `(A) = |V | − 1 gibt. Zeigen Sie, dass der Greedy-Algorithmus versagt, wenn man das Unabhängigkeitssystem zu Ḡ verwendet, dass aber eine gerichtete Variante des Prim-Algorithmus mit Anfangsknoten v1 das richtige Ergebnis liefert. c) Zeigen Sie, dass der Algorithmus von Prim zur Bestimmung maximaler Arboreszenzen für beliebige Gewichtsfunktionen bereits auf kleinen Graphen beliebig schlechte Approximationen erzeugt. d) 2 Entwickeln Sie einen Algorithmus zur Bestimmung einer maximalen Arboreszenz, dessen Laufzeit O(p(|V |)) für ein Polynom p ist. Lösung zu Aufgabe 6.4 a) Sei G = (V, E, `) ein gwichteter gerichteter Graph. Wir betrachten für eine Teilmenge I ⊂ E die beiden Bedingungen 1) Der induzierte ungerichtete Graph G0 (I) ist kreisfrei; 2) Es gilt deginI (v) ≤ 1, ∀v ∈ V \ {v1 } und deginI (v1 ) = 0; und definieren I ∈ Ij , falls I Bedingung j erfüllt. Dann bilden die Mengen M1 = (E, I1 ) und M2 = (E, I2 ) jeweils ein Matroid (graphisches Matroid bzw. Partitionsmatroid). Damit ist U = M1 ∩ M2 als Schnitt von zwei Matroiden ein Unabhängkeitssystem. Natürlich enthält U alle Arboreszenzen, und jede Arboreszenz A ist eine Basis von U . Umgekehrt gilt für eine Basis B ∈ B, dass B Arboreszenz ist, wenn |B| = |V | − 1. Zu einer gegebenen Gewichtsfunktion ` : EP→ [0; ∞) definieren wir jetzt die Funktion `0 für e ∈ E durch `0 (e) = `(e)+N mit N = e∈E `(e), und betrachten das entsprechende Optimierungsproblem X max `0 (I), mit `0 (I) = `0 (e) I∈I e∈I Aus der Definition von `0 folgt erstens, dass nur Basen mit Mächtigkeit |V | − 1 - also Arboreszenzen - optimal sein können, und zweitens, dass die Optimallösung auch eine maximale Arobreszenz bezüglich ` sein muss. b) Wir zeigen zuerst, dass der Greedy-Algorithmus versagt. Dazu betrachten wir den folgenden Graphen G. 2 Zusatzaufgabe, muss nicht bearbeitet werden. Nach Voraussetzung bekommt jede Kante von G das Gewicht 1. Startet der GreedyAlgorithmus mit der gestricheleten Kante, so kann diese nicht mehr zu einer Arboreszenz des Graphen G ergänzt werden. Wir betrachten jetzt die folgende Variante des Algorithmus von Prim: Analog zum ’gewöhnlichen’ Algorithmus von Prim lassen wir die Arboreszenz ausgehend von v1 entlang gerichteter Kanten wachsen. Da wir hier außerdem eine maximale Arboreszenz finden wollen, muss das label setting entsprechend angepasst werden. Natürlich findet der Algorithmus eine Arboreszenz in Ḡ, da in jedem Schritt ein noch freier Knoten angeschlossen wird (d.h., es werden keine Kreise geschlossen, und am Ende sind alle Knoten aus Ḡ angebunden). Enthält G keine Arboreszenz, so hat jede Arboreszenz A in Ḡ nach Definition einen Wert |A| < |V | − 1 und der Algorithmus arbeitet korrekt. Wir nehmen jetzt an, dass G eine Arboreszenz besitzt, aber der Algorithmus versagt. In diesem Fall wird in (mindestens) einem Schritt ein Knoten mit Label 0 hinzugefügt. Das ist aber gleichbedeutend damit, dass keine Kante in G existiert, die die Menge der bisher gewählten Knoten mit den restlichen verbindet. Das ist ein Widerspruch zur Voraussetzung. c) Wir betrachten den folgenden Graphen G Die maximale Arboreszenz mit Wurzel v1 hat den Wert N + 1. Die Variante des Algorithmus von Prim findet aber eine Arboreszenz, die nur den Wert 4 hat. d) Die Grundidee des Algorithmus basiert auf einer wiederholten Anwendung des Greedy Algorithmus für das Matroid M2 aus (a). Findet der Greedy Algorithmus eine maximale Lösung für M2 , die auch Bedingung (1) erfüllt, so ist man fertig. Andernfalls wird der ursprüngliche Graph geeignet modifiziert, und man wiederholt den ersten Schritt. Im Detail hat der Algorithmus die folgenden Schritte: i) Greedy Algorithmus: Gegeben gewichteter Digraph G = (V, E, `) und das zugehörige Partitionsmatroid M2 = (E, I2 ) aus (a). Wir bestimmen mit dem Greedy Algorithmus eine optimale Lösung B ∗ von max `(B). B∈I2 Falls B ∗ Bedingung (1) erfüllt, weiter zu Schritt (iii) ansonsten zu Schritt (ii). In diesem Fall ist sogar jeder Kreis von B ∗ gerichtet. ii) Modifizieren des Graphen: Gegeben gewichteter Digraph G = (V, E, `) und Menge B ⊂ E, die einen gerichteten Kreis K = (VK , EK ) enthält. Wir führen die Kontraktion von K in G zu G/K durch, d.h. der Kreis wird zu einem einzigen neuen Knoten w zusammengezogen. Wir definieren jetzt die Gewichtsfunktion `G/K auf den Kanten von G/K: Setze `G/K (e) = `(e) für jede Kante e, die nicht mit dem neuen Knoten w inzident ist oder die jetzt vom neuen Knoten w ausgeht, d.h. e = (w, v), v ∈ V \ VK . Es bleiben die Kanten übrig, die jetzt in den Knoten w hineinlaufen. Gilt e = (v, w) so gab es im Graphen G einen Knoten z ∈ VK mit e = (v, z) und eine Kante eK ∈ EK aus dem Kreis K, die in z hineinläuft. Hiermit setzen wir `G/K (e) = `(e) − `(eK ). Zurück zu Schritt (i) mit Graphen G/K und Gewichtsfunktion `G/K . iii) Konstruktion der Arboreszenz A: Alle Kanten, die in Schritt (i) vom Greedy Algorithmus beim letzten Durchlauf ausgewählt wurden, werden zu A hinzugefügt. Die restlichen Kanten der Arboreszenz erhalten wir durch sukzessives rückgängig machen der Kontraktionen. Hierbei werden jetzt aus jedem Kreis alle bis auf eine Kante zur Arboreszenz hinzugefügt. Die Kante eines Kreises, die nicht zur Arboreszenz hinzugefügt wird, ergibt sich dabei eindeutig dadurch, dass sonst in G in einen Knoten mehr als eine Kante hineinlaufen würde. Bemerkungen: • Da in Schritt (ii) die Anzahl der Knoten bei jedem Durchlauf abnimmt, ist klar, dass der Algorithmus nach O(p(|V |)) Schritten terminiert. • Die Definition der Gewichtsfunktion `G/K für die Kanten (v, w), v ∈ V \VK beruht auf der Idee, dass das Gewicht von Kreis und der Kante, die den Kreis anbindet, insgesamt maximal sein soll. Der Gewinn bzw. Verlust, der entsteht, wenn der Kreis durch die Kante e angebunden wird (und dadurch eine eindeutige Kante des Kreises gestrichen werden muss), entspricht genau dem neuen Gewicht `0 (e). Abgabe: bis Montag, 16.00 im dafür vorgesehenen Kasten im Untergeschoss. Bitte notieren Sie auf ihrer Abgabe: • Name(n), Vorname(n), • Matrikelnummer(n) und • Übungsgruppe (Wochentag, Uhrzeit und Übungsleiter). Bitte geben Sie möglichst in Dreiergruppen ab.