JavaScript promise rejection: Loading CSS chunk katex failed. (error: https://git.gaminggeneration.de/assets/css/katex.faca27c4.css). Open browser console to see more details. (23)
Files
.idea
Writerside
cfg
images
topics
02
04
Datenbanken
HCI
Informatik und Gesellschaft
Projektmanagement
Rechnernetze
Software Engineering
Theoretische Informatik
Hausaufgaben
Übungen
01Einleitung.md
02_GrundlagenFormaleSprachen.md
03_GrundlagenEndlicherAutomaten.md
04_GrenzenGroesseEA.md
05_GrundlagenGrammatiken.md
06
pdf
StartPage.md
c.list
in.tree
v.list
writerside.cfg
.gitlab-ci.yml
README.md
zusammenfassungen/Writerside/topics/04/Theoretische Informatik/01Einleitung.md
David Schirrmeister 289623ea5a update
2025-04-15 18:44:27 +02:00

2.9 KiB
Raw Blame History

Einleitung

image_590.png

Das Ampelproblem

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

Formalisierung des algorithmischen Vorgehens

  1. Verträglichkeitsgraphen erstellen (G = (V,E))
  2. finde eine größte Clique 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 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 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

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