# 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