2.4 KiB
Einleitung
Das Ampelproblem
Lösungsansatz
- ungerichteter Graph
G = (V, E)
- V = endliche Knotenmenge
- E = endliche Kantenmenge
- wichtige Eigenschaft: si, sj verträglich oder nicht
Graph G=(V,E) für kommende Abbildung:
V = {s1, s2, s3, s4, s5, s6},
E = {{s1, s4}, {s1, s5}, {s2, s4}, {s2, s5}, {s3, s6}, {s4, s5}}
Formalisierung des algorithmischen Vorgehens
- Verträglichkeitsgraphen erstellen (
G = (V,E)
) - finde eine größte Clique
C_1
in V - Entferne aus G alle Knoten aus
C_1
und Kanten Adjazent zuC_1
V ← V
\C_1
E ← E
\ {$e ∈ E | e ∩ C_1 \neq ∅$}
- finde eine größte Clique
C_2
in V - ...
Clique C
nicht-leere Teilmenge C \subseteq V
, wenn zwei verschiedene Knoten in C paarweise durch eine Kante aus E verbunden sind
Es gilt:
{u,v} \in E
für alle u,v \in C
mit u \ne v
per Definition ist auch jede einelementige Teilmenge C \subseteq V
eine Clique
Größe einer Clique:
|C|
Maximum Clique-Size
Eingabe: Graph V = (V, E)
Ausgabe: Größe einer größten Clique C von G
Theorem 1.1
Algorithmus A löse MaximumClique. Dann existiert Algorithmus B mit ~ gleicher Laufzeit der MaximumCliqueSize löst.
- Verträglichkeitsgraphen erstellen (
G = (V,E)
) - finde eine größte Clique
C_1
in V - zähle Elemente der Clique
Theorem 1.2
Algorithmus A löse MaximusCliqueSize. Dann existiert Algorithmus B mit ähnlicher Laufzeit der MaximumClique löst.
Zentrale Beobachtung:
- Für G = (V, E) und v ∈ V sei G - v = (V\v,{e ∈ E | v !∈ e}).
- Sei k die Größe einer Clique in G und
k_{-v}
die Größe einer größten Clique in G-v. - Dann gilt:
MaximumCliqueDec
Eingabe: Graph V = (V, E) und k ∈ Ν
Ausgabe: gibt es eine Clique C der Größe k in G?
Theorem 1.3
Algorithmus A löse MaximumCliqueDec. Dann existiert ähnlicher Algorithmus B mit ähnlicher Laufzeit, der MaximumCliqueSize löst.
B(G, k) für G = (V, E)
- Verträglichkeitsgraphen erstellen (
G = (V,E)
) - Cliquen finden
- Elemente der ersten Clique zählen
- falls Elemente = k -> Abbruch sonst zur nächsten