# Einleitung ![image_590.png](image_590.png) ## Das Ampelproblem ![image_553.png](image_553.png) ### 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}} ![image_588.png](image_588.png) ### Formalisierung des algorithmischen Vorgehens 1. Verträglichkeitsgraphen erstellen ($G = (V,E)$) 2. finde eine größte [Clique](#clique-c) $C_1$ in V 3. Entferne aus G alle Knoten aus $C_1$ und Kanten Adjazent zu $C_1$ - $V ← V $ \\ $ C_1$ - $E ← E $ \ {$e ∈ E | e ∩ C_1 \neq ∅$} 4. finde eine größte [Clique](#clique-c) $C_2$ in V 5. ... ## 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. 1. Verträglichkeitsgraphen erstellen ($G = (V,E)$) 2. finde eine größte [Clique](#clique-c) $C_1$ in V 3. zähle Elemente der Clique > Theorem 1.2 > > Algorithmus A löse MaximusCliqueSize. Dann existiert Algorithmus B mit ähnlicher Laufzeit der MaximumClique löst. $N(v) = \{n ∈ V | \{n,v\} ∈ E\}$ - alle Knoten, die nix mit dem zu tun haben werden entfernt $$ \begin{array}{l} \text{A}(G = (V, E)) \\ 1.\ \text{Wähle } v \in V \text{ mit kleinster ID} \\ 2.\ \text{Berechne } k = B(G) \\ 3.\ \text{Berechne } k_{-v} = B(G - v) \\ 4.\ \text{Falls } k_{-v} < k: \\ \quad a.\ c = A(G - v - \overline{N(v)}) \\ \quad b.\ \text{Gib } \{v\} \text{u zurück} \\ 5.\ \text{Sonst:} \\ \quad a.\ c = A(G - v) \\ \quad b.\ \text{Gib } c \text{ zurück} \end{array} $$ **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: - (a) v ∈ allen größten Cliquen → $k_{-v}$ = k - 1 - (b) v !∈ allen größten Cliquen → $k_{-v}$ = k ![image_589.png](image_589.png) ### 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)** 1. Verträglichkeitsgraphen erstellen ($G = (V,E)$) 2. Cliquen finden 3. Elemente der ersten Clique zählen 4. falls Elemente = k → Abbruch sonst zur nächsten