David Schirrmeister 289623ea5a update
2025-04-15 18:44:27 +02:00

106 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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