Approximation der Cliquenzahl eines Graphen

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