Approximation der Cliquenzahl eines Graphen Matthias Baumgart [email protected] Chemnitz, 28. April 2004 1 Gliederung 1. Einleitung 2. Der Algorithmus von Feige 1.1. Verständnis 1.2. Korrektheit 1.3. Laufzeit 3. Eine Approximationsgüte von O(n(log log n)2/(log n)3) 2 Einleitung Boppana und Halldórsson entwickelten basierend auf der Ramseytheorie einen Algorithmus zur Bestimmung unabhängiger Mengen. Idee: Ein Graph mit R(k, l) Knoten enthält eine Clique der Größe k oder eine unabhängige Menge der Größe l (oder beides). 2 Einleitung Boppana und Halldórsson entwickelten basierend auf der Ramseytheorie einen Algorithmus zur Bestimmung unabhängiger Mengen. Idee: Ein Graph mit R(k, l) Knoten enthält eine Clique der Größe k oder eine unabhängige Menge der Größe l (oder beides). Findet der Algorithmus eine große Clique (und nur eine kleine unabhängige Menge), dann entferne diese Clique und suche auf dem Restgraphen weiter nach einer unabhängigen Menge. Analoges gilt auch für die Approximation der Cliquenzahl, d.h. statt Cliquen müssen nun unabhängige Mengen entfernt werden. Einleitung Idee von U. Feige: Entferne nicht nur unabhängige Mengen, sondern auch Untergraphen, welche nur wenige“ Kanten enthalten. ” 3 Einleitung Idee von U. Feige: Entferne nicht nur unabhängige Mengen, sondern auch Untergraphen, welche nur wenige“ Kanten enthalten. ” Definition 1 Sei G = (V, E) ein Graph mit einer Clique C der Kardinalität |C| ≥ n/k. Eine Knotenmenge S in G heißt schwach, wenn der auf S induzierte Untergraph von G keine Clique CS der Kardinalität |CS | ≥ |S|/(2k) enthält. 3 Einleitung Idee von U. Feige: Entferne nicht nur unabhängige Mengen, sondern auch Untergraphen, welche nur wenige“ Kanten enthalten. ” Definition 1 Sei G = (V, E) ein Graph mit einer Clique C der Kardinalität |C| ≥ n/k. Eine Knotenmenge S in G heißt schwach, wenn der auf S induzierte Untergraph von G keine Clique CS der Kardinalität |CS | ≥ |S|/(2k) enthält. Satz 2 Sei G = (V, E) ein Graph mit einer Clique C der Kardinalität |C| ≥ n/k. Seien S1, . . . , Sl beliebige disjunkte schwache Knotenmengen von G. Sei G0 = (V 0, E 0) der auf V \ {S1 ∪ . . . ∪ Sl} induzierte Untergraph von G. Die Anzahl Knoten in G0 ist |V 0| ≥ n/(2k). Außerdem enthält G0 eine Clique C 0 der Kardinalität |C 0| ≥ |V 0|/k. 3 Einleitung 4 Beweis: Sl die Vereinigung S = i=1 Si ist eine schwache Knotenmenge auf höchstens n Knoten und hat demnach keine Clique der Größe n/(2k) nach Voraussetzung hat G eine Clique C der Kardinalität |C| ≥ n/k =⇒ mindestens n/(2k) Knoten der Clique C müssen in G0 sein Einleitung 4 Beweis: Sl die Vereinigung S = i=1 Si ist eine schwache Knotenmenge auf höchstens n Knoten und hat demnach keine Clique der Größe n/(2k) nach Voraussetzung hat G eine Clique C der Kardinalität |C| ≥ n/k =⇒ mindestens n/(2k) Knoten der Clique C müssen in G0 sein Annahme: G0 enthält nur Cliquen C 0 mit |C 0| < |V 0|/k =⇒ dann befinden sich jedoch mindestens |V | |V 0| |S| − = k k k Knoten der Clique C in der Knotenmenge S =⇒ Widerspruch, da S schwache Knotenmenge ist 2 5 Der Algorithmus von Feige – Verständnis Der Algorithmus von Feige liefert nach Eingabe eines Graphen G = (V, E), welcher eine Clique der Größe |V |/k enthält, eine Clique C der Kardinalität |C| ≥ t · log3k (|V |/t − 3) für einen Parameter t n/k. 5 Der Algorithmus von Feige – Verständnis Der Algorithmus von Feige liefert nach Eingabe eines Graphen G = (V, E), welcher eine Clique der Größe |V |/k enthält, eine Clique C der Kardinalität |C| ≥ t · log3k (|V |/t − 3) für einen Parameter t n/k. Einteilung des Algorithmus in Phasen (Zeilen 3 bis 38 ) und Iterationen (Zeilen 7 bis 32 ). Jede Phase kann aus mehreren einzelnen Iterationen bestehen. Der Algorithmus von Feige – Verständnis 6 Jede Phase arbeitet auf einem Graphen G0 = (V 0, E 0), welcher eine Clique der Größe |V 0|/k enthält. Nach Abarbeitung einzelner Iterationen endet eine Phase, so dass eine der folgenden zwei Bedingungen erfüllt ist: 1. Eine Clique C der Kardinalität |C| ≥ t · log3k (|V 0|/(6kt)) wurde gefunden. 2. Ein schwacher Untergraph G00 = (V 00, E 00) wurde gefunden. Der Algorithmus von Feige – Verständnis Jede Iteration arbeit auf einem Graphen G00 = (V 00, E 00) und führt folgende Schritte aus: Falls |V 00| < 6kt, dann beende Phase und gib C aus. Partitioniere V 00 in disjunkte Knotenmengen Pi der Größe 2kt. Betrachte alle möglichen t-elementigen Teilmengen S von Pi. Sei N (S) alle Knoten in V 00 \ S, die mit jedem Knoten aus S in G00 verbunden sind. Bezeichne S als gut, falls S eine Clique ist und N (S) ≥ |V 00|/(2k) − t erfüllt. 5. Falls eine gute Knotenmenge S gefunden wird, dann setze C = C ∪ S und starte neue Iteration mit dem auf N (S) induzierten Untergraphen von G00. 6. Sonst bezeichne V 00 als schwach und beende Phase. 1. 2. 3. 4. 7 8 Der Algorithmus von Feige – Korrektheit Satz 3 Wenn eine Knotenmenge V 00 vom Algorithmus von Feige als schwach erkannt wird, dann enthält der auf V 00 induzierte Untergraph von G = (V, E) tatsächlich keine Clique C der Kardinalität |V 00| |C| ≥ . 2k 8 Der Algorithmus von Feige – Korrektheit Satz 3 Wenn eine Knotenmenge V 00 vom Algorithmus von Feige als schwach erkannt wird, dann enthält der auf V 00 induzierte Untergraph von G = (V, E) tatsächlich keine Clique C der Kardinalität |V 00| |C| ≥ . 2k Beweis: Annahme: V 00 = P1 ∪ . . . ∪ Pl enthält Clique C mit |V 00| |C| ≥ =t·l 2k nach Schubfachprinzip gibt es ein Pi, dass t Knoten von C enthält =⇒ es gibt ein S mit der Eigenschaft gut 2 Der Algorithmus von Feige – Korrektheit 9 Satz 4 Endet eine Phase mit der Ausgabe einer Menge C, dann enthält diese mindestens |V 0| |C| ≥ t · log3k 6kt Knoten, welche eine Clique in G0 = (V 0, E 0) und damit auch in G = (V, E) bilden. Der Algorithmus von Feige – Korrektheit 9 Satz 4 Endet eine Phase mit der Ausgabe einer Menge C, dann enthält diese mindestens |V 0| |C| ≥ t · log3k 6kt Knoten, welche eine Clique in G0 = (V 0, E 0) und damit auch in G = (V, E) bilden. Beweis: jede – außer der letzten – Iteration fügt t Knoten zu C hinzu =⇒ Bestimmung einer unteren Schranke für die Anzahl Iterationen Der Algorithmus von Feige – Korrektheit 10 - die erste Iteration startet mit V 0 vielen Knoten - eine neue Iteration startet mit wenigstens |V 00|/(2k) − t - es gilt |V 00| ≥ 6kt, also t ≤ |V 00|/(6k) - die Anzahl Knoten einer neuen Iteration ist mindestens |V 00| |V 00| |V 00| − = 2k 6k 3k - die Anzahl Knoten der i + 1’ten Iteration ist mindestens |V 0| (3k)i Der Algorithmus von Feige – Korrektheit 11 =⇒ Wann ist die Anzahl Knoten einer Iteration kleiner 6kt? |V 0| < 6kt x (3k) |V 0| ⇐⇒ < (3k)x 6kt |V 0| ⇐⇒ log3k < x 6kt Der Algorithmus von Feige – Korrektheit 11 =⇒ Wann ist die Anzahl Knoten einer Iteration kleiner 6kt? |V 0| < 6kt x (3k) |V 0| ⇐⇒ < (3k)x 6kt |V 0| ⇐⇒ log3k < x 6kt es werden mindestens log3k (|V 0|/(6kt)) Iterationen durchlaufen, die jeweils t Knoten zu C hinzufügen, also gilt |V 0| |C| ≥ t · log3k 6kt 2 12 Der Algorithmus von Feige – Laufzeit =⇒ mehrere Phasen gibt es nur, wenn schwache Knotenmengen gefunden werden - jede schwache Knotenmenge S erfüllt |S| ≥ 6kt, also gilt n # Phasen ≤ 6kt - die Anzahl Iteration einer Phase ist beschränkt durch n # Iterationen ≤ t Der Algorithmus von Feige – Laufzeit 13 =⇒ Laufzeit einer Iteration - die Anzahl Knotenmengen Pi ist beschränkt durch n # Knotenmengen Pi ≤ 2kt - Anzahl möglicher Mengen S # t-elementige Knotenmengen von Pi = - Test auf Eigenschaft gut in Zeit O(n · t) 2kt t Der Algorithmus von Feige – Laufzeit 13 =⇒ Laufzeit einer Iteration - die Anzahl Knotenmengen Pi ist beschränkt durch n # Knotenmengen Pi ≤ 2kt - Anzahl möglicher Mengen S # t-elementige Knotenmengen von Pi = 2kt t - Test auf Eigenschaft gut in Zeit O(n · t) =⇒ Gesamtlaufzeit O 4 n 2kt · 2 2 t k ·t Der Algorithmus von Feige – Laufzeit Laufzeit polynomiell in n, wenn 14 2kt t polynomiell in n die Wahl des Parameters t beeinflußt Größe der gefundenen Clique sowie die Laufzeit des Algorithmus Der Algorithmus von Feige – Laufzeit Laufzeit polynomiell in n, wenn 14 2kt t polynomiell in n die Wahl des Parameters t beeinflußt Größe der gefundenen Clique sowie die Laufzeit des Algorithmus um beides miteinander abzustimmen und eine polynomiell in n beschränkte Laufzeit zu erhalten, setzt man log n t=Θ log log n Der Algorithmus von Feige – Laufzeit Laufzeit polynomiell in n, wenn 14 2kt t polynomiell in n die Wahl des Parameters t beeinflußt Größe der gefundenen Clique sowie die Laufzeit des Algorithmus um beides miteinander abzustimmen und eine polynomiell in n beschränkte Laufzeit zu erhalten, setzt man log n t=Θ log log n die gefundene Clique C hat dann die Kardinalität 2 ! log n |C| = Ω log log n 15 Eine Approximationsgüte von O(n(log log n)2/(log n)3) Gegeben: ein Graph G = (V, E) mit einer Clique C der Kardinalität n |C| ≥ k (k minimal) 15 Eine Approximationsgüte von O(n(log log n)2/(log n)3) Gegeben: ein Graph G = (V, E) mit einer Clique C der Kardinalität n |C| ≥ k (k minimal) für k kommen nur folgende n Werte in Frage: n n n k∈ , ,..., ,1 1 2 n−1 o.B.d.A. sei k bekannt Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Fall 1: k ≥ (log n)3 - durch Ausgabe eines beliebigen Knotens v ∈ V erreicht man eine Approximationsgüte von O(n/(log n)3) 16 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Fall 1: k ≥ (log n)3 - durch Ausgabe eines beliebigen Knotens v ∈ V erreicht man eine Approximationsgüte von O(n/(log n)3) Fall 2: k ≤ log n/(2 log log n) - benutze Algorithmus IndependentSetRemoval von Boppana und Halldórsson - bei einem Graphen G, welcher eine Clique der Kardinalität 2n log log n/ log n enthält, liefert dieser eine Clique der Größe (log n)3/(6 log log n) - Approximationsgüte von O(n log log n/(log n)3) 16 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Fall 3: log n/(2 log log n) < k < (log n)3 - der Algorithmus von Feige erreicht hier nur eine Approximationsgüte von O(n(log log n)3/(log n)3) - für k > log n ist die Güte schon O(n(log log n)2/(log n)3) - müssen also einen Faktor von Ω(log log n) einsparen 17 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Fall 3: log n/(2 log log n) < k < (log n)3 - der Algorithmus von Feige erreicht hier nur eine Approximationsgüte von O(n(log log n)3/(log n)3) - für k > log n ist die Güte schon O(n(log log n)2/(log n)3) - müssen also einen Faktor von Ω(log log n) einsparen =⇒ modifiziere Algorithmus von Feige =⇒ ändere Definition einer guten Knotenmenge 17 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Modifikation: - bezeichne eine Knotenmenge S als gut, falls S eine Clique ist und N (S) > ntest − t gilt, wobei ntest der größte Wert ist für den gilt log ntest |V 00| ntest ≤ · 2 log log ntest 2k 18 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Modifikation: - bezeichne eine Knotenmenge S als gut, falls S eine Clique ist und N (S) > ntest − t gilt, wobei ntest der größte Wert ist für den gilt log ntest |V 00| ntest ≤ · 2 log log ntest 2k - falls |V 00|/(2k) − t ≤ N (S) ≤ ntest − t gilt, dann führe den Algorithmus IndependentSetRemoval auf G[S ∪ N (S)] aus 18 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Modifikation: - bezeichne eine Knotenmenge S als gut, falls S eine Clique ist und N (S) > ntest − t gilt, wobei ntest der größte Wert ist für den gilt log ntest |V 00| ntest ≤ · 2 log log ntest 2k - falls |V 00|/(2k) − t ≤ N (S) ≤ ntest − t gilt, dann führe den Algorithmus IndependentSetRemoval auf G[S ∪ N (S)] aus =⇒ erhält man eine Clique der Größe (log ntest)3/(6 log log ntest), dann fügt man diese Clique zu C hinzu und gibt C aus =⇒ sonst ist S eine schwache Knotenmenge 18 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Modifikation: - bezeichne eine Knotenmenge S als gut, falls S eine Clique ist und N (S) > ntest − t gilt, wobei ntest der größte Wert ist für den gilt log ntest |V 00| ntest ≤ · 2 log log ntest 2k - falls |V 00|/(2k) − t ≤ N (S) ≤ ntest − t gilt, dann führe den Algorithmus IndependentSetRemoval auf G[S ∪ N (S)] aus =⇒ erhält man eine Clique der Größe (log ntest)3/(6 log log ntest), dann fügt man diese Clique zu C hinzu und gibt C aus =⇒ sonst ist S eine schwache Knotenmenge Korrektheit des modifizierten Algorithmus muss gezeigt werden 18 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Satz 5 Wenn eine Knotenmenge V 00 vom modifizierten Algorithmus von Feige als schwach erkannt wird, dann enthält der auf V 00 induzierte Untergraph von G = (V, E) tatsächlich keine Clique C der Kardinalität |C| ≥ |V 00|/(2k). 19 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Satz 5 Wenn eine Knotenmenge V 00 vom modifizierten Algorithmus von Feige als schwach erkannt wird, dann enthält der auf V 00 induzierte Untergraph von G = (V, E) tatsächlich keine Clique C der Kardinalität |C| ≥ |V 00|/(2k). Beweis: - zunächst analog zum Beweis von Satz 3 - angenommen G[V 00] enthält eine Clique der Größe |V 00|/(2k), dann existiert nach dem Schubfachprinzip eine Knotenmenge Pi, die mindestens t Knoten von dieser Clique enthält - dann gibt es aber eine t-elementige Menge S, welche eine Clique ist und für die |N (S)| ≥ |V 00|/(2k) − t gilt 19 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) =⇒ gilt zusätzlich |N (S)| > ntest − t, dann ist S nicht schwach =⇒ sonst gilt |V 00|/(2k) − t ≤ N (S) ≤ ntest − t 20 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) =⇒ gilt zusätzlich |N (S)| > ntest − t, dann ist S nicht schwach =⇒ sonst gilt |V 00|/(2k) − t ≤ N (S) ≤ ntest − t - der Graph G[S ∪ N (S)] enthält dann eine Clique C der Größe |V 00| ntest · 2 log log ntest |C| ≥ = 2k log ntest - der Algorithmus IndependentSetRemoval liefert dann eine Clique der Kardinalität (log ntest)3 |C| ≥ 6 log log ntest 20 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) 20 =⇒ gilt zusätzlich |N (S)| > ntest − t, dann ist S nicht schwach =⇒ sonst gilt |V 00|/(2k) − t ≤ N (S) ≤ ntest − t - der Graph G[S ∪ N (S)] enthält dann eine Clique C der Größe |V 00| ntest · 2 log log ntest |C| ≥ = 2k log ntest - der Algorithmus IndependentSetRemoval liefert dann eine Clique der Kardinalität (log ntest)3 |C| ≥ 6 log log ntest =⇒ V 00 wird nicht als schwach bezeichnet 2 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) Satz 6 Es seien t = log n/ log log n und log n/(2 log log n) < k < log n die Parameter für den modifizierten Algorithmus von Feige. Endet eine Phase dieses Algorithmus mit der Ausgabe einer Menge C, dann ist C eine Clique auf Ω(t · logb |V 0|) Knoten, wobei b = Θ(k · log log |V 0|/ log |V 0|). 21 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) 21 Satz 6 Es seien t = log n/ log log n und log n/(2 log log n) < k < log n die Parameter für den modifizierten Algorithmus von Feige. Endet eine Phase dieses Algorithmus mit der Ausgabe einer Menge C, dann ist C eine Clique auf Ω(t · logb |V 0|) Knoten, wobei b = Θ(k · log log |V 0|/ log |V 0|). Insbesondere bedeutet dies, dass eine Clique C der Kardinalität 2 (log n) |C| = Ω log log n gefunden wird, wenn der Graph eine Clique der Größe Θ(n log log n/ log n) hat. Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) 22 Beweis: 00 =⇒ betrachte nur Iteration solange |V | ≥ p |V 0| gilt - findet der Algorithmus IndependentSetRemoval eine Clique C der Kardinalität (log ntest)3 |C| ≥ , 6 log log ntest p 00 dann gilt wegen ntest ≥ |V |/(2k) ≥ |V 0|/(2k) 0 3 (log |V |) |C| = Ω log log |V 0| Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) - sonst gilt in jeder Iteration |N (S)| > ntest − t 23 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) - sonst gilt in jeder Iteration |N (S)| > ntest − t - die Anzahl Knoten einer neuen Iteration ist dann 00 0 |V | · log |V | Θ k · log log |V 0| - die Reduzierung der Knotenmenge V 00 erfolgt dann mit einem Faktor von 0 k · log log |V | O log |V 0| (vorher war dieser Faktor O(k)) 23 Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) 24 - die Anzahl Iterationen ist dann x 0 log |V | 0 · |V | < 6kt 0 k · log log |V | log(|V 0|/(6kt)) < x ⇐⇒ 0 0 log(k | · log log |V {z |/ log |V }|) =b Eine Approximationsgüte von O(n(log log n)2 /(log n)3 ) 24 - die Anzahl Iterationen ist dann x 0 log |V | 0 · |V | < 6kt 0 k · log log |V | log(|V 0|/(6kt)) < x ⇐⇒ 0 0 log(k | · log log |V {z |/ log |V }|) =b - in jeder Iteration werden t Knoten zu C hinzugefügt =⇒ man erhält eine Clique C der Kardinalität |C| = Ω(t · logb |V 0|) 2