Lösungen zu Algorithmische Graphentheorie 10. April 2006 Aufgabe 1: Wir fassen den Permutationsgraphen als Strecken auf, die zwei Parallelen miteinander verbinden. Durchlaufe die Strecken in der durch eine der Parallelen gegebenen Reihenfolge. Färbe jede Strecke v in der kleinsten freien Farbe, d.h. betrachte alle Strecken, die v schneiden, und ermittle die vergebenen Farben. Die kleinste Farbe, die durch die Schnittstrecken nicht vergeben ist, wird v zugeordnet. Die Korrektheit ergibt sich wie folgt. Der obige Algorithmus verwende k Farben. Dann gibt es eine Strecke, die sich mit k − 1 anderen Strecken schneidet, denen alle schon Farben zugeordnet sind. Diese Strecke werde mit sk bezeichnet, und erhalte die Farbe k. Dann muss es eine Strecke sk−1 geben, die links von sk liegt und damit früher gefärbt worden ist, sich mit sk schneidet, und die die Farbe k − 1 erhalten hat. Warum wurde sk−1 mit k − 1 gefärbt? Weil sich links von sk−1 eine Strecke sk−2 befindet, die sich mit sk−1 schneidet und mit k − 2 gefärbt wurde. Dieses Argument lässt sich bis s1 fortsetzen. Durch die Lage der Strecken folgt, dass s1 , . . . , sk−1 alle auch sk schneiden. Daher liegt sk in einer k-Clique, und es sind mindestens k Farben notwendig, um den Graphen zu färben. Aufgabe 2: Anmerkung: Zwischen der Menge der Permutationsgraphen und der Menge der Intervallgraphen besteht keine Teilmengenbeziehung. D.h., es gibt sowohl Permutationsgraphen, die keine Intervallgraphen sind, als auch Intervallgraphen, die keine Permutationsgraphen sind. c) Ein Kreis der Länge 4, dargestellt durch C4 = (1, 2, 3, 4, 1), zu dem ein Knoten 5 und Kanten {1, 5} und {5, 3} hinzugefügt werden, ist ein Kreissehnengraph, lässt sich aber nicht durch Kreisbögen darstellen. Aufgabe 3: a) Der C7 ist ein Kreissehnengraph, der nicht als Dreiecksehnengraph dargestellt werden kann. b) Wir nehmen an, dass wir die k-Färbbarkeit nur für festes k entscheiden wollen. Wir wählen zwei Seiten A und B des Dreiecks, und betrachten zunächst nur Sehnen, die zwischen diesen beiden Seiten verlaufen, also nur einen von drei Teilen der Kanten von G. Der so erhaltene Graph werde mit GAB bezeichnet. Sei X der Schnittpunkt von A und B. Da A und B an X getrennt und so verschoben werden können, dass sie parallel liegen, ist GAB ein Permutationsgraph. Das bedeutet, dass wir das Cliquenproblem auf GAB effizient lösen können. Für jede Sehne S ∈ V (GAB ) sei hA (S) der Abstand zwischen dem Schnittpunkt von S mit A und X. Analog sei hB (S) definiert. Die Höhe einer Sehne sei dann h(S) = hA (S) + hB (S). Die Höhe einer Clique ist die Summe der Höhen ihrer einzelnen Sehnen. Aus GAB bilden wir einen reduzierten Graphen R(GAB ). Dazu nehmen wir für jedes i = k, . . . , 1 die Sehnen der höchsten i-Clique auf. Jede dieser Cliquen ist durch die oben definierte Höhe eindeutig bestimmt. Sei Ck die höchste k-Clique. Es gilt: Alle unterhalb von Ck , d.h. zwischen der Clique und X liegenden Sehnen können mit höchstens k Farben gefärbt werden. Dies gilt insbesondere auch für die Sehnen aus G − GAB , d.h. die Sehnen aus G, die in GAB weggelassen worden sind. Deren Farben ergeben sich direkt aus der Färbung der Clique. Sei S eine Sehne, die oberhalb von S 0 liegt. Dann gilt für jede Sehne T ∈ G − GAB : Wenn sich T und S 0 schneiden, schneiden sich auch T und 1 S. Also kann es keinen Farbkonflikt zwischen T und S 0 geben, wenn es keinen Konflikt zwischen T und S gibt. Oberhalb von Ck liegende Sehnen können aber nicht auf diese Weise gefärbt werden, da deren Farbe von Sehnen aus G − GAB beeinflusst werden. Daher wird für i = k − 1, . . . , 1 nicht nur die höchste i-Clique aufgenommen, sondern auch die i-Cliquen, die gemeinsame Sehnen mit einer j-Clique mit j > i haben. Jetzt wiederholen wir das Vorgehen für die anderen zwei Teile von G. Wir betrachten GAC , der die Sehnen zwischen Seiten A und C enthält, und ermitteln daraus R(GAC ) wie oben. Ebenso bilden wir R(GCB ) aus GBC . Es gilt jeweils, dass sich aus einer zulässigen Färbung des Restgraphen die Färbung des Graphen ergibt. Die Schwierigkeit besteht jetzt noch darin, eine gültige Färbung für den Graphen GR = R(GAB ) ∪ R(GAC ) ∪ R(GBC ) zu finden. Diese kann aber durch Ausprobieren ermittelt werden, da die Größe von GR nur von k abhängt. Dabei werden höchstens 3k Farben verwendet. Aus der Färbung für GR ergibt sich die Färbung von G unmittelbar. Aufgabe 4: Es wird das (allgemeine) Färbungsproblem für Kreisbogengraphen auf das (allgemeine) Färbungsproblem für propere Kreisbogengraphen angegeben, also Kreisbogen-Färb ≤p propere Kreisbogen-Färb gezeigt. Sei I = (G, k) eine Eingabe mit G = (V, E) ein Kreisbogengraph und k ∈ N. Sei f eine Funktion, die wie folgt aus einem Kreisbogengraphen einen properen Kreisbogengraphen macht. Zunächst wird sichergestellt, dass keine übereinanderliegenden Intervalle mit gleicher Länge vorhanden sind. Falls das der Fall ist, kürzen wir eines an beiden Enden um ein beliebig kleines σ > 0. Falls G nicht-proper ist, gibt es Bögen A, B, so dass B ⊂ A gilt. Dann werden die Bögen A, B und alle darüberliegenden Bögen zertrennt. Dies geschieht, indem jeweils ein Bogen der Länge σ entnommen wird, der Bogen also in zwei Teile zerfällt. Bei der Wahl der Trennstelle muss beachtet werden, dass diese innerhalb eines Korridors liegt, in dem sich keine Endpunkte von weiteren Bögen befinden. Ein solcher Korridor existiert immer, dieser habe Länge . Im untersten Bogen brauchen wir 1 Trennstelle, im darüberliegenden 2, usw. Innerhalb eines Bogens liegen die Trennstellen in einem Abstand von ε << . Um sicherzustellen, dass neu enstandene Bögen nicht wieder von anderen Bögen vollständig umschlossen werden, werden die Trennstellen von Schicht zu Schicht um ein genügend kleines δ > 0 versetzt. Dies lässt sich fortsetzen, bis nur noch propere Bögen übrig sind. Wenn l die maximale Anzahl von übereinanderliegenden Bögen ist, werden O(l2 ) Trennstellen benötigt, d.h. f kann in polynomieller Zeit berechnet werden. Es ist nun zu zeigen: I ∈ Kreisbogen-Färb g.d.w. f (I) ∈ propere Kreisbogen-Färb. Wenn I k-färbbar ist, ist offensichtlich auch f (i) k-färbbar. Bögen, die in f (I) geteilt worden sind, können alle mit der gleichen Farbe wie in I gefärbt werden, da diese Bögen nebeneinander liegen und sich nicht überschneiden. Umgekehrt, sei nun f (I) k-färbbar, und c() die zugehörige Färbung. Sollten in f (I) die Teile A1 und A2 eines Bogens A von I nicht mit der gleichen Farbe gefärbt worden sein, kann man den Graphen so umfärben, dass die Bedingung erfüllt ist, ohne zusätzliche Farben zu verbrauchen. Gelte c(A1 ) = x und c(A2 ) = y in der k-Färbung von f (I). Man setze nun c(A2 ) = x. Eventuell schneidet sich aber A2 mit einem Bogen C, der ebenfalls mit c(C) = x gefärbt worden ist. Setze c(C) = y, usw. Das Vorhandensein des Bogens B stellt sicher, dass bei um den Kreis herumreichenden Abhängigkeitspfaden mit ungerader Länge keine dritte, zusätzliche Farbe verwendet werden muss. Dies lässt sich iterativ für alle geteilten Bögen fortsetzen. Also ist auch I k-färbbar. 2 Aufgabe 5: Es gelte bw(G) = k, und seien die Knoten in V durch das Labeling sortiert. Die Knoten werden in Blöcke Bi = {vi , vi+1 , . . . , vi+k } aufgeteilt. Wegen der beschränkten Bandweite liegen alle Kanten, die von vi+k aus nach links gehen, innerhalb von Bi . Das bedeutet, um vi zu färben, müssen nur die Knoten vi+1 , . . . , vi+k betrachtet werden, falls die Abhängigkeiten, die sich aus weiteren Kanten von vi nach links ergeben, schon berücksichtigt worden sind. Für Bi wird jede der bis zu k! vielen Färbungen im Speicher gehalten, falls diese eine korrekte Färbung darstellt. Dann wird Bi+1 betrachtet, und daraus die Farbe von vi bestimmt. Es werden alle zulässigen Farben für vi+k+1 bestimmt, und geprüft, ob diese zu einer der Färbungen für Bi passt. Daraus ergeben sich die wiederum bis zu k! vielen Färbungen für Bi+1 , die für den nächsten Schritt im Speicher gehalten werden. Aufgabe 6: Dadurch, dass alle Intervalle die gleiche Länge haben, können diese in eine eindeutige Reihenfolge gebracht werden. Wenn Intervall A vor B startet, endet A auch vor B. Seien die Interalle I1 , I2 , . . . , In der Eingabe jetzt in dieser Reihenfolge gegeben. Um einen Hamilton-Weg zu finden, fängt man bei dem am weitesten links liegenden Intervall I1 an, und geht von diesem zum nächstgelegenen nach rechts, also von Ii zu Ii+1 . Wenn Ii und Ii+1 sich überschneiden, gibt es auch eine Kante zwischen den beiden zugehörigen Knoten. Daraus folgt: Es gibt genau dann einen Hamilton-Weg, wenn sich Ii und I+1 für alle i = 1, . . . , n − 1 überschneiden. Dies kann leicht geprüft werden. Der gesuchte Weg ist dann (I1 , . . . , In ). Für einen Hamilton-Kreis ist es darüberhinaus noch notwendig, einen Weg von In zurück nach I1 zu finden. Es reicht aus, den folgenden Kreis zu prüfen: (I1 , I3 , I5 , . . . , In/2+1 , In/2 , In/2−2 , . . . , I4 , I2 , I1 ). Falls dieser existiert, hat der Graph einen Hamilton-Kreis. Angenommen, es gibt einen HamiltonKreis, der nicht in der Reihenfolge jedes zweiten Intervalls vorgeht, also z.B. die Reihenfolge (Ii , Ii+3 , Ii+2 , Ii+1 ) enthält. Dann kann dieser zu (Ii , Ii+2 , Ii+3 , Ii+1 ) umgeordnet werden, da wegen der Sortierung auch dies einen Weg im Graphen darstellt. 3 Aufgabe 7: Sei G = (V, E) der Graph mit Baumweite tw(G) = k, T = (VT , ET ) der normierte Baum, in den G eingebettet ist und f : VT → P(V ) die Einbettungsfunktion. In der Datenstruktur für einen Superknoten s ∈ VT werden alle Kombinationen von Wegen, die zwischen den Knoten in f (s) möglich sind, gespeichert. Wohingegen an den Blättern von VT nur solche Wege betrachtet werden, die ausschließlich aus Kanten zwischen Knoten in f (s) bestehen, werden in den höheren Superknoten immer längere Wege berücksichtigt, bis an der Wurzel Wege auf allen Knoten aus V zusammengesetzt werden, und damit ein vorhandener Hamilton-Kreis gefunden wird. Ein Vektor v ∈ {0, . . . , k + 1}k+1 der Datenstruktur speichert eine Menge von knotendisjunkten Wegen, deren Start- und Endpunkte in f (s) liegen. Dazu enthält v für jeden Knoten aus f (s) einen Eintrag. Darin wird vermerkt, ob der Knoten Start- bzw. Endpunkt eines Weges ist, ob er ein innerer Knoten eines solchen Weges ist, oder ob er nicht am Wegesystem beteiligt ist, also einen Weg der Länge 0 darstellt. Dabei bedeutet vi = c mit c ∈ {1, . . . , k + 1}, dass Knoten i Start-/Endpunkt eines Weges ist, falls auch ein j 6= i mit v(j) = c existiert, und dass i ein offener, also nicht am Wegesystem beteiligter Knoten ist, sonst. Beachte, dass ein c höchstens zweimal in v auftauchen kann. Falls vi = 0 ist, ist i ein interner Knoten, also schon durch einen in v enthaltenen Weg W abgedeckt. Abgedeckt bedeutet, dass W über i läuft, i aber nicht Start- oder Endpunkt von W ist. Die weitere Beschreibung des Algorithmus besteht darin, die Funktionen Init, ADD, DEL und JOIN zu definieren. Damit kann durch Bottom-Up-Vorgehen eine Lösung für G gefunden werden. *** Aufgabe 9: Sei G ein k-außenplanarer Graph. Durch das Hinzufügen einer Kante zu G wird die Einbettung in einen Dekompositionsbaum nicht leichter. O.B.d.A. sei G daher maximal, d.h. trianguliert. Wir zeigen durch Induktion, dass tw(G) = 3k − 1 für alle k ≥ 1 gilt. Für k = 1 konstruieren wir den Dekompositionsbaum wie folgt. Sei T der Graph, der für jedes Dreieck {a, b, c} mit {a, b}, {b, c}, {c, a} ∈ E(G) einen Superknoten X ∈ V (T ) mit f (X) = {a, b, c} enthält. Zwei Superknoten werden in E(T ) über eine Kante miteinander verbunden, falls die zugehörigen Dreiecke eine gemeinsame Kante haben. In T gibt es keinen Kreis, da ansonsten in G innerhalb dieses Kreises ein Knoten liegt, der überall von angrenzenden Dreieck-Fenstern umschlossen ist, und G damit nicht außenplanar wäre. Also ist T ein Baum. Da G außenplanar, erfüllt die Einbettung f auch die Pfadbedingung, und damit ist gezeigt, dass tw(G) = 2 gilt. Sei jetzt k > 1, und sei G0 der Graph, der aus G entsteht, wenn alle Knoten auf dem äußeren Fenster gelöscht werden. G0 ist (k − 1)-außenplanar, und damit gibt es einen Dekompositionsbaum T 0 zu G0 , 0 und eine Einbettung f 0 : V (T 0 ) → 2V (G ) mit |f (x)| ≤ 3k − 3 für alle X ∈ V (T 0 ). G besteht damit aus G0 und einer weiteren Schicht Knoten, die G0 umschließt. Sei zunächst T = T 0 und f = f 0 . Für jedes nicht in G0 enthaltene Dreieck {a, b, c} fügen wir in V (T ) einen Knoten X hinzu und setzen f (X) = {a, b, c}. Falls f (X) ein Dreieck aus G − G0 ist, aber mit G0 eine Kante gemeinsam hat, fügen wir in E(T ) eine Kante {X, Z} hinzu, wobei Z der hinter der gemeinsamen Kante liegende Superknoten ist. Falls f (X) ∈ G − G0 keine gemeinsame Kante mit G0 hat, verbinden wir X mit einem beliebigen Nachbarn, bis alle Superknoten mit T 0 verbunden sind. Damit ist die Einbettung fast fertig, eventuell ist allerdings noch die Pfadbedingung verletzt, wenn X, Y ∈ G − G0 eine gemeinsame Kante haben, aber {X, Y } 6∈ E(T ) ist. In diesem Fall sind X und Y über einen Pfad über ein Z ∈ V (T 0 ) miteinander verbunden, das den von Z entfernter liegenden Knoten x ∈ f (X) ∩ f (Y ) nicht enthält. Um die Pfadbedingung wiederherzustellen, fügen wir allen Superknoten auf dem Pfad zwischen X und Y eine Kopie von x hinzu. Da jedes Z ∈ V (T ) höchstens Grad 3 hat, kann Z auch höchstens 3 zusätzliche Kopien bekommen. Damit gilt |f (X)| ≤ (3k − 3) + 3 = 3k für alle X ∈ V (T ), womit tw(G) ≤ 3k − 1 gezeigt ist. Aufgabe 12: Sei G = (V, E) ein Graph mit rekursiver Pfadweite (k, k 0 ). Also gibt es einen Dekompositionsgraphen G0 = (V 0 , E 0 ) mit pw(G0 ) = k 0 , in den G unter Einhaltung der drei Bedingungen 4 (1) Abdeckung aller e ∈ E, (2) der Pfadbedingung und (3) Bucket-Größe von höchstens k eingebettet werden kann. Daher gibt es eine Funktion f : V 0 → 2V mit |f (v)| ≤ k für alle v ∈ V 0 . Da G0 wiederum unter den drei obigen Bedingungen in einen Pfad P = (VP , EP ) eingebettet werden 0 kann, gibt es eine Fuktion f 0 : VP → 2V mit |f 0 (v)| ≤ k 0 für alle v ∈ VP . Wenn wir f auf natürliche 0 Weise auf f : 2V → 2V erweitern, gilt also insgesamt für jedes v ∈ VP : |f (f 0 (v))| ≤ kk 0 . Damit gilt pw(G) ≤ kk 0 . Dass diese obere Schranke asymptotisch scharf ist, kann man wie folgt zeigen. Bei der Dekomposition müssen Cliquen des Ausgangsgraphen in den selben Superknoten eingebettet werden. Wir konstruieren ein Beispiel, das viele (k + 1)- und (k 0 + 1)-Cliquen enthält. G0 besteht aus mehreren miteinander verbundenen k 0 + 1-Cliquen. Sei V 0 = {w1 , . . . , wn0 }. Zu E 0 fügen wir Kanten hinzu, so dass die ersten k 0 +1 Knoten w1 , . . . , wk0 +1 eine Clique bilden. Dann fügen wir Kanten hinzu, so dass w2 , . . . , wk0 +2 eine Clique bilden, usw., bis auch wn0 −k0 , . . . , wn0 eine Clique bilden. Offensichtlich gilt pw(G0 ) = k 0 , da jeder Knoten aus VP = {p1 , p2 , . . .} genau k 0 + 1 Knoten aus V 0 aufnehmen muss. G wird gebildet, indem mehrere knotendisjunkte k-Cliquen über einen gemeinsamen Knoten miteinander verbunden werden. Formaler, sei V = {v1 , . . . , vkk0 +1 }. Seien {v1 , . . . , vk } in einer Clique miteinander verbunden, ebenso {vk+1 , . . . , v2k }, {v2k+1 , . . . , v3k }, . . . , {vk0 k−k+1 , . . . , vk0 k }. Weiterhin wird vk0 k+1 mit allen übrigen Knoten verbunden, d.h. dass (k 0 + 1)-viele (k + 1)-Cliquen entstanden sind, von denen jede einzelne vk0 k+1 enthält. Jede dieser Cliquen wird in einen der Knoten w1 , . . . , wk0 +1 eingebettet. Insgesamt gilt: |f (f 0 (p1 ))| = |f (w1 , . . . , wk0 +1 | = (k 0 + 1)k + 1 = k 0 k + k + 1. 5 Aufgabe 13: Sei P 0 = (VP0 , EP0 ) der Dekompositionspfad, und f 0 : VP0 → 2V die Einbettungsfunktion für G. Sei o.B.d.A. VP0 = {1, . . . , |VP0 |}. Da pw(G) = k, gilt f 0 (v) ≤ k + 1 für alle v ∈ VP0 . Wir 0 konstruieren P = (VP , EP ) und f : VP → (2V ×V ) wie folgt. Seien VP = {(k, l) | 1 ≤ k ≤ |VP0 |, 1 ≤ l ≤ |V 0 |}, und EP = {{(k, l), (k + 1, l)} | 1 ≤ k ≤ |VP0 | − 1, 1 ≤ l ≤ |V 0 |} ∪ {{(|VP0 |, l), (1, l + 1)} | 1 ≤ l ≤ |V 0 | − 1}. Es gilt (i, j) ∈ f ((k, l)) g.d.w. i ∈ f 0 (k). Damit deckt f sowohl alle aus G als auch alle aus G0 erzeugten Kanten ab. Ersteres wurde durch f 0 sichergestellt, letzteres dadurch, dass alle bezüglich G gleichen Knoten jeweils in einem gemeinsamen Superknoten enthalten sind. Offensichtlich gilt |f (v)| ≤ (k + 1) · |V 0 | für alle v ∈ VP . Da die obigen Überlegungen auch gelten, wenn man G und G0 vertauscht und f entlang der Einbettungsfunktion für G0 entwickelt, folgt pw(G × G0 ) ≤ min(k|V 0 | + |V 0 | − 1, k 0 |V | + |V | − 1). Aufgabe 14: Das Quadrat eines Graphen unterliegt keiner Beschränkung der Baumweite. Betrachten wir G = Kn,1 , also den Stern mit insgesamt n + 1 Knoten. Es gilt tw(Kn,1 ) = 1, aber G2 = (Kn,1 )2 = Kn+1 und damit tw(G2 ) = n. Aufgabe 15: Seien x1 , . . . , xn die Variablen und C1 , . . . , Cm mit |Cj | ≤ 3 die Klauseln einer Formel φ in konjunktiver Normalform. Wir konstruieren ein Netzwerk N mit zweifach beschränkten Kapazitäten, so dass gilt: φ ist erfüllbar g.d.w. es einen Fluss der Größe m + n in N gibt. Für jede Variable und jede Klausel gibt es einen Weg von der Quelle s zur Senke t mit Kapazität 1. Falls φ erfüllbar ist, sind diese Wege knotendisjunkt. Zunächst zur Darstellung der Variablen. Für jede Variable xi gibt es Knoten si , s1i und s0i und Kanten (si , s1i ) und (si , s0i ) jeweils mit Kapazitäten cmin = cmax = 1. Darüberhinaus gibt es Knoten ti , t1i und t0i und Kanten (t1i , ti ) und (t0i , ti ) mit Kapazitäten cmin = 0 und cmax > 1. Alle si werden mit s und alle ti mit t verbunden. Zwischen s1i und t1i und zwischen s0i und t0i gibt es einen ausreichend langen Weg mit uneingeschränkten Kantenkapazitäten. Durch die zweifache Kapazitätsbeschränkung kann sichergestellt werden, dass über eine Kante entweder Fluss der Größe 1 oder kein Fluss geht. Dies entspricht den Variablenbelegungen wahr und falsch. Gleichfalls gibt es für jede Klausel Cj = (l1 , l2 , l3 ) Knoten uj und vj , und Kanten (s, uj ) mit Kapazität cmin = 0 und cmax = 1, sowie Kanten (vj , t) mit uneingeschränkter Kapazität. Sei l1 = xi ein positives Literal, und seien qi0 und ri0 Knoten auf dem Weg von s0i nach t0i , zwischen denen keine anderen ausgezeichneten Knoten liegen. Wir fügen Kanten (uj , qi0 ) und (ri0 , vj ) mit uneingeschränkter Kapazität hinzu. Falls l1 = x̄i ein negatives Literal ist, suchen wir Knoten qi1 und ri1 auf dem Weg von s1i nach t1i , und verfahren analog. Für jedes l1 , l2 und l3 wird ein solcher Weg über die entsprechende Variable geführt, und dies für alle Klauseln wiederholt, so dass es insgesamt für jede Klausel drei mögliche Wege von uj nach vj gibt. Sei φ erfüllbar ist, und v(xi ) = b der Wert von xi in der erfüllenden Belegung. Dann kann der Variablenfluss der Größe 1 über sbi geschickt werden. Gleichzeitig kann der Klauselfluss von allen Klauseln, an denen xi beteiligt ist, über qi1−b und ri1−b geschickt werden, da dieser Weg nicht vom Variablenfluss gewählt worden ist. Also gibt es einen Fluss der Größe m + n in N . Falls es einen Fluss f der Größe m + n in N gibt, folgt aus der maximalen Kapazitätsbeschränkung, dass f (si ) = f (uj ) = 1 für alle i, j gelten muss. Aus der minimalen Kapazitätsbeschränkung folgt dann, dass entweder f (s1i ) = 1 und f (s0i = 0) gelten muss, oder f (s0i ) = 1 und f (s0i = 1). Daraus ergibt sich die Variablenbelegung, die φ erfüllt. Also ist das Flussproblem mit zweifach beschränkten Kantenkapazitäten NP-vollständig. Anmerkung: Es reicht nicht aus, bei der Reduktion einheitlich Kanten mit maximaler Kapazität 1 zu verwenden. In diesem Fall ist nicht sichergestellt, dass der Variablen-Fluss komplett über das Variablen-Konstrukt fließt. Die Formel φ = (x1 ∨x2 )∧(x1 ∨ x̄2 )∧(x̄1 ∨x2 )∧(x̄1 ∨ x̄2 ) ist nicht erfüllbar, das zugehörige Netzwerk, in dem alle beschränkten Kanten Kapazität 1 haben, erlaubt jedoch einen Fluss der Größe m + n = 6. Dies ist möglich, indem der Variablenfluss von x1 über die oberste Klausel abfließt, und der Fluss der untersten Klausel über x1 abfließt. Alle dazwischen liegenden 6 Klauseln können dann normal über x1 fließen, da sie nicht vom Variablenfluss x1 eingeschränkt werden. Der Fluss der obersten Klausel fliesst in x2 entlang und über die unterste Klausel ab. Aufgabe 16: a) Aus dem Graph wird ein Netzwerk N = (V, E 0 , s, t, c) konstruiert. Alle Kanten aus E werden gerichtet, und zwar mit Hilfe einer von s ausgehenden Breitensuche, und bilden damit die Menge E 0 . Es gilt c(e) = 1 für alle e ∈ E 0 . Da alle Kanten integrale Kapazitäten haben, ist auch der maximale Fluss in diesem Netzwerk integral. Dessen Kapazität entspricht genau der Anzahl der kantendisjunkten Wege von s nach t. b) Wir verändern das obige Netzwerk, indem jedes v ∈ V durch zwei Knoten ve und va ersetzt wird. Alle in v eingehenden Kanten werden auf ve umgeleitet, alle ausgehenden Kanten auf va . Zwischen ve und va gibt es eine Kante mit Kapazität 1. Der integrale maximale Fluss in diesem N 0 entspricht einem Wegesystem, in dem über jedes ve (und damit über jedes v in N ) höchstens ein Weg geht. Aufgabe 17: Wir zeigen, dass man jedes lateinische Rechteck R vom Format r × n zu einem vom Format (r+1)×n erweitern kann, und somit auch zu einem lateinischen Quadrat. Dazu konstruieren wir einen bipartiten Graphen GR = (V1 ∪ V2 , E), in dem ein perfektes Matching einer Belegung der zusätzlichen Zeile darstellt. In R gilt, dass jeder Eintrag in jeder Zeile genau einmal und in jeder Spalte höchstens einmal vorkommt. Für jede Spalte j ∈ {1, . . . , n} bezeichne Sj die Menge der Einträge, die in der Spalte Rj fehlen. Also gilt |Sj | = n − r für alle Spalten. Wir setzen V1 = {a1 , . . . , an } mit ai ∈ {1, . . . , n} und V2 = {b1 , . . . , bn }, und fügen in E eine Kante zwischen ai und bj genau dann ein, wenn ai ∈ Sj gilt. Der so konstruierte Graph GR ist regulär. Es gilt deg(bj ) = n − r, da |Sj | = n − r ist. Aber es gilt auch deg(bi ) = n − r für alle i, da jede Zahl in genau n − r Spalten fehlt. Denn eine Zahl x kommt in jeder Zeile genau einmal vor, also insgesamt r-mal in R. Diese r-vielen Vorkommen von x müssen über r verschiedene Spalten verteilt sein. Also bleiben n − r Spalten übrig, in denen x nicht vorhanden ist. Ein regulärer bipartiter Graph hat ein perfektes Matching. Dies folgt unmittelbar aus dem Satz von Hall. Sei der Graph r-regulär, und sei S eine Menge von Knoten aus einer Partition mit |S| = k. Also gehen k · r Kanten aus S heraus. Damit werden mindestens k Knoten der Nachbarschaft erreicht, da ansonsten ein Widerspruch zur Annahme, dass der Graph r-regulär ist, folgen würde. Also gilt Γ(S) = k für alle S. Damit hat GR ein perfektes Matching m : V2 → V1 , das zu jedem Knoten bj eine Kante {bj , m(bj )} festlegt. Wir können das lateinische Rechteck R daher um eine Zeile r + 1 mit den Einträgen (m(b1 ), . . . , m(bn )) erweitern. Aufgabe 19: Für r = 2 nehme einen Kreis mit ungerader Länge, z.B. C3 . Für r gerade und r ≥ 4 nehmen wir den (r/2)-dimensionalen Torus mit Seitenlänge 3, also den (3 × · · · × 3)-Torus. Dieser ist r-regulär, hat aber kein perfektes Matching, da die Knotenanzahl ungerade ist. Für r = 3 verwenden wir eine Komponente H3 = (V, E) mit V = {A, . . . , E} und E = {(A, B), (A, C), (B, D), (C, E), (D, E), (B, E), (C, D)}. Drei dieser Komponenten werden über einen Stern miteinander verbunden (also ein zentraler Knoten X und Kanten (A1 , X), (A2 , X), (A3 , X) hinzugefügt), so dass ein 3-regulärer Graph G3 entsteht. H3 enthält selbst kein perfektes Matching, erst durch Hinzunahme von (Ai , X) ins Matching können auch die Knoten aus einer H3 -Komponente abgedeckt werden. Knoten X kann aber offensichtlich nur einmal für eine solche Matchingkante verwendet werden, so dass G3 kein perfektes Matching hat. Für r ungerade und r ≥ 5 konstruieren wir schrittweise eine Komponente Hr , so dass |V (Hr )| ungerade ist und deg(A) = r − 1 und deg(v) = r für alle v ∈ V (Hr ) − A gilt. Sei Hr−1 schon 7 konstruiert, und sei V (Hr−1 ) = {v1 , . . . , vn } mit v1 = A. Für jedes vi ∈ V (Hr−1 ) fügen wir zwei Knoten vi,1 und vi,2 hinzu, und verbinden vi mit beiden. Damit erhalten alle vi 6= A Grad r, und v1 erhält Grad r − 1. Jetzt verbinden wir noch alle v1,1 , . . . , vn,1 mit einem Kreis, ebenso alle v1,2 , . . . , vn,2 . Damit haben alle Knoten aus Hr die gewünschten Knotengrade, und die Anzahl der Knoten ist ungerade, da eine gerade Anzahl von Knoten zu Hr−1 hinzugefügt worden ist. Um Gr fertigzustellen, verbinden wir r-viele Hr über einen Stern mit zentralem Knoten X miteinander. Da |V (Hr )| ungerade, hat Hr allein kein perfektes Matching. Da X nur einer Komponente ein perfektes Matching liefern kann, ist in den übrigen r − 1 Komponenten keines zu finden, und damit hat auch Gr keinen 1-Faktor. Aufgabe 20: a) Betrachte den Graphen G = (V, E 0 ) mit V = {A, . . . , F } und E 0 = {(A, B), (B, C), (D, E), (E, F ), (B, E)}. Es gilt χ(G) = 2 und α(G) = 4. Die Knoten I = {A, C, D, F } bilden eine unabhängige Menge. Es gibt aber keine zulässige 2-Färbung für G, in der eine Farbe genau 4-mal verwendet wird. Insbesondere kann man nicht allen Knoten aus I die gleiche Farbe geben, da dann für B und E nur noch eine Farbe übrigbleibt. b) Die Knoten der größten unabhängigen Menge können alle die gleiche Farbe erhalten. Übrig bleiben n(G) − α(G) viele Knoten, die schlimmstenfalls jeweils unterschiedliche Farben erhalten. Also gilt die Behauptung. c) Die Behauptung gilt nicht. Nehmen wir einen vollständigen Graphen K4 mit einem ausgezeichneten Knoten v, einen Pfad Pn mit einem Knoten w am Ende des Pfades, und verbinden v und w miteinander, um G zu erhalten. Wenn wir n ausreichend groß wählen, beträgt der durchschnittliche Grad a(G) = 2 + für beliebig kleines > 0. Trotzdem gibt es keine 3-Färbung, da für K4 immer noch 4 Farben benötigt werden. d) Für eine minimale zulässige Färbung gibt es Farbklassen S1 , . . . , Sk , die alle Knoten einer bestimmten Farbe enthalten. Zwischen jedem Paar Si und Sj von Farbklassen muss es mindestens eine Kante geben, ansonsten könnten alle Knoten aus Si ∪ Sj mit derselben Farbe gefärbt werden, und der Graph wäre (k − 1)-färbbar, im Widerspruch zur Annahme. Da es k2 solche Paare gibt, gibt es auch mindestens ebensoviele Kanten im Graphen. Aufgabe 21: Ein C5 hat die gesuchte Eigenschaft. Es gilt χ(C5 ) = 3, aber χ(C5 − v) = 2 für jeden v ∈ V (C5 ). Beachte nun, dass C5 = C5 gilt. Also gilt das gleiche auch für das Komplement, womit die Eigenschaft gezeigt ist. Aufgabe 22: Da G bipartit ist, besteht G aus zwei Partitionen A und B, mit V (G) = A ∪ B, die jeweils eine Clique bilden. Darüberhinaus gibt es zwischen den beiden Partitionen noch weitere Kanten, wenn G nicht vollständig bipartit ist. Sei C eine größte in G vorhandene Clique. Beachte, dass nicht notwendigerweise A ⊆ C oder B ⊆ C gilt. Für eine Menge S ⊆ V (G) sei Γ(S) = ΓG (S) die Nachbarschaft in G, also die Menge der Knoten, die mit mindestens einem Knoten aus S nicht verbunden sind. Für alle S ⊆ A − C gilt |Γ(S) ∩ C| ≥ |S|. Angenommen, es gäbe eine Menge S mit D = Γ(S) und |D ∩ C| < |S|. Dann wäre (C ∪ S) − D eine Clique mit Kardinalität größer ω(G), im Widerspruch zur Annahme, dass C eine größte Clique ist. Damit können alle Knoten aus A − C gefärbt werden, nämlich mit den Farben, die in Γ(A − C) verwendet sind. Mit den gleichen Überlegungen können auch alle Knoten aus B − C gefärbt werden, so dass insgesamt |C| = ω(G) viele Farben verwendet werden. Da C eine Clique ist, reichen weniger Farben nicht aus, und damit gilt χ(G) = ω(G). 8 Aufgabe 23: Sei m = max(g, h), und sei o.B.d.A. χ(G) = m. Offenbar ist χ(G × H) ≥ m eine untere Schranke, da G Teilgraph von G × H ist. Gleichzeitig gilt auch χ(G × H) ≤ m. Seien c : V (G) → [g] und d : V (H) → [h] minimale zulässige Färbungen für G und H. Dann ist e : V (G × H) → [m] mit e(x, x0 ) = (c(x) + d(x0 )) mod m eine zulässige Färbung für G × H. Sei {(x, x0 ), (y, y 0 )} ∈ E(G × H) eine Kante. Aufgrund der Definition des kartesischen Produktes zweier Graphen gilt, dass entweder x = y und {x0 , y 0 } ∈ E(H) gilt, oder x0 = y 0 und {x, y} ∈ E(G). Daraus folgt, dass e(x, x0 ) 6= e(y, y 0 ) gilt, und damit ist e zulässig. Insgesamt gilt also χ(G × H) = m. Aufgabe 24: Wir teilen die Ebene in regelmäßige Sechsecke ein, und identifizieren diese mit Hilfe eines Koordinatensystems, bei dem der Winkel zwischen X- und Y-Achse 30◦ beträgt. Der Abstand zwischen zwei gegenüberliegenden Punkten im Sechseck beträgt 1. Den Rand des Sechsecks teilen wir in zwei gleichgroße, jeweils zusammenhängende Teile ein. Alle Punkte innerhalb des Sechsecks sowie auf der Hälfte des Randes können die gleiche Farbe bekommen. Das Sechseck auf den Koordinaten (x, y) ∈ N2 bezeichnen wir mit s(x, y). Es gilt, dass c : N2 → [7] mit c(x, y) = (x + 5y) mod 7 eine zulässige Färbung darstellt, da Sechsecke mit gleicher Farbe in Entfernung größer 1 zueinander liegen. Also ist χ(G) ≤ 7. Aufgabe 26: Die Behauptung gilt nicht. Betrachte C3 und C4 , also Kreise der Länge 3 und 4. Diese sind perfekt, nicht aber deren Kreuzprodukt, der (3 × 4)-Torus, da dieser einen induzierten C7 enthält. Aufgabe 27: Seien C eine größte Clique in G|N [x] (G eingeschränkt auf die abgeschlossene Nachbarschaft von x), an der x beteiligt ist, mit |C| = c, und C 0 eine größte Clique in H, mit |C 0 | = c0 . Dann enthält G(x → H) eine Clique der Größe c + c0 − 1. Falls ω(G) ≥ c + c0 − 1 ist, kann man G(x → H) mit c + c0 − 1 Farben färben, da in der neuen und es gilt ω(G(x → H)) = c + c0 − 1. (***) Seien d : V (G) → [c] und e : V (H) → [c0 ] Färbungen für G und H. Dann ist das wie folgt definierte f : V → [c + c0 − 1] eine zulässige Färbung für G(x → H). Für alle Knoten v ∈ V (H) setze f (v) = d(v), und für Knoten v ∈ V (G) − N [x] setze f (v) = c(v). Alle v ∈ C − x bekommen eine neue Farbe. Es fehlen noch die Knoten v ∈ N (x) − C. Für diese gilt, dass es zu jedem solchen v ein w(v) ∈ C gibt, so dass v und w(v) nicht verbunden sind. Da C maximal gewählt wurde, sind alle w(v) paarweise verschieden. Damit kann jedes v die gleiche Farbe wie w(v) bekommen. Also gilt χ(G(x → H)) = ω(G(x → H)). Aufgabe 28: Sei G = (V, E) der chordale Eingabegraph mit n Knoten, und σ : {1, . . . , n} → V ein PES dazu. Der Algorithmus zur Bestimmung eines Independent Set arbeitet wie folgt. Zunächst wird IS = σ(1) gesetzt, und dann alle Knoten markiert, die mit σ(1) verbunden sind. In jedem weiteren Schritt wird der kleinste Knoten x bzgl. der σ-Ordnung in IS aufgenommen, der nicht markiert ist. Die Nachbarn von x werden wiederum markiert. Dieser Greedy-Algorithmus benötigt lineare Zeit. Sei |IS| = k. Damit haben wir ein Independet Set der Größe k gefunden, jedoch noch nicht gezeigt, dass dieses optimal ist. Gleichzeitig haben wir damit auch eine Überdeckung von G durch k Cliquen gefunden, denn für jedes x ∈ IS bildet die rechte Nachbarschaft von x bzgl. σ eine Clique. Die minimale Anzahl von Cliquen, die notwendig ist, um alle Knoten aus G zu überdecken, wird mit χ bezeichnet. Es ist χ ≥ α. Es gilt also χ ≤ k und α ≥ k, und daher insgesamt k ≥ χ ≥ α ≥ k. Daraus folgt α = k, und IS ist ein minimales Independent Set. 9 Aufgabe 29: Sei G k-außenplanar, und o.B.d.A. trianguliert. Wir wissen, dass für die Baumweite tw(G) ≤ 3k−1 gilt. Wir haben dies gezeigt, indem wir einen Stützbaum T konstruiert haben, in dem jeder Knoten höchstens 3k viele Kopien enthält. Dieses T entstand iterativ, indem wir den Stützbaum T 0 für den (k − 1)-außenplanaren Graphen so um die in der Mitte der neu hinzugekommenen Dreiecke liegenden Superknoten erweitert haben, dass die neuen Superknoten über kürzeste Wege mit T 0 verbunden sind. Weiterhin sei T normiert, d.h. falls {t, t0 } ∈ E(T ), gilt: t und t0 unterscheiden sich in genau einer Kopie. Es gilt für jedes t ∈ V (T ), das kein Blatt ist, oder das im Abstand 1 zu einem Blatt liegt und Grad 2 hat: Wenn alle Graphknoten x ∈ t aus G gelöscht werden, ist G separiert. Durch das Löschen der x ∈ t wird G in einzelne Bereiche B1 , . . . , B3 eingeteilt. Zwischen diesen Bereiche kann es keine Kanten geben, da diese Kante auch in irgendeinem Superknoten abgedeckt sein müsste, und wegen der Pfadbedingung einer der beiden Endpunkte der Kante in t enthalten wäre. Also ist jeder Bereich eine Komponente. Es verbleibt zu zeigen, dass mindestens 2 Komponenten übrig bleiben. Dies gilt, da in den wie oben geforderten t ∈ V (T ) jeder Bereich ein a ∈ V (G) enthält, der weder in den anderen Bereichen noch in t selbst enthalten ist. Wir wählen nun einen beliebigen Knoten t ∈ V (T ), und die in t enthaltenen Kopien als Separator für G. Durch t zerfalle G in Komponenten K1 , . . . , K3 . Falls für alle Komponenten size(Ki ) < 2n/3 gilt, ist t ein (3k, 2/3)-Separator. Ansonsten sei o.B.d.A. size(K1 ) > 2n/3. Wie wählen einen beliebigen Graphknoten x ∈ K1 , und bewegen uns im Stützbaum auf dieses x zu. Da die Pfadbedingung gilt, und T keine Kreise enthält, ist dieser Weg eindeutig. Sei t0 der neue Separator. Da sich t und t0 nur in einer Kopie unterscheiden, haben sich die Komponentengrößen damit jeweils um höchstens 1 verändert. D.h. wir können die Größe von K1 schrittweise verringern, bist diese unter 2n/3 fällt, und haben damit den gesuchten Separator. Aufgabe 30: Ein serien-paralleler Graph entsteht rekursiv durch parallele oder serielle Verknüpfung von serien-parallelen Graphen. Diese haben eine gekennzeichnete Quelle und eine Senke. Parallelschaltung verbindet die beiden Quellen miteinander, ebenso die beiden Senken. Serienschaltung verbindet die Senke des einen mit der Quelle des anderen Graphen. Eine einzelne Kante ist ein serien-paralleler Graph. Betrachtet man den Rekursionbaum des Graphen, stellt man fest, dass jeder innere Knoten einen Separator darstellt, nämlich wenn man Quelle und Senke des zugehörigen Teilgraphen entfernt. Falls an der Wurzel eine Serienschaltung durchgeführt wird, reicht es aus, die gemeinsame Quelle/Senke zu entfernen. Es verbleibt zu zeigen, dass man den Graphen so separieren kann, dass die größte Komponente höchstens 2n/3 Knoten enthält. Nehmen wir an, wir befinden uns im Rekursionsbaum an einem Knoten t. Die zugehörige Komponente habe Quelle A und Senke B, und werde nun mit (A, B) bezeichnet. Sei R = G − (A, B) der äußere Teil des Graphen, also ohne die innere Komponente (A, B). Sei x > 0, und gelte size(A, B) = 2n/3 + x, und daher size(R) = n/3 − x. Fall 1: An t wird die Serienschaltung durchgeführt. Dann gibt es einen Knoten C, so dass (A, B) = (A, C) + (C, B), d.h. (A, B) ist die Serienschaltung von (A, C) und (C, B). Falls einer der beiden Komponenten mehr als 2n/3 Knoten besitzt, wiederholen wir das Vorgehen rekursiv auf dieser größeren Komponente. Sei jetzt size(A, C) < 2n/3 und size(C, B) < 2n/3. Dann gilt für eine Komponente, o.B.d.A. sei dies (A, C), size(A, C) < n/3 + x/2. Dann ist size(R + (A, C)) = 2n/3 − x/2 und size(A, C) < 2n/3. Also ist {C, B} ein (2, 2/3)-Separator. Fall 2: An t wird Parallelschaltung durchgeführt. Wenn durch Entfernen von A und B für alle parallelen Komponenten K size(K) < 2n/3 gilt, ist {A, B} der gesuchte Separator. Ansonsten gibt es ein K mit size(K) > 2n/3, und wir wiederholen das Vorgehen rekursiv mit K. Aufgabe 31: Sei G ein Halin-Graph. Also kann G als ein Baum T aufgefasst werden, bei dem alle Blätter über einen Kreis C miteinander verbunden sind, und zwar in der durch eine planare 10 Einbettung des Baumes vorgegebenen Reihenfolge. Sei also G = (V (T ), E(T ) ∪ E(C)). Wir können zunächst einen (1, 1/2)-Separator für T suchen. Dieser stellt dann aber keinen Separator für G dar, da in G die beiden Komponenten von T auch über Kanten e1 , e2 ∈ E(C) verbunden sind. Durch Entfernen von je einem Knoten aus e1 und e2 ist auch G separiert, und weiterhin keine Komponente größer als n/2. Aufgabe 32: Sei k die Anzahl der Atome in T . Wir fassen l = n2 − m als die Zahl der NichtKanten, also die Anzahl der in G im Vergleich zu Kn nicht vorhandenen Kanten auf, und zeigen durch Induktion, dass l ≥ k − 1 gilt. Daraus folgt die Behauptung der Aufgabe. Sei t die Tiefe von T . Falls t = 0, besteht der Baum nur aus einem Atom, also ist k = 1, und es ist nichts zu zeigen. Sei jetzt t > 0, und bereits bewiesen, dass l ≥ k − 1 für Bäume der Tiefe t − 1 gilt. Seien w die Wurzel von T , w1 , . . . , wb die Nachfolger von w, und ki die Anzahl der Blätter und li die Anzahl der Nicht-Kanten im Teilbaum wi für alle i = 1, . . . , b. Das bedeutet, wir haben in den einzelnen durch w erzeugten Komponenten l1 + · · · + lb ≥ (k1 − 1) + · · · + (kb − 1) = k1 + · · · + kb − b viele Nicht-Kanten gefunden. Offensichtlich gilt l = l1 + · · · + lb und k = k1 + · · · + kb , und damit l ≥ k − b. Da w einen Separator darstellt, gibt es mindestens eine Nicht-Kante zwischen den Knoten aus wi und Knoten aus wb , für jedes i = 1, . . . , b − 1. Dies können nicht die Nicht-Kanten aus den Nachfolgern sein, da diese jeweils nur eine Teilmenge der Knoten aus w enthalten. Also haben wir b − 1 weitere Nicht-Kanten identifiziert, und es gilt l ≥ k − b + (b − 1) = k − 1. Aufgabe 33: Jeder chordale Graph besitzt einen Cliquenseparator C. Also können wir dieses C als Wurzel des Cliquenseparatorbaumes wählen. Chordalität ist eine vererbliche Eigenschaft, also sind knoteninduzierte Teilgraphen eines chordalen Graphen wiederum chordal. Für die durch C erzeugten Komponenten können wir daher wieder Cliquenseparatoren finden. Dies können wir fortsetzen, bis irgendwann der Cliquenseparator einer Komponente die gesamte Komponente selbst ist. Damit ergibt sich ein Blatt, das alle Knoten der Separatorclique enthält. Blätter, die eine Clique plus weitere Knoten enthalten, kann es nicht geben, da eine solche Komponente keinen Cliquenseparator enthält. Aufabe 34: Sei G ein Kantengraph. Dann gibt es einen Graphen H, so dass L(H) = G ist. Es sei V (H) = {1, . . . , n}. Wir konstruieren einen Stern Kn,1 und darauf ein Pfadsystem P , so dass EP T (Kn,1 , P ) = G gilt. Sei V (Kn,1 ) = {1, . . . , n} ∪ {X}, wobei X das Zentrum des Sterns ist. Falls es in H zwischen i, j ∈ V (H) eine Kante gibt, fügen wir zu P den Pfad (i, X, j) hinzu, für alle Kanten {i, j} ∈ E(H). Der daraus resultierende EPT-Graph hat genau so viele Knoten wie G, und genau dann eine Kante, wenn die zugehörigen Pfade einen gleichen Start- oder Endknoten auf dem äußeren Kreis des Sterns gemeinsam haben. In dem Fall gab es aber in H zwei Kanten, die an einem Knoten adjazent sind, und daher hat auch L(G) zwischen deren Knoten-Entsprechung eine Kante, und damit gilt EP T (Kn,1 , P ) = G. Sei jetzt G ein EPT-Graph, und zwar aus einem Stern Kn,1 und einem Pfadsystem P hervorgegangen. O.B.d.A. können wir annehmen, dass alle Pfade aus P Länge 2 haben. Für jeden Pfad (i, X) der Länge 1 fügen wir einen Knoten i0 hinzu, und erweitern den Pfad zu (i, X, i0 ). Damit erhalten wir das Pfadsystem P 0 . Da i0 jeweils neu hinzugefügt wurde, gilt EP T (K, P ) = EP T (K 0 , P 0 ), wobei K und K 0 der Stern vor bzw. nach dem Hinzufügen der Dummy-Knoten ist. Analog zum ersten Fall fügen wir in H genau dann eine Kante ein, wenn es in P einen Pfad (i, X, j) gibt. Damit gilt wieder: Wenn zwei Pfade aus P zusammenstoßen, also eine gemeinsame Kante haben, haben auch die konstruierten Kanten in E(H) einen gemeinsamen Endpunkt, was in EP T (Kn,1 , P ) und L(H) jeweils die gleiche Kante bewirkt. Aufgabe 35: Sei A die vom Christofides-Algorithmus approximierte Tour, OP T die optimale. Es gilt A ≤ 1.5 · OP T . Falls die Knoten A, B, C, D in dieser Reihenfolge besucht werden, 11 ist A auch eine Lösung für TSP mit Reihenfolge. Ansonsten sortieren wir die Tour etwas um, ohne die Kosten zu stark anwachsen zu lassen. Die Knoten A, B und C halten immer die geforderte Reihenfolge ein, daher können wir annehmen, dass D in der Tour falsch einsortiert ist. O.B.d.A. enthalte A die Teilfolge (A, B, D, C). Die umsortierte Tour sieht dann wie folgt aus: B = (A, . . . , B, . . . , [D], . . . , C, D, [C], . . . , A). Die in eckigen Klammern stehenden Knoten deuten an, dass die Tour darüber läuft, den Knoten selbst aber noch nicht besucht. Aufgrund der Dreiecksungleichung kann beim metrischen TSP angenommen werden, dass der Weg, der [D] zunächst überspringt, nicht teurer ist, als der Weg direkt über D. Da zwei neue Kanten zur Tour hinzugefügt worden sind, gilt damit B ≤ A + |CD| + |DC|. Für die Distanz zwischen beliebigen Knoten X, Y gilt weiterhin |XY | ≤ OP T /2. Daher können wir die Länge der neuen Tour mit B ≤ A + OP T /2 + OP T /2 = A + OP T ≤ 1.5 · OP T + OP T = 2.5 · OP T abschätzen. Aufgabe 36: • Sei G ein beliebiger Graph. Wir berechnen C 0 = {x | deg(x) = n(G) − 1}. C 0 enthält also alle Knoten, die mit allen übrigen Knoten verbunden sind, und bildet damit eine Clique. Sei B 0 = V (G) − C 0 . Wir testen, ob B 0 bipartit ist, indem ein beliebiger Knoten willkürlich der Partition 1, und seine Nachbarn der Partition 2 zugeordnet werden. Dies lässt sich fortsetzen, bis alle Knoten auf die Partitionen verteilt sind. Falls das Verfahren scheitert, wurde ein Kreis ungerader Länge gefunden, und damit ist B 0 nicht bipartit. Sei G ∈ T1 . Dann besteht G aus einer bipartiten Komponente B und einer Cliquen-Komponente C, die beide vollständig miteinander verbunden sind. Es gilt offensichtlich C 0 = C, und es wird eine bipartite Aufteilung von B 0 gefunden. Sei jetzt G 6∈ T1 . Wiederum gibt es eine Clique C, in der jeder Knoten maximalen Grad hat, eventuell ist |C| = 0. Aber B = V (G) − C ist nicht bipartit. Obiger Algorithmus wird also B 0 = B nicht bipartionieren können. Die Laufzeit des Verfahrens ist O(n2 ). Um C 0 zu bestimmen, muss jeder Knoten betrachtet werden, und dieser mit allen anderen verglichen werden, um so dessen Knotengrad zu bestimmen. Gleiches gilt für die Partitionierung von B 0 , für die von jedem Knoten die Nachbarschaft bestimmt werden muss. • Wir berechnen eine vollständige Überdeckung des Graphen durch maximale unabhängige Mengen I1 , . . . , Ik . Dies kann durch paarweise Vergleiche in Zeit O(n2 ) geschehen. Die gleiche Zeit ist erforderlich, um im zweiten Schritt zu prüfen, ob zwischen allen Paaren Ii und Ij alle Kanten vorhanden sind. Falls G ∈ T2 , besteht der Graph aus mehreren unabhängigen Mengen, die untereinander paarweise vollständig miteinander verbunden sind. Dies sind gerade die gefundenen maximalen unabhängigen Mengen. Falls G 6∈ T2 , gibt es unabhängige Mengen I und J, die nicht vollständig miteinander verbunden sind, und der Algorithmus wird dies bei der Überprüfung feststellen. 12