diff --git a/Writerside/images/image_588.png b/Writerside/images/image_588.png new file mode 100644 index 0000000..0652f08 Binary files /dev/null and b/Writerside/images/image_588.png differ diff --git a/Writerside/images/image_589.png b/Writerside/images/image_589.png new file mode 100644 index 0000000..2dc45ca Binary files /dev/null and b/Writerside/images/image_589.png differ diff --git a/Writerside/topics/04/Theoretische Informatik/01Einleitung.md b/Writerside/topics/04/Theoretische Informatik/01Einleitung.md index ad24932..4077552 100644 --- a/Writerside/topics/04/Theoretische Informatik/01Einleitung.md +++ b/Writerside/topics/04/Theoretische Informatik/01Einleitung.md @@ -7,15 +7,29 @@ ### Lösungsansatz - ungerichteter Graph $G = (V, E)$ - V = endliche Knotenmenge - - E = endliche Kangenmenge + - 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_554.png](image_554.png) +![image_588.png](image_588.png) -#### Clique C +### 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:** @@ -26,3 +40,44 @@ per Definition ist **auch jede einelementige Teilmenge** $C \subseteq V$ eine Cl 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. + +**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 +