\documentclass[11pt]{article} \input{style_guide.tex} \setlength{\parskip}{0.4em} % Aufgabenkopf: #1 Nummer, #2 Titel, #3 Quelle+Punkte \newcounter{aufg} \newcommand{\katkopf}[2]{% \stepcounter{aufg}% \phantomsection\addcontentsline{toc}{subsection}{A\theaufg\ \ #1}% \noindent{\setlength{\fboxsep}{6pt}\colorbox{aufgabeink}{\parbox{\dimexpr\linewidth-12pt\relax}{% \color{white}\textbf{A\theaufg\quad #1}\hspace{1em}\hfill\mbox{\small #2}}}}\par\medskip} \newcommand{\lsg}{\par\medskip\noindent{\color{loesgreen}\rule{\linewidth}{0.8pt}}\par\smallskip\noindent\textbf{Lösung.}\par\smallskip} % Beispiel-Seite (eigene Seite, Teal-Kopf zur Abgrenzung vom Aufgabenkopf) \newcommand{\bspkopf}[1]{\newpage% \noindent{\setlength{\fboxsep}{6pt}\colorbox{bspink}{\parbox{\dimexpr\linewidth-12pt\relax}{% \color{white}\textbf{Beispiel\quad #1}}}}\par\medskip} % Beispielgraph aus HA-Blatt 9 (A2/A3); #1 = Hervorhebungen obendrauf \newcommand{\hanetz}[1]{% \begin{tikzpicture}[scale=0.9] \node[knoten] (k1) at (0,3) {1}; \node[knoten] (k6) at (2,3) {6}; \node[knoten] (k2) at (4,3) {2}; \node[knoten] (k5) at (1.3,1.5) {5}; \node[knoten] (k7) at (3,1.5) {7}; \node[knoten] (k8) at (0,0) {8}; \node[knoten] (k4) at (2,0) {4}; \node[knoten] (k3) at (4,0) {3}; \foreach \a/\b in {1/6,6/2,2/3,1/5,6/5,7/5,5/8,8/4,4/5,3/4,3/7,4/7} \draw[->,thick] (k\a) -- (k\b); #1 \end{tikzpicture}} \title{\textbf{\Huge Aufgabenkatalog}\\[0.4em] \large Alle Klausur-, Haus- und Präsenzaufgaben mit minimalen Lösungen\\ \normalsize \textit{Analyse von Algorithmen und Komplexität} -- CAU Kiel} \author{} \date{} \begin{document} \maketitle \thispagestyle{empty} \tableofcontents \newpage % ################################################################## \section{NP-Zugehörigkeit} % ################################################################## % ================================================================== \katkopf{Knapsack $\in$ NP}{Präsenz 9.1} \textbf{Gegeben:} $n$ Gegenstände mit Gewichten $w_1,\dots,w_n$ und Profiten $p_1,\dots,p_n$, Kapazität $K$, Zielprofit $P$. \textbf{Entscheide:} Gibt es $S \subseteq [n]$ mit $\sum_{i\in S} w_i \le K$ und $\sum_{i\in S} p_i \ge P$? Zeigen Sie $\problem{Knapsack} \in \NP$ auf zwei Wege: (1) nichtdeterministischer Polynomialzeit-Algorithmus, (2) polynomieller Verifizierer. Wie hängen beide zusammen? \lsg \textbf{(1) NTM:} Für jeden Gegenstand wird nichtdeterministisch entschieden, ob er in den Rucksack kommt. Danach wird geprüft, ob $\sum_{i\in S} w_i \le K$ und $\sum_{i\in S} p_i \ge P$ gilt; genau dann wird akzeptiert. \textbf{Korrektheit:} Existiert eine gültige Füllung mit genug Profit, gibt es eine Folge von Entscheidungen, die sie auswählt -- diese wird akzeptiert; sonst lehnt jeder Rechenweg ab. \textbf{Laufzeit:} $n$ Rateschritte plus Summation und Vergleich in $O(n)$ -- also polynomiell. \textbf{(2) Verifizierer:} Zertifikat ist $S \subseteq [n]$. Berechne $\sum_{i\in S} w_i$ und $\sum_{i\in S} p_i$, vergleiche mit $K$ und $P$, akzeptiere entsprechend. \textbf{Korrektheit:} Existiert eine gültige Füllung, beschreibt ein Zertifikat genau sie und wird akzeptiert; sonst wird jedes abgelehnt. \textbf{Laufzeit:} Summen und Vergleiche in $O(n)$ -- ein polynomieller Verifizierer. \textbf{Zusammenhang:} Die Folge der Rateschritte der NTM \emph{ist} das Zertifikat. Beide Wege bestimmen mit der Extra-Ressource einen Kandidaten und prüfen ihn dann deterministisch. \hfill$\square$ \bspkopf{A1 -- Knapsack $\in$ NP} \textbf{Instanz.} Drei Gegenstände als $(w_i, p_i)$: \[ (2,3),\quad (3,4),\quad (5,6); \qquad K = 5,\ P = 7. \] \textbf{Gültiges Zertifikat} $S = \{1,2\}$: Der Verifizierer rechnet \[ \sum_{i\in S} w_i = 2+3 = 5 \le K, \qquad \sum_{i\in S} p_i = 3+4 = 7 \ge P, \] beide Bedingungen erfüllt -- er \emph{akzeptiert}. \textbf{Ungültige Zertifikate.} \begin{itemize} \item $S = \{1,2,3\}$: Gewicht $2+3+5 = 10 > 5$ -- Kapazität verletzt, verworfen. \item $S = \{3\}$: Profit $6 < 7$ -- Zielprofit verfehlt, verworfen. \end{itemize} \textbf{Verbindung zur NTM.} Die NTM trifft pro Gegenstand eine Ja/Nein-Entscheidung; die Folge $(\text{ja}, \text{ja}, \text{nein})$ wählt genau $S = \{1,2\}$ aus. Dieses Entscheidungsprotokoll \emph{ist} das Zertifikat -- ein akzeptierender Rechenweg der NTM und ein akzeptiertes Zertifikat des Verifizierers sind dasselbe Objekt. \newpage % ================================================================== \katkopf{VertexCover $\in$ NP (mit Beispielgraph)}{Hausaufgabe 9.1, 5 P.} \textbf{Problem \problem{VertexCover}:} Gegeben ein Graph $G = (V,E)$ und eine Zahl $k \in \mathbb{N}_0$. Ein Vertex Cover ist eine Knotenmenge $C \subseteq V$, die von jeder Kante mindestens einen Endpunkt enthält. Gibt es ein Vertex Cover mit $|C| \le k$? \textbf{Gegeben} der folgende gerichtete Graph: \begin{center} \hanetz{} \end{center} \begin{enumerate} \item Finden Sie ein minimales Vertex Cover (Orientierung irrelevant). \item Zeigen Sie $\problem{VertexCover} \in \NP$ durch einen nichtdeterministischen Polynomialzeit-Algorithmus (Korrektheit + Laufzeit). \end{enumerate} \lsg \textbf{1.} Ein minimales Vertex Cover ist $C = \{3,4,5,6\}$ (Größe 4) -- jede Kante hat mindestens einen markierten Endpunkt. Kleiner geht es nicht: Ohne Knoten 5 decken drei Knoten höchstens $4+3+3 = 10 < 12$ Kanten; mit Knoten 5 bleiben 7 Kanten, und nach Entfernen der 5 Kanten an Knoten 5 trägt kein Knoten mehr als 3 der Restkanten -- zwei weitere Knoten decken höchstens $6 < 7$. \begin{center} \hanetz{\node[kndick] at (4,0) {3};\node[kndick] at (2,0) {4};% \node[kndick] at (1.3,1.5) {5};\node[kndick] at (2,3) {6};} \end{center} \textbf{2.} Der Algorithmus arbeitet wie folgt: \begin{itemize} \item Für jeden Knoten $v \in V$ wird nichtdeterministisch entschieden, ob er in $C$ aufgenommen wird. \item Prüfe $|C| \le k$; lehne sonst ab. \item Prüfe für jede Kante $\{u,v\} \in E$, ob $u \in C$ oder $v \in C$. Akzeptiere genau dann, wenn alle Kanten gedeckt sind. \end{itemize} \textbf{Korrektheit:} Existiert ein Vertex Cover der Größe $\le k$, gibt es eine Folge von Entscheidungen, die genau diese Menge wählt -- sie wird akzeptiert. Existiert keines, lehnt jeder Rechenweg ab. \textbf{Laufzeit:} Auswahl der Knoten und Prüfung aller Kanten laufen in $O(|V| + |E|)$, also polynomiell. Damit $\problem{VertexCover} \in \NP$. \hfill$\square$ \bspkopf{A2 -- VertexCover $\in$ NP} \textbf{Instanz.} Viereck mit $V=\{1,2,3,4\}$ und Kanten $\{1,2\},\{2,3\},\{3,4\},\{4,1\}$; Schranke $k=2$. \begin{center} \begin{tikzpicture}[scale=1] \node[kndick] (v1) at (0,2) {1}; \node[knoten] (v2) at (2,2) {2}; \node[kndick] (v3) at (2,0) {3}; \node[knoten] (v4) at (0,0) {4}; \draw[thick] (v1)--(v2) (v2)--(v3) (v3)--(v4) (v4)--(v1); \end{tikzpicture} \end{center} \textbf{Gültiges Zertifikat} $C=\{1,3\}$ (grau markiert). Der Verifizierer prüft jede Kante auf einen Endpunkt in $C$: \[ \{1,2\}\colon 1\in C,\quad \{2,3\}\colon 3\in C,\quad \{3,4\}\colon 3\in C,\quad \{4,1\}\colon 1\in C. \] Jede Kante gedeckt und $|C|=2\le k$ -- er \emph{akzeptiert}. \textbf{Ungültige Zertifikate.} \begin{itemize} \item $C=\{1,2\}$: Kante $\{3,4\}$ ungedeckt ($3\notin C$, $4\notin C$) -- verworfen. \item $C=\{2\}$: zwar $|C|\le k$, aber $\{3,4\}$ und $\{4,1\}$ ungedeckt -- verworfen. \end{itemize} \textbf{Verbindung zur NTM.} Die NTM rät pro Knoten \glqq in $C$\grqq{} / \glqq nicht in $C$\grqq{}; die Folge $(\text{ja},\text{nein},\text{ja},\text{nein})$ wählt genau $C=\{1,3\}$ und liefert den akzeptierenden Rechenweg. \newpage % ================================================================== \katkopf{FeedbackVertexSet $\in$ NP (mit Beispielgraph)}{Hausaufgabe 9.2, 5 P.} \textbf{Problem \problem{FeedbackVertexSet}:} Gegeben ein gerichteter Graph $G = (V,E)$ und eine Zahl $k \in \mathbb{N}_0$. Gibt es eine Knotenmenge $X \subseteq V$ mit $|X| \le k$, sodass $G \setminus X$ (der Graph nach Entfernen von $X$ samt anliegender Kanten) kreisfrei ist? \textbf{Gegeben} der folgende gerichtete Graph: \begin{center} \hanetz{} \end{center} \begin{enumerate} \item Finden Sie ein minimales Feedback Vertex Set im gegebenen Graphen. \item Zeigen Sie $\problem{FeedbackVertexSet} \in \NP$ durch einen polynomiellen Verifizierer (Korrektheit + Laufzeit). \end{enumerate} \lsg \textbf{1.} Ein minimales FVS ist $X = \{5\}$ (Größe 1). Der Graph enthält genau zwei Kreise: $5{\to}8{\to}4{\to}5$ (dick markiert) und $5{\to}8{\to}4{\to}7{\to}5$. Beide laufen durch 5 -- ohne 5 bleibt kein Kreis übrig. (Auch $\{4\}$ oder $\{8\}$ ist möglich.) \begin{center} \hanetz{\draw[->,line width=1.6pt] (k5) -- (k8);% \draw[->,line width=1.6pt] (k8) -- (k4);% \draw[->,line width=1.6pt] (k4) -- (k5);% \node[kndick] at (1.3,1.5) {5};} \end{center} \textbf{2.} Zertifikat ist eine Teilmenge $X \subseteq V$. Der Verifizierer: \begin{itemize} \item Prüfe $|X| \le k$; lehne sonst ab. \item Konstruiere $G' = G \setminus X$. \item Prüfe mit dem Algorithmus zur topologischen Sortierung aus der Vorlesung, ob $G'$ kreisfrei ist: Er findet genau dann eine Sortierung, wenn kein Kreis existiert. Akzeptiere entsprechend. \end{itemize} \textbf{Korrektheit:} Existiert ein FVS der Größe $\le k$, beschreibt ein Zertifikat genau dieses; $G' $ ist dann kreisfrei und es wird akzeptiert. Sonst bleibt bei jedem Zertifikat ein Kreis und es wird abgelehnt. \textbf{Laufzeit:} Größentest $O(|V|)$, Konstruktion und topologische Sortierung $O(|V|+|E|)$ -- polynomiell. Damit $\problem{FeedbackVertexSet} \in \NP$. \hfill$\square$ \bspkopf{A3 -- FeedbackVertexSet $\in$ NP} \textbf{Instanz.} Gerichteter Graph mit $V=\{1,2,3,4\}$ und Kanten $1{\to}2,\ 2{\to}3,\ 3{\to}1,\ 3{\to}4$; Schranke $k=1$. Einziger Kreis: $1{\to}2{\to}3{\to}1$. \begin{center} \begin{tikzpicture}[scale=1] \node[knoten] (v1) at (1,2) {1}; \node[kndick] (v2) at (2.2,0.4){2}; \node[knoten] (v3) at (0,0.4) {3}; \node[knoten] (v4) at (-1.7,1.3){4}; \draw[->,thick] (v1)--(v2); \draw[->,thick] (v2)--(v3); \draw[->,thick] (v3)--(v1); \draw[->,thick] (v3)--(v4); \end{tikzpicture} \end{center} \textbf{Gültiges Zertifikat} $X=\{2\}$ (grau markiert). In $G\setminus X$ bleiben nur $3{\to}1$ und $3{\to}4$; die topologische Sortierung $(3,1,4)$ gelingt -- $G\setminus X$ ist kreisfrei und $|X|=1\le k$ -- \emph{akzeptiert}. \textbf{Ungültige Zertifikate.} \begin{itemize} \item $X=\{4\}$: 4 liegt auf keinem Kreis, der Kreis $1{\to}2{\to}3{\to}1$ bleibt -- die topologische Sortierung scheitert -- verworfen. \item $X=\emptyset$: $|X|\le k$, aber der Kreis bleibt -- verworfen. \end{itemize} \newpage % ================================================================== \katkopf{Longest Path $\in$ NP (Dreischritt)}{Klausur SS23-H, A2, 3+3+4 P.} \textbf{Problem \problem{Longest Path}:} Gegeben ein ungerichteter Graph $G = (V,E)$ und eine Zahl $k$. Gibt es einen \emph{einfachen} Pfad in $G$ (kein Knoten wird doppelt besucht) mit Länge $\ge k$? Zeigen Sie auf verschiedene Weisen, dass das Problem in NP liegt: \begin{enumerate} \item[a)] Geben Sie ein Zertifikat an. \item[b)] Beschreiben Sie einen Verifizierer; Laufzeit konkret. \item[c)] Beschreiben Sie eine NTM (in Worten); Laufzeit konkret. \end{enumerate} \lsg \textbf{a)} Eine Folge von $k+1$ paarweise verschiedenen Knoten $(v_0, \dots, v_k)$ -- der behauptete Pfad. \textbf{b)} Der Verifizierer prüft zwei Bedingungen: \begin{itemize} \item Alle $v_i$ sind paarweise verschieden. \item $\{v_i, v_{i+1}\} \in E$ für alle $i < k$. \end{itemize} Akzeptiere genau dann, wenn beides gilt. \textbf{Korrektheit:} Hat $G$ einen einfachen Pfad der Länge $\ge k$, bilden dessen erste $k+1$ Knoten ein akzeptiertes Zertifikat. Wird umgekehrt ein Zertifikat akzeptiert, ist es ein einfacher Pfad der Länge $k$. \textbf{Laufzeit:} Verschiedenheit mit $O(k^2)$ paarweisen Vergleichen; Kanten mit $k$ Adjazenzmatrix-Lookups à $O(1)$. Gesamt $O(k^2) \subseteq O(|V|^2)$, polynomiell. \textbf{c)} Rate nacheinander $k+1$ Knoten auf ein Arbeitsband. Prüfe dann deterministisch: alle geratenen Knoten paarweise verschieden, und $\{v_i, v_{i+1}\} \in E$ für alle $i < k$. Akzeptiere genau dann. \textbf{Laufzeit:} $k+1$ Rateschritte plus $O(|V|^2)$ fürs Prüfen -- insgesamt polynomiell. \hfill$\square$ \bspkopf{A4 -- Longest Path $\in$ NP} \textbf{Instanz.} Viereck mit $V=\{1,2,3,4\}$ und Kanten $\{1,2\},\{2,3\},\{3,4\},\{4,1\}$; Schranke $k=3$ (gesucht: einfacher Pfad mit $k{+}1=4$ Knoten). \begin{center} \begin{tikzpicture}[scale=1] \node[knoten] (v1) at (0,2) {1}; \node[knoten] (v2) at (2,2) {2}; \node[knoten] (v3) at (2,0) {3}; \node[knoten] (v4) at (0,0) {4}; \draw[line width=1.6pt] (v1)--(v2) (v2)--(v3) (v3)--(v4); \draw[thick] (v4)--(v1); \end{tikzpicture} \end{center} \textbf{Gültiges Zertifikat} $(1,2,3,4)$ (fetter Pfad). Der Verifizierer prüft: alle vier Knoten paarweise verschieden, und die Kanten $\{1,2\},\{2,3\},\{3,4\}$ existieren -- \emph{akzeptiert} (einfacher Pfad der Länge $3\ge k$). \textbf{Ungültige Zertifikate.} \begin{itemize} \item $(1,2,4,3)$: Kante $\{2,4\}$ existiert nicht -- verworfen. \item $(1,2,2,3)$: Knoten 2 doppelt (nicht paarweise verschieden) -- verworfen. \end{itemize} \textbf{Verbindung zur NTM.} Die NTM aus c) rät die $k+1$ Knoten direkt aufs Arbeitsband: Die Ratefolge $(1,2,3,4)$ ist genau das akzeptierte Zertifikat, und die anschließende deterministische Prüfung ist dieselbe wie beim Verifizierer. \newpage % ================================================================== \katkopf{Dominating Set $\in$ NP (Dreischritt)}{Klausur SS23-N, A2, 3+3+4 P.} \textbf{Problem \problem{Dominating Set}:} Gegeben ein ungerichteter Graph $G = (V,E)$ und $k \in \mathbb{N}_0$. Gibt es $D \subseteq V$ mit $|D| \le k$, sodass jeder Knoten in $D$ liegt oder zu einem Knoten in $D$ benachbart ist? Zeigen Sie: (a) Zertifikat, (b) polynomieller Verifizierer mit konkreter Laufzeit, (c) polynomielle NTM mit konkreter Laufzeit. \lsg \textbf{a)} Die Knotenmenge $D \subseteq V$. \textbf{b)} Der Verifizierer prüft zwei Bedingungen: \begin{itemize} \item $|D| \le k$. \item Für jeden Knoten $v \in V$: $v \in D$ oder ein Nachbar von $v$ liegt in $D$ -- dazu wird die Zeile von $v$ in der Adjazenzmatrix durchlaufen. \end{itemize} Akzeptiere genau dann, wenn beides gilt. \textbf{Korrektheit:} Existiert ein Dominating Set der Größe $\le k$, wird genau dieses akzeptiert. Sonst bleibt bei jedem Zertifikat ein Knoten undominiert und es wird abgelehnt. \textbf{Laufzeit:} Größentest $O(|V|)$; Dominanztest $O(|V|)$ pro Knoten. Gesamt $O(|V|^2)$, polynomiell. \textbf{c)} Rate für jeden Knoten nichtdeterministisch, ob er in $D$ liegt. Prüfe dann deterministisch: $|D| \le k$, und jeder Knoten liegt in $D$ oder hat einen Nachbarn in $D$. Akzeptiere genau dann. \textbf{Laufzeit:} $O(|V|)$ Rateschritte plus $O(|V|^2)$ fürs Prüfen, also $O(|V|^2)$, polynomiell. \hfill$\square$ \bspkopf{A5 -- Dominating Set $\in$ NP} \textbf{Instanz.} Stern mit Zentrum 1 und Blättern $2,3,4$; Kanten $\{1,2\},\{1,3\},\{1,4\}$; Schranke $k=1$. \begin{center} \begin{tikzpicture}[scale=1] \node[kndick] (v1) at (0,0) {1}; \node[knoten] (v2) at (0,1.7) {2}; \node[knoten] (v3) at (-1.6,-1) {3}; \node[knoten] (v4) at (1.6,-1) {4}; \draw[thick] (v1)--(v2) (v1)--(v3) (v1)--(v4); \end{tikzpicture} \end{center} \textbf{Gültiges Zertifikat} $D=\{1\}$ (grau markiert). Der Verifizierer prüft jeden Knoten: $1\in D$; die Blätter $2,3,4$ sind je zu $1\in D$ benachbart. Alle Knoten dominiert und $|D|=1\le k$ -- \emph{akzeptiert}. \textbf{Ungültige Zertifikate.} \begin{itemize} \item $D=\{2\}$: 2 dominiert nur sich selbst und 1; die Blätter 3 und 4 bleiben undominiert -- verworfen. \item $D=\emptyset$: kein Knoten dominiert -- verworfen. \end{itemize} \textbf{Verbindung zur NTM.} Die NTM aus c) entscheidet für jeden Knoten nichtdeterministisch, ob er in $D$ liegt. Die Entscheidungsfolge $(\text{ja}, \text{nein}, \text{nein}, \text{nein})$ wählt genau $D=\{1\}$ -- ihr akzeptierender Rechenweg entspricht diesem Zertifikat. \newpage % ################################################################## \section{Vorlesungsbeweise} % ################################################################## % ================================================================== \katkopf{$P \subseteq NP$}{Vorlesung (Skript)} Zeigen Sie: $\Pclass \subseteq \NP$. \lsg Sei $L \in \Pclass$. Dann gibt es einen polynomiellen Algorithmus $A$, der $L$ entscheidet. \textbf{Konstruktion:} Fasse $A$ als Verifizierer $V$ auf: $V(x, c) := A(x)$ -- $V$ ignoriert das Zertifikat $c$ und berechnet die Antwort selbst. \textbf{Korrektheit:} Ist $x \in L$, akzeptiert $V(x,c)$ für jedes $c$ (etwa das leere Wort) -- ein akzeptiertes Zertifikat existiert. Ist $x \notin L$, verwirft $V(x,c)$ für jedes $c$ -- kein Zertifikat wird akzeptiert. Also $L = \{x \mid \exists c:\ V(x,c) = 1\}$. \textbf{Laufzeit:} Dieselbe wie die von $A$, polynomiell in $|x|$ -- unabhängig vom Zertifikat. Damit ist $V$ ein polynomieller Verifizierer und $L \in \NP$. \hfill$\square$ \bspkopf{$P \subseteq NP$: ein P-Problem als NP-Problem} \textbf{Instanz.} $L = \problem{Erreichbarkeit}$: Gegeben ein Graph $G$ und Knoten $s, t$ -- gibt es einen Weg von $s$ nach $t$? Das liegt in $\Pclass$ (Breitensuche, $O(|V| + |E|)$). Konkreter Graph: \begin{center} \begin{tikzpicture} \node[knoten] (1) at (0,0) {1}; \node[knoten] (2) at (1.5,0) {2}; \node[knoten] (4) at (3,0) {4}; \node[knoten] (3) at (4.8,0) {3}; \draw (1)--(2) (2)--(4); \end{tikzpicture} \end{center} \textbf{Der Verifizierer.} $V(x, c)$ startet die Breitensuche auf $x = (G,s,t)$ und ignoriert $c$ komplett. \textbf{Ja-Instanz} $s = 1$, $t = 4$: Die Breitensuche findet $1 \to 2 \to 4$. $V$ akzeptiert für \emph{jedes} Zertifikat -- für das leere Wort $c = \varepsilon$ genauso wie für ein Müll-Zertifikat $c = 1101$. Ein akzeptiertes Zertifikat existiert also. \textbf{Nein-Instanz} $s = 1$, $t = 3$: Knoten 3 ist isoliert, die Breitensuche erreicht ihn nie. $V$ verwirft für \emph{jedes} $c$ -- egal was der Tipp behauptet, die Breitensuche entscheidet selbst. \textbf{Pointe.} NP verlangt nur, dass ein akzeptiertes Zertifikat \emph{existiert}, wenn die Antwort Ja ist. Ein Verifizierer, der den Tipp gar nicht braucht, erfüllt das automatisch -- deshalb ist jedes P-Problem auch ein NP-Problem. \newpage % ================================================================== \katkopf{NDTM-Definition $\subseteq$ Verifizierer-Definition}{Klausur SS25-H, A2, 2+8 P.} Beweisen Sie: Jede Sprache $L$, die eine NDTM $M$ in nichtdeterministischer Polynomialzeit $T$ akzeptiert, besitzt einen polynomiellen Verifizierer. \begin{enumerate} \item[a)] Geben Sie zunächst für die Sprache der folgenden NDTM einen analog arbeitenden Verifizierer an: $M(G, k)$ rät eine Knotenmenge $C \subseteq V$, verwirft, falls eine Kante ungedeckt ist oder $|C| > k$, sonst akzeptiert sie. \item[b)] Führen Sie den allgemeinen Beweis. \end{enumerate} \lsg \textbf{a)} Verifizierer $V(G, k;\ c)$: Das Zertifikat $c$ beschreibt eine Knotenmenge $C \subseteq V$. Prüfe deterministisch: für alle $\{u,v\} \in E$, ob $u \in C$ oder $v \in C$; und ob $|C| \le k$. Akzeptiere genau dann. Das Raten der NDTM ist durch das gegebene Zertifikat ersetzt; die Prüfschritte sind identisch. Laufzeit $O(|V| + |E|)$. \textbf{b)} Sei $L$ von der NDTM $M$ in Zeit $T$ akzeptiert. Definiere den Verifizierer $V(x, c)$: Interpretiere $c$ als Folge von höchstens $T(|x|)$ nichtdeterministischen Entscheidungen. Simuliere $M$ auf $x$ deterministisch; bei jedem Schritt mit mehreren möglichen Übergängen wähle den, den $c$ vorgibt. Akzeptiere genau dann, wenn diese Rechnung innerhalb von $T(|x|)$ Schritten akzeptierend endet. \textbf{Korrektheit:} Ist $x \in L$, so hat $M$ einen akzeptierenden Rechenweg der Länge $\le T(|x|)$; die Folge seiner Entscheidungen ist ein Zertifikat, das $V$ akzeptiert. Ist $x \notin L$, akzeptiert kein Rechenweg von $M$ -- also führt kein Zertifikat zu einer akzeptierenden Simulation. \textbf{Laufzeit und Zertifikatlänge:} Die Simulation umfasst $\le T(|x|)$ Schritte mit konstantem Aufwand pro Schritt; das Zertifikat hat Länge $O(T(|x|))$. Beides polynomiell -- $V$ ist ein polynomieller Verifizierer für $L$. \hfill$\square$ \bspkopf{A30 -- NDTM $\subseteq$ Verifizierer: VC am Dreieck, $k=2$} Die NDTM $M(G,k)$ rät $C\subseteq V$ Knoten für Knoten (ein Bit pro Knoten). Am Dreieck $G$ mit $V=\{1,2,3\}$, $E=\{\{1,2\},\{1,3\},\{2,3\}\}$ und $k=2$: \begin{center} \begin{tikzpicture} \node[kndick] (n1) at (90:1) {$1$}; \node[kndick] (n2) at (210:1) {$2$}; \node[knoten] (n3) at (330:1) {$3$}; \draw[very thick] (n1)--(n2); \draw[thick] (n1)--(n3) (n2)--(n3); \node[font=\footnotesize,align=center] at (0,-1.8) {Zertifikat $c=110 \Leftrightarrow C=\{1,2\}$\\ (Knoten $1,2$ hervorgehoben)}; \end{tikzpicture} \end{center} Das Ratebit-Wort \emph{ist} das Zertifikat: die $i$-te Verzweigung der NDTM wird durch das $i$-te Bit von $c$ ersetzt und deterministisch nachsimuliert. \textbf{Gültiges $c=110$} ($C=\{1,2\}$). Der Verifizierer prüft jede Kante gedeckt und $|C|\le k$: \begin{center} $\{1,2\}$: $1\in C$~\ding{52}\quad $\{1,3\}$: $1\in C$~\ding{52}\quad $\{2,3\}$: $2\in C$~\ding{52}\quad $|C|=2\le 2$~\ding{52} \end{center} $\Rightarrow$ \textbf{akzeptiert}: $\{1,2\}$ ist eine Knotenüberdeckung. \textbf{Ungültiges $c=100$} ($C=\{1\}$): Kante $\{2,3\}$ ist ungedeckt ($2\notin C,\ 3\notin C$) $\Rightarrow$ \textbf{verworfen}. Allgemein: Jeder akzeptierende Rechenweg von $M$ liefert über seine Verzweigungsfolge ein Zertifikat, das der Verifizierer akzeptiert -- und umgekehrt. Zertifikatlänge $O(T(|x|))$, polynomiell. \newpage % ================================================================== \katkopf{Verifizierer-Definition $\subseteq$ NDTM-Definition}{Vorlesung (Skript)} Sei $L$ eine Sprache mit einem polynomiellen Verifizierer $M$: Für jedes $x \in L$ existiert ein Zertifikat $c$ mit $M(x,c) = 1$ und Laufzeit $O(|x|^d)$; für $x \notin L$ akzeptiert $M$ kein Zertifikat. Zeigen Sie: Es gibt eine NDTM $N$, die $L$ in Polynomialzeit entscheidet. \lsg \textbf{Konstruktion:} Sei $p$ ein Polynom, das die Länge der relevanten Zertifikate beschränkt (mehr als seine Laufzeit $O(|x|^d)$ kann $M$ ohnehin nicht lesen). Die NDTM $N$ arbeitet bei Eingabe $x$ in zwei Phasen: \begin{itemize} \item[(1)] \emph{Raten:} Schreibe mit nichtdeterministischen Entscheidungen einen beliebigen String $u$ mit $|u| \le p(|x|)$ auf ein Arbeitsband. \item[(2)] \emph{Verifizieren:} Simuliere $M$ auf $(x, u)$ deterministisch und übernimm dessen Antwort. \end{itemize} \textbf{Korrektheit:} Ist $x \in L$, existiert ein Zertifikat $c$ mit $M(x,c) = 1$; der Rechenweg, der $u = c$ rät, akzeptiert -- also akzeptiert $N$. Ist $x \notin L$, verwirft $M$ jedes $u$; alle Rechenwege verwerfen -- $N$ verwirft. \textbf{Laufzeit:} Phase (1) braucht $p(|x|)$ Rateschritte, Phase (2) läuft in $O(|x|^d)$. Insgesamt polynomiell -- $N$ entscheidet $L$ in nichtdeterministischer Polynomialzeit. \hfill$\square$ \bspkopf{Verifizierer $\subseteq$ NDTM: VC am Dreieck} \textbf{Instanz.} \problem{VertexCover} am Dreieck $G$ mit $V=\{1,2,3\}$, allen drei Kanten und $k=2$. Gegeben ist der Verifizierer: prüfe $|C| \le k$ und jede Kante gedeckt. \textbf{Die konstruierte NDTM} rät zuerst ein Wort $u$ (hier: drei Bits, eines pro Knoten) und simuliert dann den Verifizierer auf $(G, k; u)$. \textbf{Ja-Lauf.} Der Rechenweg mit Ratewort $u = 110$ (also $C = \{1,2\}$) simuliert den Verifizierer: $\{1,2\}$ gedeckt durch 1, $\{1,3\}$ durch 1, $\{2,3\}$ durch 2, und $|C| = 2 \le 2$ -- dieser Weg \textbf{akzeptiert}, also akzeptiert die NDTM. \textbf{Andere Rechenwege} desselben Laufs dürfen scheitern: $u = 100$ ($C = \{1\}$) lässt $\{2,3\}$ ungedeckt und verwirft. Das schadet nicht -- die NDTM akzeptiert, sobald \emph{ein} Weg akzeptiert. \textbf{Nein-Instanz} ($k = 1$): Jede Ein-Knoten-Menge lässt eine Kante ungedeckt, der Verifizierer verwirft jedes der $2^3$ Rateworte -- alle Rechenwege verwerfen, die NDTM verwirft. \newpage % ================================================================== \katkopf{Transitivität von Polynomialzeitreduktionen}{Präsenz 9.2} Zeigen Sie: Für alle Entscheidungsprobleme $L_1, L_2, L_3$ gilt $L_1 \redp L_2 \wedge L_2 \redp L_3 \implies L_1 \redp L_3$. \lsg Sei $R_1$ eine Reduktion von $L_1$ auf $L_2$ mit Laufzeit $O(n^a)$ und $R_2$ eine Reduktion von $L_2$ auf $L_3$ mit Laufzeit $O(n^b)$. \textbf{Korrektheit:} Mit $x'' = R_2(R_1(x))$ gilt \[ x \in L_1 \iff x' \in L_2 \quad\text{und}\quad x' \in L_2 \iff x'' \in L_3, \] also $x \in L_1 \iff x'' \in L_3$. Damit ist $R_2 \circ R_1$ eine Reduktion von $L_1$ auf $L_3$. \textbf{Laufzeit:} Sei $x$ eine $L_1$-Instanz der Größe $n$. \begin{itemize} \item $R_1(x)$ braucht $O(n^a)$ Zeit; die Ausgabe $x'$ hat damit Größe $O(n^a)$ (mehr kann in der Zeit nicht geschrieben werden). \item $R_2(x')$ braucht dann $O((n^a)^b) = O(n^{ab})$ Zeit. \end{itemize} Die Verkettung ist also polynomiell. \hfill$\square$ \begin{center} \begin{tikzpicture}[ pbox/.style={draw,rounded corners,minimum height=6mm,inner sep=5pt,font=\small}, plab/.style={font=\scriptsize,align=center}] \node[pbox] (x0) at (0,0) {$x$}; \node[pbox] (x1) at (4.6,0) {$x'=R_1(x)$}; \node[pbox] (x2) at (9.6,0) {$x''=R_2(x')$}; \draw[->] (x0) -- node[above,plab] {$R_1$, Zeit $O(n^a)$} (x1); \draw[->] (x1) -- node[above,plab] {$R_2$, Zeit $O((n^a)^b)$} (x2); \node[plab,anchor=north] at (0,-0.5) {$L_1$-Instanz\\ Gr\"o\ss e $n$}; \node[plab,anchor=north] at (4.6,-0.5) {$L_2$-Instanz\\ Gr\"o\ss e $O(n^a)$}; \node[plab,anchor=north] at (9.6,-0.5) {$L_3$-Instanz\\ Gr\"o\ss e $O(n^{ab})$}; \node[plab] at (4.8,-1.8) {gesamt polynomiell: $O(n^{ab})$; \quad $x\in L_1 \iff x'\in L_2 \iff x''\in L_3$}; \end{tikzpicture} \end{center} \bspkopf{A25 -- Transitivität konkret durchgerechnet} \textbf{Laufzeit mit Zahlen.} Sei $R_1$ eine Reduktion mit Laufzeit $O(n^a)$, $a=2$, und $R_2$ mit $O(n^b)$, $b=3$. Eingabe $x$ der Größe $n=4$: \[ R_1(x)\le 4^2 = 16 \text{ Schritte} \;\Rightarrow\; |x'|\le 16, \qquad R_2(x')\le 16^3 = 4096 \text{ Schritte}. \] Gesamt $\le 16+4096 = 4112$ Schritte $=O(n^{ab})=O(n^{6})$ -- polynomiell. \textbf{Konkrete Reduktionskette} $\problem{Clique}\redp\problem{VC}\redp\problem{FVS}$ an der Ja-Instanz $x=(K_3,\,3)$ (Standardreduktionen $f_1(G,k)=(\overline{G},\,|V|-k)$, dann $\problem{VC}\redp\problem{FVS}$): \begin{center} \begin{tikzpicture}[lab/.style={font=\footnotesize,align=center}] \begin{scope} \node[kndick] (a1) at (90:0.9) {$1$}; \node[kndick] (a2) at (210:0.9) {$2$}; \node[kndick] (a3) at (330:0.9) {$3$}; \draw[very thick] (a1)--(a2)--(a3)--(a1); \node[lab] at (0,-1.6) {\problem{Clique}: $(K_3,\,k{=}3)$\\ \emph{ja}, $3$-Clique $\{1,2,3\}$}; \end{scope} \draw[->,thick] (1.4,0)-- node[above,lab]{$f_1$: Komplement,\\ $k'{=}3{-}3{=}0$} (3.0,0); \begin{scope}[xshift=4.4cm] \node[knoten] (b1) at (90:0.9) {$1$}; \node[knoten] (b2) at (210:0.9) {$2$}; \node[knoten] (b3) at (330:0.9) {$3$}; \node[lab] at (0,-1.6) {\problem{VC}: $(\overline{K_3},\,0)$\\ \emph{ja}, keine Kanten, $C=\emptyset$}; \end{scope} \draw[->,thick] (5.8,0)-- node[above,lab]{$f_2$} (7.0,0); \begin{scope}[xshift=8.4cm] \node[knoten] (c1) at (90:0.9) {$1$}; \node[knoten] (c2) at (210:0.9) {$2$}; \node[knoten] (c3) at (330:0.9) {$3$}; \node[lab] at (0,-1.6) {\problem{FVS}: Größe $0$\\ \emph{ja}, keine Kreise, $S=\emptyset$}; \end{scope} \end{tikzpicture} \end{center} Alle drei sind Ja-Instanzen: $x\in\problem{Clique}\iff x'\in\problem{VC}\iff x''\in\problem{FVS}$. Damit ist $f_2\circ f_1$ eine polynomielle Reduktion $\problem{Clique}\redp\problem{FVS}$. \newpage % ================================================================== \katkopf{Vererbung der NP-Vollständigkeit}{Vorlesung (Skript)} Zeigen Sie: Ist $L_0$ NP-vollständig, gilt $L_0 \redp L_1$ und ist $L_1 \in \NP$, so ist auch $L_1$ NP-vollständig. \emph{Hinweis:} Die Relation $\redp$ ist transitiv. \lsg Zu zeigen sind die beiden Teile der NP-Vollständigkeit: $L_1 \in \NP$ (gilt nach Voraussetzung) und $L \redp L_1$ für \emph{jedes} $L \in \NP$. \textbf{Beweis der NP-Schwere:} Sei $L \in \NP$ beliebig. \begin{itemize} \item Da $L_0$ NP-vollständig ist, reduziert jedes NP-Problem auf $L_0$ -- insbesondere $L \redp L_0$. \item Nach Voraussetzung gilt $L_0 \redp L_1$. \item Da $\redp$ transitiv ist, folgt $L \redp L_1$. \end{itemize} Da $L$ beliebig gewählt war, reduziert jedes NP-Problem auf $L_1$ -- $L_1$ ist NP-schwer. Zusammen mit $L_1 \in \NP$ ist $L_1$ NP-vollständig. \hfill$\square$ \bspkopf{Vererbung: von VertexCover zu FeedbackVertexSet} \textbf{Einsetzen:} $L_0 = \problem{VertexCover}$ (NP-vollständig), $L_1 = \problem{FeedbackVertexSet}$ mit der Reduktion $\problem{VertexCover} \redp \problem{FeedbackVertexSet}$ (jede Kante wird zu zwei antiparallelen Bögen) und $\problem{FeedbackVertexSet} \in \NP$ (Verifizierer: Topo-Sortierung auf $G \setminus X$). \textbf{Die Reduktion an einer konkreten Instanz.} VC-Instanz: Pfad $1$--$2$--$3$, $k = 1$ (Ja-Instanz, Cover $\{2\}$). \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten] (a1) at (0,0) {1}; \node[kndick] (a2) at (1.5,0) {2}; \node[knoten] (a3) at (3,0) {3}; \draw (a1)--(a2) (a2)--(a3); \node[font=\footnotesize] at (1.5,-1.0) {VC-Instanz, $k=1$}; \end{scope} \draw[->,thick] (3.9,0) -- (5.3,0); \begin{scope}[xshift=6.2cm] \node[knoten] (b1) at (0,0) {1}; \node[kndick] (b2) at (1.5,0) {2}; \node[knoten] (b3) at (3,0) {3}; \draw[->] (b1) to[bend left=35] (b2); \draw[->] (b2) to[bend left=35] (b1); \draw[->] (b2) to[bend left=35] (b3); \draw[->] (b3) to[bend left=35] (b2); \node[font=\footnotesize] at (1.5,-1.0) {FVS-Instanz, $k=1$}; \end{scope} \end{tikzpicture} \end{center} Die Ja-Instanz bleibt Ja: $X = \{2\}$ bricht beide $2$-Kreise. \textbf{Der Korollar-Schluss:} Sei $L \in \NP$ beliebig. Da \problem{VertexCover} NP-vollständig ist, gilt $L \redp \problem{VertexCover}$; mit der Bögen-Reduktion und der Transitivität von $\redp$ folgt $L \redp \problem{FeedbackVertexSet}$. Zusammen mit $\problem{FeedbackVertexSet} \in \NP$ ist \problem{FeedbackVertexSet} NP-vollständig -- die NP-Vollständigkeit hat sich über \emph{eine} neue Reduktion vererbt. Genau so wächst die gesamte Reduktionskette der Vorlesung. \newpage % ================================================================== \katkopf{$L_0$ NP-vollständig und $L_0 \in P$ $\Rightarrow$ $P = NP$}{Klausur SS25-N, A2, 10 P.} Beweisen Sie: Sei $L_0$ eine NP-vollständige Sprache. Falls $L_0 \in P$, dann gilt $P = NP$. \lsg Es gilt stets $P \subseteq NP$ (ein Polynomialzeit-Löser ist ein Verifizierer, der das Zertifikat ignoriert). Zu zeigen bleibt $NP \subseteq P$. Sei $A$ ein Algorithmus, der $L_0$ in Zeit $O(n^c)$ entscheidet, und sei $L \in NP$ beliebig. Da $L_0$ NP-vollständig ist, gilt $L \redp L_0$; sei $f$ die zugehörige Reduktion mit Laufzeit $O(n^a)$. Algorithmus für $L$: Berechne zu einer Eingabe $x$ (Größe $n$) zuerst $f(x)$ -- Zeit $O(n^a)$, Ausgabegröße $O(n^a)$. Wende dann $A$ auf $f(x)$ an -- Zeit $O((n^a)^c) = O(n^{ac})$. Gesamt polynomiell. \textbf{Korrektheit:} $x \in L \iff f(x) \in L_0$ (Reduktionseigenschaft), und $A$ entscheidet $f(x) \in L_0$ korrekt. Also $L \in P$ für jedes $L \in NP$, d.\,h.\ $NP \subseteq P$. Zusammen mit $P \subseteq NP$ folgt $P = NP$. \hfill$\square$ \bspkopf{A31 -- $L_0$ NP-vollständig $\wedge\ L_0\in P \Rightarrow P=NP$ konkret} Annahme: $L_0=\problem{3-SAT}$ ist NP-vollständig \emph{und} es gäbe einen Algorithmus $A$, der $\problem{3-SAT}$ in $O(n^3)$ entscheidet. \textbf{Ein beliebiges $L\in\NP$ wird polynomiell.} Nimm $L=\problem{Clique}$. Da $L_0$ NP-vollständig ist, existiert eine Reduktion $f:\problem{Clique}\redp\problem{3-SAT}$, etwa mit Laufzeit $O(n^2)$. Für die Eingabe $x=(K_3,3)$ der Größe $n=10$: \begin{align*} \text{(1) } & f(x)\text{ berechnen:} && \le 10^2=100 \text{ Schritte},\quad |f(x)|=O(n^2)=100.\\ \text{(2) } & A\text{ auf } f(x): && \le (10^2)^3=10^{6} \text{ Schritte}. \end{align*} Gesamt $\le 100+10^6$ Schritte $=O(n^{6})$ -- polynomiell, und korrekt, denn $x\in\problem{Clique}\iff f(x)\in\problem{3-SAT}$ (Reduktionseigenschaft) und $A$ entscheidet $f(x)$ richtig. \textbf{Schluss.} $\problem{Clique}$ war beliebig; dasselbe Argument gilt für \emph{jedes} $L\in\NP$ (nur $f$ wechselt). Also $\NP\subseteq\Pclass$. Mit $\Pclass\subseteq\NP$ folgt $\Pclass=\NP$. \newpage % ================================================================== \katkopf{SAT $\redp$ 3-SAT}{Klausur SS24-N, A2, 10 P.} Beweisen Sie: \problem{3-SAT} ist NP-vollständig. Zeigen Sie dafür $\problem{SAT} \redp \problem{3-SAT}$; $\problem{3-SAT} \in \NP$ dürfen Sie annehmen. \lsg \textbf{Konstruktion:} Ersetze jede Klausel $(y_1 \vee \dots \vee y_\ell)$ mit $\ell > 3$ durch die Kette \[ (y_1 \vee y_2 \vee x_1) \wedge (\neg x_1 \vee y_3 \vee x_2) \wedge \dots \wedge (\neg x_{\ell-3} \vee y_{\ell-1} \vee y_\ell) \] mit neuen Hilfsvariablen $x_1, \dots, x_{\ell-3}$ (pro Klausel eigene). Kurze Klauseln bleiben unverändert. \begin{center} \begin{tikzpicture} \node[draw,rounded corners,inner sep=5pt] (orig) at (0,2.0) {$(y_1 \vee y_2 \vee y_3 \vee y_4 \vee y_5)$}; \draw[->,thick] (0,1.5) -- (0,0.7) node[midway,right,font=\footnotesize] {$\ell=5$: neue Variablen $x_1,x_2$}; \node[draw,rounded corners,inner sep=5pt] (b1) at (-3.7,0) {$(y_1 \vee y_2 \vee x_1)$}; \node at (-1.9,0) {$\wedge$}; \node[draw,rounded corners,inner sep=5pt] (b2) at (0,0) {$(\neg x_1 \vee y_3 \vee x_2)$}; \node at (1.95,0) {$\wedge$}; \node[draw,rounded corners,inner sep=5pt] (b3) at (3.85,0) {$(\neg x_2 \vee y_4 \vee y_5)$}; \draw[black!60] (b1.south) to[bend right=40] node[below,font=\footnotesize] {$x_1$ geteilt} (b2.south); \draw[black!60] (b2.south) to[bend right=40] node[below,font=\footnotesize] {$x_2$ geteilt} (b3.south); \node[font=\footnotesize] at (0,-1.9) {Nachbarklauseln teilen die Hilfsvariable: links positiv ($x_i$), rechts negiert ($\neg x_i$)}; \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei die Originalklausel erfüllt, etwa $y_i$ wahr. Setze $x_1 = \dots = x_{i-2} = \true$ und $x_{i-1} = \dots = x_{\ell-3} = \false$. Dann ist jede Kettenklausel erfüllt: die ersten durch ihr $x$-Literal, die Klausel mit $y_i$ durch $y_i$, die restlichen durch ihr $\neg x$-Literal. \textbf{Beweis zurück:} Sei die Kette erfüllt und angenommen, alle $y_i$ wären falsch. Die erste Klausel erzwingt $x_1 = \true$, damit die zweite $x_2 = \true$, induktiv $x_{\ell-3} = \true$ -- dann ist die letzte Klausel $(\neg x_{\ell-3} \vee y_{\ell-1} \vee y_\ell)$ falsch, Widerspruch. Also ist ein $y_i$ wahr und die Originalklausel erfüllt. \textbf{Laufzeit:} Jede Klausel wird nur linear vergrößert ($|\bar\alpha| \le c\,|\alpha|$), die Transformation ist polynomiell. Da \problem{SAT} NP-vollständig ist, $\problem{SAT} \redp \problem{3-SAT}$ gilt und $\problem{3-SAT} \in \NP$, ist \problem{3-SAT} NP-vollständig. \hfill$\square$ \bspkopf{A26 -- SAT $\redp$ 3-SAT: eine 5er-Klausel zerlegt} \textbf{Reduktion.} Die Klausel $C=(y_1\vee y_2\vee y_3\vee y_4\vee y_5)$ wird ($\ell=5$, neue Variablen $x_1,x_2$) ersetzt durch \[ \underbrace{(y_1\vee y_2\vee x_1)}_{K_1}\wedge \underbrace{(\neg x_1\vee y_3\vee x_2)}_{K_2}\wedge \underbrace{(\neg x_2\vee y_4\vee y_5)}_{K_3}. \] \textbf{Beweis hin ($C$ erfüllt $\Rightarrow$ Kette erfüllt).} Es sei $y_3=\true$ (Rest $\false$). Regel ($y_i$ mit $i=3$): $x_1=\true$, $x_2=\false$. \begin{align*} K_1 &=(y_1\vee y_2\vee x_1)=(F\vee F\vee \mathbf{T})=\true && \text{(durch } x_1)\\ K_2 &=(\neg x_1\vee y_3\vee x_2)=(F\vee \mathbf{T}\vee F)=\true && \text{(durch } y_3)\\ K_3 &=(\neg x_2\vee y_4\vee y_5)=(\mathbf{T}\vee F\vee F)=\true && \text{(durch } \neg x_2) \end{align*} \textbf{Beweis zurück ($C$ unerfüllt $\Rightarrow$ Kette unerfüllt).} Setze alle $y_i=\false$ und nimm an, die Kette sei erfüllbar: \begin{align*} K_1 &=(F\vee F\vee x_1) && \Rightarrow\ x_1=\true\\ K_2 &=(\neg x_1\vee F\vee x_2)=(F\vee F\vee x_2) && \Rightarrow\ x_2=\true\\ K_3 &=(\neg x_2\vee F\vee F)=(F\vee F\vee F)=\false && (\bot) \end{align*} Widerspruch: bei $y_1=\dots=y_5=\false$ ist die Kette \emph{nicht} erfüllbar. Also erzwingt jede erfüllende Belegung der Kette ein wahres $y_i$ -- genau dann ist $C$ erfüllt. Kette und $C$ sind erfüllbarkeitsäquivalent. \newpage % ================================================================== \katkopf{SAT $\redp$ $k$-Clique}{Klausur SS24-H, A2, 10 P.} Beweisen Sie: $\problem{SAT} \le k\text{-}\problem{Clique}$. \emph{Hinweis: NICHT 3-SAT, sondern allgemeines SAT!} \lsg \textbf{Idee:} Ein Knoten pro Literalvorkommen; Kanten nur zwischen verträglichen Literalen verschiedener Klauseln -- eine $m$-Clique wählt dann pro Klausel ein wahres Literal. \textbf{Konstruktion:} Sei $F = F_1 \wedge \dots \wedge F_m$ eine KNF mit Klauseln $F_i = (y_{i1} \vee \dots \vee y_{i\ell_i})$. Baue $G = (V,E)$: \begin{align*} V &= \{\, [i,j] \mid 1 \le i \le m,\ 1 \le j \le \ell_i \,\} && \text{(ein Knoten pro Literalvorkommen)}\\ E &= \{\, \{[i,j],[i',j']\} \mid i \ne i',\ y_{ij} \ne \neg y_{i'j'} \,\} && \text{(verschiedene Klausel, kein Widerspruch)} \end{align*} Setze $k = m$. \begin{center} \begin{tikzpicture} \node[align=left,font=\small] at (-4.9,0) {$F_1 = (x \vee y)$\\ $F_2 = (\neg x \vee z)$\\ $F_3 = (\neg y \vee \neg z)$\\[3pt] $k = m = 3$}; \draw[->,thick] (-3.3,0) -- (-2.1,0); \begin{scope}[xshift=1.6cm] \node[kndick,font=\small] (x) at (-0.9,1.6) {$x$}; \node[knoten,font=\small] (y) at (0.9,1.6) {$y$}; \node[knoten,font=\small] (nx) at (-2.4,-0.2) {$\neg x$}; \node[kndick,font=\small] (z) at (-2.4,-1.6) {$z$}; \node[kndick,font=\small] (ny) at (2.4,-1.6) {$\neg y$}; \node[knoten,font=\small] (nz) at (2.4,-0.2) {$\neg z$}; \draw[black!50] (x)--(nz) (y)--(nx) (y)--(z) (y)--(nz) (nx)--(ny) (nx)--(nz); \draw[very thick] (x)--(z) (x)--(ny) (z)--(ny); \draw[dashed,black!60,rounded corners] (-1.55,1.05) rectangle (1.55,2.15); \draw[dashed,black!60,rounded corners] (-3.05,-2.25) rectangle (-1.75,0.45); \draw[dashed,black!60,rounded corners] (1.75,-2.25) rectangle (3.05,0.45); \node[font=\footnotesize,black!60] at (0,2.4) {$F_1$}; \node[font=\footnotesize,black!60] at (-2.4,0.75) {$F_2$}; \node[font=\footnotesize,black!60] at (2.4,0.75) {$F_3$}; \node[font=\footnotesize, text width=9.4cm, align=center] at (0,-3.15) {ein Knoten pro Literalvorkommen; Kanten nur zwischen verschiedenen Klauseln ohne Widerspruch ($x$--$\neg x$ fehlt); fette $m$-Clique $\{x,z,\neg y\}$ $\Leftrightarrow$ Belegung $x=z=\true$, $y=\false$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $\psi$ eine erfüllende Belegung. Für jedes $i$ existiert ein $r_i$ mit $\psi(y_{ir_i}) = \true$. Setze $C = \{[i, r_i] \mid i \in [m]\}$. Wäre $\{[i,r_i],[j,r_j]\} \notin E$ für $i \ne j$, müsste $y_{ir_i} = \neg y_{jr_j}$ gelten -- aber beide sind unter $\psi$ wahr, Widerspruch. Also ist $C$ eine $m$-Clique. \textbf{Beweis zurück:} Sei $C$ eine $m$-Clique. Da Knoten derselben Klausel nie verbunden sind, hat $C$ die Form $\{[1,r_1], \dots, [m,r_m]\}$. Setze $\psi(y_{ir_i}) = \true$ für alle $i$ -- widerspruchsfrei, da $y_{ir_i} \ne \neg y_{jr_j}$ (sonst keine Kante). Dann ist jede Klausel $F_i$ durch $y_{ir_i}$ erfüllt. \textbf{Laufzeit:} Graph aufbauen -- je Literalvorkommen ein Knoten, je Paar aus verschiedenen Klauseln eine Verträglichkeitskante prüfen: $O(L^2)$ für $L$ Literalvorkommen, polynomiell. \hfill$\square$ \bspkopf{A27 -- SAT $\redp$ $k$-Clique: beide Richtungen an Zahlen} Wir nutzen $F_1=(x\vee y),\ F_2=(\neg x\vee z),\ F_3=(\neg y\vee\neg z)$, $k=m=3$. \textbf{SAT $\to$ Clique.} Die Belegung $x=z=\true,\ y=\false$ wählt pro Klausel ein wahres Literal: $[F_1{:}\,x]$, $[F_2{:}\,z]$, $[F_3{:}\,\neg y]$. Je zwei stammen aus verschiedenen Klauseln und sind widerspruchsfrei ($x,z,\neg y$ paarweise verträglich) -- also paarweise verbunden: eine $3$-Clique. \textbf{Clique $\to$ SAT.} Nein-Instanz $F=(x)\wedge(\neg x)$, $k=m=2$: der Graph hat nur $[F_1{:}\,x]$ und $[F_2{:}\,\neg x]$; da $x$ und $\neg x$ sich widersprechen, gibt es \emph{keine} Kante -- keine $2$-Clique. Also ist $F$ unerfüllbar. \begin{center} \begin{tikzpicture} \begin{scope} \node[kndick] (x) at (90:1) {$x$}; \node[kndick] (z) at (210:1) {$z$}; \node[kndick] (ny) at (330:1) {$\neg y$}; \draw[very thick] (x)--(z)--(ny)--(x); \node[font=\scriptsize,black!60] at (90:1.5) {$F_1$}; \node[font=\scriptsize,black!60] at (210:1.55) {$F_2$}; \node[font=\scriptsize,black!60] at (330:1.55) {$F_3$}; \node[font=\footnotesize,align=center] at (0,-1.9) {$3$-Clique $\{x,z,\neg y\}$\\ (Ja-Instanz)}; \end{scope} \begin{scope}[xshift=6.2cm] \node[knoten] (a) at (-1.2,0.4) {$x$}; \node[knoten] (b) at (1.2,0.4) {$\neg x$}; \draw[dashed,black!45] (a)--(b); \node[fill=white,inner sep=1.5pt,font=\scriptsize] at (0,0.4) {\ding{55}}; \node[font=\scriptsize,black!60] at (-1.2,1.15) {$F_1$}; \node[font=\scriptsize,black!60] at (1.2,1.15) {$F_2$}; \node[font=\footnotesize,align=center] at (0,-0.5) {keine Kante}; \node[font=\footnotesize,align=center] at (0,-1.9) {$F=(x)\wedge(\neg x)$: keine $2$-Clique\\ (Nein-Instanz)}; \end{scope} \end{tikzpicture} \end{center} \newpage % ================================================================== \katkopf{$k$-Clique ist NP-vollständig}{Klausur SS23-H, A4, 10 P.} Beweisen Sie: Das Problem $k$-\problem{Clique} ist NP-vollständig. \lsg \textbf{$\in$ NP:} Zertifikat ist eine Knotenmenge $C \subseteq V$. Der Verifizierer prüft zwei Bedingungen: \begin{itemize} \item Für alle zweielementigen $\{u,v\} \subseteq C$ gilt $\{u,v\} \in E$. \item $|C| \ge k$. \end{itemize} Existiert eine $k$-Clique, wird sie akzeptiert, sonst jedes Zertifikat abgelehnt. Laufzeit: Paartests $O(|V|^2)$, Größentest $O(|V|)$ -- polynomiell. \textbf{NP-schwer} durch $\problem{SAT} \redp k\text{-}\problem{Clique}$: \textbf{Idee:} Ein Knoten pro Literalvorkommen; Kanten nur zwischen verträglichen Literalen verschiedener Klauseln -- eine $m$-Clique wählt dann pro Klausel ein wahres Literal. \textbf{Konstruktion:} Für $F = F_1 \wedge \dots \wedge F_m$ setze $V = \{[i,j] \mid \text{$j$-tes Literal in Klausel } i\}$ und $E = \{\{[i,j],[i',j']\} \mid i \ne i',\ y_{ij} \ne \neg y_{i'j'}\}$, $k = m$. \begin{center} \begin{tikzpicture} \node[align=left,font=\small] at (-4.9,0) {$F_1 = (x \vee y)$\\ $F_2 = (\neg x \vee z)$\\ $F_3 = (\neg y \vee \neg z)$\\[3pt] $k = m = 3$}; \draw[->,thick] (-3.3,0) -- (-2.1,0); \begin{scope}[xshift=1.6cm] \node[kndick,font=\small] (x) at (-0.9,1.6) {$x$}; \node[knoten,font=\small] (y) at (0.9,1.6) {$y$}; \node[knoten,font=\small] (nx) at (-2.4,-0.2) {$\neg x$}; \node[kndick,font=\small] (z) at (-2.4,-1.6) {$z$}; \node[kndick,font=\small] (ny) at (2.4,-1.6) {$\neg y$}; \node[knoten,font=\small] (nz) at (2.4,-0.2) {$\neg z$}; \draw[black!50] (x)--(nz) (y)--(nx) (y)--(z) (y)--(nz) (nx)--(ny) (nx)--(nz); \draw[very thick] (x)--(z) (x)--(ny) (z)--(ny); \draw[dashed,black!60,rounded corners] (-1.55,1.05) rectangle (1.55,2.15); \draw[dashed,black!60,rounded corners] (-3.05,-2.25) rectangle (-1.75,0.45); \draw[dashed,black!60,rounded corners] (1.75,-2.25) rectangle (3.05,0.45); \node[font=\footnotesize,black!60] at (0,2.4) {$F_1$}; \node[font=\footnotesize,black!60] at (-2.4,0.75) {$F_2$}; \node[font=\footnotesize,black!60] at (2.4,0.75) {$F_3$}; \node[font=\footnotesize, text width=9.4cm, align=center] at (0,-3.15) {ein Knoten pro Literalvorkommen $[i,j]$; Kanten nur zwischen verschiedenen Klauseln ohne Widerspruch; fette $m$-Clique $\{x,z,\neg y\}$ $\Leftrightarrow$ Belegung $x=z=\true$, $y=\false$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Erfüllende Belegung $\psi$ liefert pro Klausel ein wahres Literal $y_{ir_i}$; die Knoten $[i,r_i]$ sind paarweise verbunden (verschiedene Klauseln, kein Widerspruch unter $\psi$) -- eine $m$-Clique. \textbf{Beweis zurück:} Eine $m$-Clique enthält aus jeder Klausel genau einen Knoten; die zugehörigen Literale sind widerspruchsfrei und können alle wahr gesetzt werden -- jede Klausel ist erfüllt. \textbf{Laufzeit:} Graph aufbauen -- je Literalvorkommen ein Knoten, je Paar aus verschiedenen Klauseln eine Verträglichkeitskante prüfen: $O(L^2)$ für $L$ Literalvorkommen, polynomiell. Da \problem{SAT} NP-vollständig ist, $\problem{SAT} \redp k\text{-}\problem{Clique}$ gilt und $k\text{-}\problem{Clique} \in \NP$, ist $k$-\problem{Clique} NP-vollständig. \hfill$\square$ \bspkopf{A28 -- $k$-Clique $\in$ NP: ein Zertifikat prüfen} Instanz aus der Reduktion: $F_1=(x\vee y),\ F_2=(\neg x\vee z), \ F_3=(\neg y\vee\neg z)$; ein Knoten pro Literalvorkommen, Kanten zwischen widerspruchsfreien Literalen verschiedener Klauseln, $k=m=3$: \begin{center} \begin{tikzpicture}[scale=0.85] \node[kndick,font=\small] (x) at (-0.9,1.6) {$x$}; \node[knoten,font=\small] (y) at (0.9,1.6) {$y$}; \node[knoten,font=\small] (nx) at (-2.4,-0.2) {$\neg x$}; \node[kndick,font=\small] (z) at (-2.4,-1.6) {$z$}; \node[kndick,font=\small] (ny) at (2.4,-1.6) {$\neg y$}; \node[knoten,font=\small] (nz) at (2.4,-0.2) {$\neg z$}; \draw[black!50] (x)--(nz) (y)--(nx) (y)--(z) (y)--(nz) (nx)--(ny) (nx)--(nz); \draw[very thick] (x)--(z) (x)--(ny) (z)--(ny); \node[font=\scriptsize,black!60] at (0,2.3) {$F_1$: $x$, $y$}; \node[font=\scriptsize,black!60] at (-3.3,-0.9) {$F_2$: $\neg x$, $z$}; \node[font=\scriptsize,black!60] at (3.3,-0.9) {$F_3$: $\neg y$, $\neg z$}; \end{tikzpicture} \end{center} \textbf{Gültiges Zertifikat} $C=\{[F_1{:}\,x],\,[F_2{:}\,z],\,[F_3{:}\,\neg y]\}$. Der Verifizierer testet alle $\binom{3}{2}=3$ Paare auf Adjazenz und $|C|\ge k$: \begin{center}\small \begin{tabular}{lcc} \toprule Paar $\{u,v\}$ & versch.\ Klauseln? & kein Widerspruch? $\Rightarrow$ Kante\\ \midrule $\{x,\,z\}$ & $F_1\ne F_2$ \ding{52} & $x,z$ verträglich \ding{52}\\ $\{x,\,\neg y\}$ & $F_1\ne F_3$ \ding{52} & $x,\neg y$ verträglich \ding{52}\\ $\{z,\,\neg y\}$ & $F_2\ne F_3$ \ding{52} & $z,\neg y$ verträglich \ding{52}\\ \bottomrule \end{tabular} \end{center} Alle drei Paare adjazent \emph{und} $|C|=3\ge k=3$ $\Rightarrow$ \textbf{akzeptiert}. \textbf{Ungültiges Zertifikat} $C'=\{[F_1{:}\,x],\,[F_2{:}\,\neg x]\}$: das Paar $\{x,\neg x\}$ ist ein Widerspruch ($\ell$ und $\neg\ell$), also \emph{keine} Kante -- $C'$ ist keine Clique $\Rightarrow$ \textbf{verworfen}. Laufzeit: $\binom{|C|}{2}$ Paartests plus Größentest, $O(|V|^2)$ -- polynomiell. Da für jede Ja-Instanz ein solches Zertifikat existiert, gilt $k\text{-}\problem{Clique}\in\NP$. \newpage % ================================================================== \katkopf{SubsetSum $\redp$ Knapsack}{Vorlesung (Skript)} \textbf{Problem \problem{Knapsack}:} Gegeben $n$ Gegenstände mit Gewichten $w_i$ und Profiten $p_i$, Kapazität $B$, Zielprofit $P$. Gibt es $S \subseteq [n]$ mit $\sum_{i\in S} w_i \le B$ und $\sum_{i\in S} p_i \ge P$? \textbf{Problem \problem{SubsetSum}:} Gegeben Zahlen $c_1, \dots, c_n$ und $K$. Gibt es $S$ mit $\sum_{i\in S} c_i = K$? Zeigen Sie, dass \problem{Knapsack} NP-vollständig ist. \emph{Hinweis:} Reduzieren Sie \problem{SubsetSum} auf \problem{Knapsack}. \lsg \textbf{$\in$ NP:} Zertifikat ist die Auswahl $S$; prüfe $\sum_{i\in S} w_i \le B$ und $\sum_{i\in S} p_i \ge P$. Laufzeit $O(n)$, polynomiell. \textbf{Konstruktion:} Sei $(c_1, \dots, c_n, K)$ eine \problem{SubsetSum}-Instanz. Setze $w_i := c_i$, $p_i := c_i$ für alle $i$ sowie $B := K$ und $P := K$. \textbf{Beweis hin:} Sei $S$ mit $\sum_{i\in S} c_i = K$. Dann ist das Gewicht $K \le B$ und der Profit $K \ge P$ -- eine Knapsack-Lösung. \textbf{Beweis zurück:} Sei $S$ eine Knapsack-Lösung. Gewicht und Profit von $S$ sind dieselbe Zahl $\sum_{i\in S} c_i$; aus $\sum_{i\in S} c_i \le B = K$ und $\sum_{i\in S} c_i \ge P = K$ folgt $\sum_{i\in S} c_i = K$ -- eine SubsetSum-Lösung. \textbf{Laufzeit:} Werte kopieren, $O(n)$, polynomiell. Da \problem{SubsetSum} NP-vollständig ist und $\problem{Knapsack} \in \NP$, ist \problem{Knapsack} NP-vollständig. \hfill$\square$ \bspkopf{SubsetSum $\redp$ Knapsack: Zahlen einsetzen} \textbf{Reduktion.} $w_i = p_i = c_i$, $B = P = K$: Die beiden Knapsack-Schranken zwingen die gemeinsame Summe auf exakt $K$. \medskip \textbf{Ja-Instanz bleibt Ja.} $c = (2,3,5)$, $K = 5$ mit Lösung $\{1,2\}$: $2+3 = 5$. Bildinstanz: Gewichte $=$ Profite $= (2,3,5)$, $B = P = 5$. Auswahl $\{1,2\}$: Gewicht $5 \le 5$~\ding{52}, Profit $5 \ge 5$~\ding{52} -- \textbf{Ja}. \medskip \textbf{Nein-Instanz bleibt Nein.} $c = (2,3,5)$, $K = 4$: keine Teilmenge summiert 4. Bildinstanz: $B = P = 4$. Durchprobieren: \begin{itemize} \item $\{1\}$: Profit $2 < 4$ -- verletzt Profitschranke. \item $\{2\}$: Profit $3 < 4$ -- verletzt Profitschranke. \item $\{3\}$: Gewicht $5 > 4$ -- verletzt Kapazität. \item $\{1,2\}$: Gewicht $5 > 4$ -- verletzt Kapazität. \item größere Mengen: Gewicht $\ge 7 > 4$. \end{itemize} Keine Auswahl erfüllt beides -- \textbf{Nein}. \newpage % ================================================================== \katkopf{SubsetSum $\redp$ Partition}{Vorlesung (Skript)} \textbf{Problem \problem{Partition}:} Gegeben Zahlen $c_1, \dots, c_n$. Gibt es $S$ mit $\sum_{j\in S} c_j = \frac12 \sum_{j=1}^{n} c_j$? \textbf{Problem \problem{SubsetSum}:} Gegeben Zahlen $c_1, \dots, c_n$ und $K$. Gibt es $S$ mit $\sum_{j\in S} c_j = K$? Zeigen Sie, dass \problem{Partition} NP-vollständig ist. \emph{Hinweis:} Reduzieren Sie \problem{SubsetSum} auf \problem{Partition}. \lsg \textbf{$\in$ NP:} Zertifikat ist die Menge $S$; summiere und vergleiche mit der halben Gesamtsumme. Laufzeit $O(n)$, polynomiell. \textbf{Konstruktion:} Sei $(c_1, \dots, c_n, K)$ eine \problem{SubsetSum}-Instanz. Setze $N := \sum_{j=1}^{n} c_j + 1$ und hänge zwei Zahlen als Items $n{+}1$ und $n{+}2$ an: \[ c_{n+1} := N - K, \qquad c_{n+2} := K + 1. \] Die neue Gesamtsumme ist $(N-1) + (N-K) + (K+1) = 2N$, die Hälfte also $N$. \textbf{Schlüsselbeobachtung:} $c_{n+1} + c_{n+2} = N + 1 > N$ -- in jeder Partitionslösung liegen die beiden Zusatzzahlen auf \emph{verschiedenen} Seiten. \textbf{Beweis hin:} Sei $S \subseteq [n]$ mit $\sum_{j\in S} c_j = K$. Dann ist $S \cup \{n{+}1\}$ eine Seite mit $\sum_{j\in S} c_j + c_{n+1} = K + (N-K) = N$ -- eine Partitionslösung. \textbf{Beweis zurück:} Sei $S' \subseteq [n{+}2]$ eine Seite mit $\sum_{j \in S'} c_j = N$; o.B.d.A.\ $n{+}1 \in S'$ (und damit $n{+}2 \notin S'$, Schlüsselbeobachtung). Dann gilt $\sum_{j \in S' \setminus \{n+1\}} c_j = N - (N-K) = K$ -- die Original-Items in $S'$ bilden eine SubsetSum-Lösung. \textbf{Laufzeit:} Gesamtsumme berechnen und zwei Zahlen anhängen, $O(n)$, polynomiell. Da \problem{SubsetSum} NP-vollständig ist und $\problem{Partition} \in \NP$, ist \problem{Partition} NP-vollständig. \hfill$\square$ \bspkopf{SubsetSum $\redp$ Partition: Zahlen einsetzen} \textbf{Reduktion.} $N = \sum c_j + 1$; Zusatzzahlen $a = N-K$, $b = K+1$; wegen $a + b = N + 1 > N$ trennen sich $a$ und $b$ in jeder Lösung. \medskip \textbf{Ja-Instanz bleibt Ja.} $c = (3,5,8,4)$, $K = 12$ mit Lösung $\{3,5,4\}$. Es ist $\sum c = 20$, also $N = 21$, $a = 21-12 = 9$, $b = 12+1 = 13$. Neue Zahlen: $(3,5,8,4,9,13)$, Gesamtsumme $42$, Hälfte $21$. Partitionslösung: $\{3,5,4\} \cup \{a\}$ mit $3+5+4+9 = 21$; die andere Seite $\{8, 13\}$ mit $8+13 = 21$~\ding{52} -- \textbf{Ja}. \medskip \textbf{Nein-Instanz bleibt Nein.} $c = (3,5,8,4)$, $K = 19$: Die Teilsummen von $(3,5,8,4)$ erreichen maximal $20$ und treffen $19$ nicht (Dreiersummen: $16, 15, 17, 12$; Gesamtsumme $20$). Konstruktion: $N = 21$, $a = 2$, $b = 20$. Neue Zahlen $(3,5,8,4,2,20)$, Hälfte $21$. Die Seite mit $b = 20$ müsste aus den übrigen Zahlen (alle $\ge 2$) exakt die Restsumme $1$ bilden: unmöglich. Die Seite mit $a = 2$ bräuchte $19$ aus den Originalzahlen -- existiert nicht. Keine Partition -- \textbf{Nein}. \newpage % ================================================================== \katkopf{ListScheduling hat Güte $2 - \frac{1}{m}$}{Klausur SS23-N, A4, 10 P.} $P\,\|\,C_{\max}$: $n$ Jobs mit Zeiten $p_1, \dots, p_n$, $m$ Maschinen; minimiere $\Cmax$. ListScheduling legt jeden Job der Reihe nach auf die Maschine mit minimaler Last. Zeigen Sie: Für alle $I$ gilt $\mathrm{LS}(I)/\mathrm{OPT}(I) \le 2 - 1/m$. \lsg O.B.d.A.\ habe Maschine $M_1$ am Ende die höchste Last $L = \mathrm{LS}(I)$. Sei $J_k$ der letzte Job, der $M_1$ zugeordnet wurde. \textbf{Kernbeobachtung:} Bei der Zuordnung von $J_k$ hatte $M_1$ die \emph{kleinste} Last $L - p_k$ -- also hatten alle $m$ Maschinen mindestens Last $L - p_k$. Daraus folgt \[ \sum_{i=1}^{n} p_i \;\ge\; m\,(L - p_k) + p_k. \] \begin{center} \begin{tikzpicture}[x=1.1cm,y=1cm] \node[left] at (-0.15,2.975) {\small $M_1$}; \draw[fill=black!10] (0,2.7) rectangle (7,3.25); \draw[fill=black!25] (7,2.7) rectangle (10,3.25); \node at (8.5,2.975) {\small $J_k$}; \node[left] at (-0.15,2.275) {\small $M_2$}; \draw[fill=black!10] (0,2.0) rectangle (8.2,2.55); \node[left] at (-0.15,1.575) {\small $M_3$}; \draw[fill=black!10] (0,1.3) rectangle (7.6,1.85); \node at (-0.45,0.95) {\small $\vdots$}; \node[left] at (-0.15,0.275) {\small $M_m$}; \draw[fill=black!10] (0,0.0) rectangle (7.3,0.55); \draw[thin] (7,3.45) -- (7,3.6) -- node[above] {\small $p_k$} (10,3.6) -- (10,3.45); \draw[dashed,thin] (7,-0.35) -- (7,3.25); \draw[dashed,thin] (10,-0.35) -- (10,3.25); \draw[->,thin] (0,-0.35) -- (10.9,-0.35) node[below] {\small $t$}; \draw[thin] (0,-0.42) -- (0,-0.28); \node[below] at (0,-0.45) {\small $0$}; \node[below] at (7,-0.45) {\small $s = L - p_k$}; \node[below] at (10,-0.45) {\small $L = \mathrm{LS}(I)$}; \node at (5,-1.35) {\small $s \;\ge\; \tfrac1m\bigl(\textstyle\sum_i p_i - p_k\bigr)$, denn alle Maschinen sind bis mindestens $s$ gef\"ullt}; \end{tikzpicture} \end{center} \textbf{Zwei Schranken für das Optimum:} $\mathrm{OPT}(I) \ge \frac{1}{m}\sum_i p_i$ (Gesamtlast auf $m$ Maschinen) und $\mathrm{OPT}(I) \ge p_k$ (jeder Job muss irgendwo laufen). \textbf{Kombination:} \[ \mathrm{OPT}(I) \;\ge\; \frac{1}{m}\sum_i p_i \;\ge\; \frac{m(L - p_k) + p_k}{m} \;=\; L - \Bigl(1 - \frac1m\Bigr) p_k . \] Mit $p_k \le \mathrm{OPT}(I)$: $\mathrm{OPT}(I) \ge \mathrm{LS}(I) - (1 - \frac1m)\,\mathrm{OPT}(I)$, also $\mathrm{LS}(I) \le \bigl(2 - \frac1m\bigr)\,\mathrm{OPT}(I)$. \hfill$\square$ \bspkopf{A29 -- ListScheduling-Güte $2-\frac1m$ scharf: $m=2$, Jobs $(1,1,2)$} \textbf{Ablauf von ListScheduling} (jeder Job auf die Maschine kleinster Last): $J_1\!\to\!M_1$ (Last $1$), $J_2\!\to\!M_2$ (Last $1$), $J_3\!\to\!M_1$ (kleinste Last) $\Rightarrow \mathrm{LS}=3$. \begin{center} \begin{tikzpicture}[x=1.1cm,y=0.7cm] \node[font=\small] at (-1.5,1) {\textbf{LS}}; \node[left,font=\small] at (-0.15,1.5) {$M_1$}; \draw[fill=black!10] (0,1.25) rectangle (1,1.75); \node at (0.5,1.5) {\small$J_1$}; \draw[fill=black!25] (1,1.25) rectangle (3,1.75); \node at (2,1.5) {\small$J_3$}; \node[left,font=\small] at (-0.15,0.5) {$M_2$}; \draw[fill=black!10] (0,0.25) rectangle (1,0.75); \node at (0.5,0.5) {\small$J_2$}; \draw[->] (0,-0.15) -- (3.7,-0.15) node[below,font=\small]{$t$}; \foreach \t in {0,1,2,3} {\draw (\t,-0.22)--(\t,-0.08); \node[below,font=\scriptsize] at (\t,-0.18){\t};} \draw[dashed] (3,-0.15)--(3,2.05); \node[above,font=\footnotesize] at (3,2.0){$\mathrm{LS}=3$}; \end{tikzpicture} \end{center} \textbf{Beweis-Ungleichungen mit Zahlen.} Letzter Job auf $M_1$ ist $J_k=J_3$, $p_k=2$. Bei seiner Zuordnung hatte $M_1$ die kleinste Last $L-p_k=3-2=1$, also alle Maschinen $\ge 1$: \[ \textstyle\sum_i p_i = 1+1+2 = 4 \;\ge\; m(L-p_k)+p_k = 2\cdot 1 + 2 = 4. \] Zwei Optimumsschranken: $\OPT\ge \tfrac1m\sum_i p_i=\tfrac{4}{2}=2$ und $\OPT\ge p_k=2$. Kombination: \[ \OPT \ge \frac{m(L-p_k)+p_k}{m}=L-\Bigl(1-\tfrac1m\Bigr)p_k=3-\tfrac12\cdot2=2, \qquad \frac{\mathrm{LS}}{\OPT}=\frac{3}{2}=2-\tfrac1m. \] Das reale Optimum $\OPT=2$ (Jobs $1,1$ auf $M_1$, Job $2$ auf $M_2$) bestätigt die Schranke -- sie ist \emph{scharf}: \begin{center} \begin{tikzpicture}[x=1.1cm,y=0.7cm] \node[font=\small] at (-1.5,1) {\textbf{OPT}}; \node[left,font=\small] at (-0.15,1.5) {$M_1$}; \draw[fill=black!10] (0,1.25) rectangle (1,1.75); \node at (0.5,1.5) {\small$J_1$}; \draw[fill=black!10] (1,1.25) rectangle (2,1.75); \node at (1.5,1.5) {\small$J_2$}; \node[left,font=\small] at (-0.15,0.5) {$M_2$}; \draw[fill=black!25] (0,0.25) rectangle (2,0.75); \node at (1,0.5) {\small$J_3$}; \draw[->] (0,-0.15) -- (3.7,-0.15) node[below,font=\small]{$t$}; \foreach \t in {0,1,2,3} {\draw (\t,-0.22)--(\t,-0.08); \node[below,font=\scriptsize] at (\t,-0.18){\t};} \draw[dashed] (2,-0.15)--(2,2.05); \node[above,font=\footnotesize] at (2,2.0){$\OPT=2$}; \end{tikzpicture} \end{center} \newpage % ================================================================== \katkopf{ModifiedGreedy hat Güte 2}{Vorlesung (Skript)} \problem{Knapsack}: Gegenstände mit Gewichten $w_i$, Profiten $p_i$, Kapazität $B$; maximiere den Profit. Greedy sortiert absteigend nach Profitdichte $p_i/w_i$ und packt in dieser Reihenfolge jeden Gegenstand ein, der noch passt. ModifiedGreedy (MGA) gibt das Bessere aus Greedy-Lösung und profitreichstem Einzel-Gegenstand aus. Zeigen Sie: $\mathrm{OPT}(I) \le 2 \cdot \mathrm{MGA}(I)$ für alle Eingaben $I$. \lsg \textbf{Idee:} Greedy verliert höchstens den Profit \emph{eines} Gegenstands -- des ersten, der nicht mehr passt. Genau den sichert der beste Einzel-Gegenstand ab. Nummeriere nach Dichte: $p_1/w_1 \ge \dots \ge p_n/w_n$. Sei $k+1$ der erste Gegenstand, den Greedy nicht einpacken kann. \textbf{Schritt 1 (Relaxierung):} Erlaubt man, Gegenstände anteilig einzupacken (fraktionales Knapsack mit Optimum $\mathrm{OPT}_f$), wird der Lösungsraum größer -- bei einem Maximierungsproblem gilt $\mathrm{OPT}(I) \le \mathrm{OPT}_f(I)$. \textbf{Schritt 2 (fraktionales Optimum):} Die beste fraktionale Lösung füllt den Rucksack in Dichte-Reihenfolge: die Gegenstände $1, \dots, k$ vollständig, vom Gegenstand $k+1$ einen Bruchteil. (Jede andere Lösung ließe sich verbessern, indem man Anteile geringerer Dichte durch Anteile höherer Dichte ersetzt.) Da Greedy die Gegenstände $1, \dots, k$ ebenfalls einpackt, gilt \[ \mathrm{OPT}_f(I) \;\le\; p_1 + \dots + p_k + p_{k+1} \;\le\; \mathrm{GA}(I) + p_{k+1}. \] \textbf{Schritt 3 (Kombination):} Mit $p_{k+1} \le p_{\max}$ und $\mathrm{MGA}(I) = \max\{\mathrm{GA}(I),\, p_{\max}\}$ folgt \[ \mathrm{OPT}(I) \;\le\; \mathrm{GA}(I) + p_{\max} \;\le\; 2\,\max\{\mathrm{GA}(I),\, p_{\max}\} \;=\; 2 \cdot \mathrm{MGA}(I). \qquad\square \] \bspkopf{MGA-Güte 2: an einer konkreten Instanz} \textbf{Instanz.} Kapazität $B = 16$, Items als $(p_i, w_i)$, nach Dichte sortiert: $(1,1), (3,3), (11,13), (5,6), (1,3), (1,4), (1,5)$. \textbf{Die Größen des Beweises:} \begin{itemize} \item Greedy packt $(1,1)$ und $(3,3)$ [Last 4]; $(11,13)$ passt nicht -- das ist der Split-Gegenstand $k+1$ mit $p_{k+1} = 11$. Danach noch $(5,6)$ und $(1,3)$: $\mathrm{GA} = 10$. \item Bester Einzel-Gegenstand: $p_{\max} = 11$. Also $\mathrm{MGA} = \max\{10, 11\} = 11$. \item Fraktional: Gegenstände $1,2$ ganz (Last 4), vom Split-Gegenstand $\tfrac{12}{13}$ (Restkapazität 12): $\mathrm{OPT}_f = 1 + 3 + \tfrac{12}{13}\cdot 11 \approx 14{,}15$. \item Echtes Optimum: $\{(11,13), (3,3)\}$ mit $\mathrm{OPT} = 14$. \end{itemize} \textbf{Die Beweiskette mit diesen Zahlen:} \[ \underbrace{14}_{\mathrm{OPT}} \;\le\; \underbrace{14{,}15}_{\mathrm{OPT}_f} \;\le\; \underbrace{10 + 11}_{\mathrm{GA} + p_{k+1}} \;\le\; \underbrace{10 + 11}_{\mathrm{GA} + p_{\max}} \;\le\; \underbrace{2 \cdot 11}_{2\,\mathrm{MGA}} = 22. \] Jede Ungleichung des Beweises stimmt hier nachrechenbar; die Güte $\mathrm{OPT}/\mathrm{MGA} = 14/11 \approx 1{,}27$ bleibt unter 2. \newpage % ################################################################## \section{Reduktionen: NP-Schwere und NP-Vollständigkeit} % ################################################################## % ================================================================== \katkopf{VertexCover ist NP-vollständig}{Präsenz 10.2} Zeigen Sie, dass \problem{VertexCover} NP-vollständig ist. \emph{Hinweis:} Reduzieren Sie \problem{Clique} auf \problem{VertexCover}. \lsg \textbf{$\in$ NP:} Zertifikat ist die Knotenmenge $C \subseteq V$; prüfe $|C| \le k$ und dass jede Kante einen Endpunkt in $C$ hat. Laufzeit $O(|V| + |E|)$, polynomiell. \textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz mit $n = |V|$ (o.B.d.A.\ $k \le n$). Invertiere $G$ zum Komplementgraphen $G' = (V, E')$ mit $E' = \binom{V}{2} \setminus E$ (genau die Nicht-Kanten von $G$). Gib $(G', n-k)$ aus. \begin{center} \begin{tikzpicture} \begin{scope} \node[kndick] (a1) at (90:1.3) {1}; \node[kndick] (a2) at (162:1.3) {2}; \node[kndick] (a3) at (18:1.3) {3}; \node[knoten] (a4) at (234:1.3) {4}; \node[knoten] (a5) at (306:1.3) {5}; \draw[thick] (a1)--(a2) (a1)--(a3) (a2)--(a3); \draw (a1)--(a4) (a3)--(a5); \node[font=\footnotesize] at (0,-2.1) {Clique $C=\{1,2,3\}$ in $G$}; \end{scope} \draw[->,thick] (2.2,0) -- (3.8,0) node[midway,above,font=\footnotesize] {komplementieren}; \begin{scope}[xshift=6.4cm] \node[knoten] (b1) at (90:1.3) {1}; \node[knoten] (b2) at (162:1.3) {2}; \node[knoten] (b3) at (18:1.3) {3}; \node[kndick] (b4) at (234:1.3) {4}; \node[kndick] (b5) at (306:1.3) {5}; \draw (b1)--(b5) (b2)--(b4) (b2)--(b5) (b3)--(b4) (b4)--(b5); \node[font=\footnotesize] at (0,-2.1) {VC $V\setminus C=\{4,5\}$ in $G'$, $\ n-k = 5-3 = 2$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $C$ eine Clique in $G$ mit $|C| \ge k$. Dann ist $V' := V \setminus C$ ein Vertex Cover von $G'$ mit $|V'| \le n-k$: In $G'$ gibt es keine Kante innerhalb von $C$ (in $G$ waren alle da), also hat jede Kante von $G'$ einen Endpunkt in $V'$. \textbf{Beweis zurück:} Sei $V'$ ein Vertex Cover von $G'$ mit $|V'| \le n-k$. Dann ist $C := V \setminus V'$ eine Clique in $G$ mit $|C| \ge k$: Für $\{u,v\} \subseteq C$ gilt $\{u,v\} \notin E'$ (sonst wäre $V'$ kein VC), also $\{u,v\} \in E$. \textbf{Laufzeit:} Invertieren naiv in $O(|V|^2)$, polynomiell. Da \problem{Clique} NP-vollständig ist und $\problem{VertexCover} \in \NP$, ist \problem{VertexCover} NP-vollständig. \hfill$\square$ \bspkopf{A6 -- VertexCover NP-vollständig} \textbf{Reduktion.} \problem{Clique} $\redp$ \problem{VertexCover}: komplementiere $G$ zu $G'$ und setze $k' = n-k$. Wir verfolgen eine winzige Instanz auf $V=\{1,2,3,4\}$ mit den Kanten $\{1,2\},\{1,3\},\{2,3\},\{1,4\}$ ($n=4$) durch die Konstruktion. \medskip \textbf{Ja-Instanz.} $G$ hat die Clique $C=\{1,2,3\}$, also ist $(G,k)$ mit $k=3$ eine Ja-Instanz. Das Komplement $G'$ enthält genau die Nicht-Kanten $\{2,4\},\{3,4\}$. Ausgabe $(G',\,k')$ mit $k' = n-k = 4-3 = 1$. Es ist $V\setminus C=\{4\}$ ein Vertex Cover von $G'$ (Knoten $4$ deckt beide Kanten) mit $|\{4\}| = 1 \le k'$ -- die Bildinstanz bleibt \textbf{Ja}. \begin{center} \begin{tikzpicture} \begin{scope} \node[kndick] (a1) at (0,1.4) {1}; \node[kndick] (a2) at (-1.2,0) {2}; \node[kndick] (a3) at (1.2,0) {3}; \node[knoten] (a4) at (0,-1.4) {4}; \draw[thick] (a1)--(a2) (a1)--(a3) (a2)--(a3); \draw (a1)--(a4); \node[font=\footnotesize] at (0,-2.2) {$G$: Clique $\{1,2,3\}$, $k=3$}; \end{scope} \draw[->,thick] (2.1,0) -- (3.7,0) node[midway,above,font=\footnotesize] {komplement.}; \begin{scope}[xshift=5.8cm] \node[knoten] (b1) at (0,1.4) {1}; \node[knoten] (b2) at (-1.2,0) {2}; \node[knoten] (b3) at (1.2,0) {3}; \node[kndick] (b4) at (0,-1.4) {4}; \draw (b2)--(b4) (b3)--(b4); \node[font=\footnotesize] at (0,-2.2) {$G'$: VC $\{4\}$, $k'=1$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Nein-Instanz.} Auf demselben $G$ ist $(G,k)$ mit $k=4$ eine Nein-Instanz: $G$ hat nur $4$ Kanten, also keinen $K_4$. Die Konstruktion liefert dasselbe $G'$, aber $k' = n-k = 4-4 = 0$. Ein Vertex Cover der Größe $0$ ist die leere Menge -- sie deckt die Kanten $\{2,4\},\{3,4\}$ von $G'$ nicht. Also existiert kein VC mit $|C|\le 0$: die Bildinstanz bleibt \textbf{Nein}. \newpage % ================================================================== \katkopf{$k$-CliqueUniversal ist NP-vollständig}{Hausaufgabe 10.2 (2026), 5 P.} \textbf{Problem $k$-\problem{CliqueUniversal}:} Gegeben ein Graph $G = (V,E)$ und $k \ge 1$, wobei ein $u \in V$ existiert, das mit allen anderen Knoten verbunden ist. \textbf{Entscheide:} Existiert eine Clique $C$ mit $|C| \ge k$? Zeigen Sie, dass $k$-\problem{CliqueUniversal} NP-vollständig ist. \lsg \textbf{$\in$ NP:} Jeder Verifizierer für \problem{Clique} eignet sich, da nur die Instanzmenge eingeschränkt ist: Zertifikat $C$, prüfe alle Paare und $|C| \ge k$. Laufzeit $O(|V|^2)$, polynomiell. \textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz. Setze $\bar k = k+1$ und $\bar G = (V \cup \{u\},\, E \cup \{\{u,v\} \mid v \in V\})$ für einen neuen Knoten $u$. $u$ ist universell, also ist $(\bar G, \bar k)$ eine gültige Instanz. \textbf{Beweis hin:} Sei $C$ eine Clique in $G$ mit $|C| \ge k$. Da $u$ mit allen verbunden ist, ist $C \cup \{u\}$ eine Clique in $\bar G$ mit $|C \cup \{u\}| \ge k+1 = \bar k$. \textbf{Beweis zurück:} Sei $\bar C$ eine Clique in $\bar G$ mit $|\bar C| \ge k+1$. Dann ist $\bar C \setminus \{u\} \subseteq V$ eine Clique in $G$ (Teilmenge einer Clique, $u$ ist der einzige neue Knoten) mit $|\bar C \setminus \{u\}| \ge k$. \textbf{Laufzeit:} $O(|V|)$ für Knoten und neue Kanten, polynomiell. Da \problem{Clique} NP-vollständig ist und $k\text{-}\problem{CliqueUniversal} \in \NP$, ist $k$-\problem{CliqueUniversal} NP-vollständig. \hfill$\square$ \bspkopf{A8 -- $k$-CliqueUniversal NP-vollständig} \textbf{Reduktion.} \problem{Clique} $\redp$ $k$-\problem{CliqueUniversal}: füge einen universellen Knoten $u$ hinzu (verbunden mit allen) und setze $\bar k = k+1$. \medskip \textbf{Ja-Instanz.} $G$ sei der Pfad $1$--$2$--$3$ mit der $2$-Clique $\{1,2\}$, also $(G,k)$ mit $k=2$ eine Ja-Instanz. In $\bar G$ ist $u$ mit $1,2,3$ verbunden, $\bar k = 3$. Dann ist $\{1,2,u\}$ ein Dreieck ($\{1,2\}\in E$ plus die neuen Kanten $\{1,u\},\{2,u\}$), also eine $3$-Clique $\ge \bar k$ -- die Bildinstanz bleibt \textbf{Ja}. \begin{center} \begin{tikzpicture} \begin{scope} \node[kndick] (a1) at (0,0) {1}; \node[kndick] (a2) at (1.5,0) {2}; \node[knoten] (a3) at (3,0) {3}; \draw[thick] (a1)--(a2); \draw (a2)--(a3); \node[font=\footnotesize] at (1.5,-1.2) {$G$: Clique $\{1,2\}$, $k=2$}; \end{scope} \draw[->,thick] (3.9,0) -- (5.3,0) node[midway,above,font=\footnotesize] {$+\,u$}; \begin{scope}[xshift=6.2cm] \node[kndick] (b1) at (0,0) {1}; \node[kndick] (b2) at (1.5,0) {2}; \node[knoten] (b3) at (3,0) {3}; \node[kndick] (bu) at (0.75,1.5) {$u$}; \draw[thick] (b1)--(b2) (b1)--(bu) (b2)--(bu); \draw (b2)--(b3) (b3)--(bu); \node[font=\footnotesize] at (1.5,-1.2) {$\bar G$: $\{1,2,u\}$ ist $3$-Clique, $\bar k=3$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Nein-Instanz.} $G$ seien drei isolierte Knoten $1,2,3$ (keine Kanten), $(G,k)$ mit $k=2$ eine Nein-Instanz (keine $2$-Clique). Der universelle $u$ liefert $\bar k = 3$, aber die größte Clique in $\bar G$ ist $\{u,i\}$ der Größe $2 < 3$ (die $i$ sind paarweise nicht benachbart). Also keine $3$-Clique: die Bildinstanz bleibt \textbf{Nein}. \begin{center} \begin{tikzpicture} \node[knoten] (c1) at (0,0) {1}; \node[knoten] (c2) at (1.5,0) {2}; \node[knoten] (c3) at (3,0) {3}; \node[knoten] (cu) at (1.5,1.5) {$u$}; \draw (c1)--(cu) (c2)--(cu) (c3)--(cu); \node[font=\footnotesize] at (1.5,-1.0) {$\bar G$: max.\ Clique $\{u,i\}$ hat Größe $2 < \bar k = 3$}; \end{tikzpicture} \end{center} \newpage % ================================================================== \katkopf{Clique-Nomember ist NP-vollständig}{Präsenz 11.2} \textbf{Problem \problem{Clique-Nomember}:} Gegeben $G = (V,E)$, ein Knoten $v \in V$ und $k$. Gibt es eine $k$-Clique, die $v$ \emph{nicht} enthält? Zeigen Sie NP-Vollständigkeit durch Reduktion von \problem{Clique}; $\problem{Clique-Nomember} \in \NP$ dürfen Sie annehmen. \lsg \textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz. Sei $v \notin V$ ein neuer, isolierter Knoten. Gib $(G' = (V \cup \{v\}, E),\, v,\, k)$ aus. \textbf{Beweis hin:} Sei $C$ eine $k$-Clique in $G$. $C$ ist auch $k$-Clique in $G'$ (keine Kanten entfernt), und $v \notin C$ wegen $v \notin V$. \textbf{Beweis zurück:} Sei $C$ eine $k$-Clique in $G'$ ohne $v$. Da außer dem isolierten $v$ nichts geändert wurde, liegt $C$ komplett in $G$ -- eine $k$-Clique in $G$. \textbf{Laufzeit:} Graph kopieren und einen isolierten Knoten anhängen -- $O(|V| + |E|)$, polynomiell. Da \problem{Clique} NP-vollständig ist und $\problem{Clique-Nomember} \in \NP$, ist \problem{Clique-Nomember} NP-vollständig. \hfill$\square$ \bspkopf{A9 -- Clique-Nomember NP-vollständig} \textbf{Reduktion.} \problem{Clique} $\redp$ \problem{Clique-Nomember}: füge einen neuen \emph{isolierten} Knoten $v$ hinzu und gib $(G',v,k)$ aus. Gefragt ist eine $k$-Clique, die $v$ nicht enthält. \medskip \textbf{Ja-Instanz.} $G$ sei das Dreieck $\{1,2,3\}$, also $(G,k)$ mit $k=3$ eine Ja-Instanz. In $G'$ ist $v$ isoliert. Die $3$-Clique $\{1,2,3\}$ liegt ganz in $G$ und enthält $v$ nicht ($v\notin\{1,2,3\}$) -- die Bildinstanz bleibt \textbf{Ja}. \begin{center} \begin{tikzpicture} \begin{scope} \node[kndick] (a1) at (90:1) {1}; \node[kndick] (a2) at (210:1) {2}; \node[kndick] (a3) at (330:1) {3}; \draw[thick] (a1)--(a2) (a2)--(a3) (a3)--(a1); \node[font=\footnotesize] at (0,-1.7) {$G$: $3$-Clique, $k=3$}; \end{scope} \draw[->,thick] (2.0,0) -- (3.4,0) node[midway,above,font=\footnotesize] {$+\,v$}; \begin{scope}[xshift=5.2cm] \node[kndick] (b1) at (90:1) {1}; \node[kndick] (b2) at (210:1) {2}; \node[kndick] (b3) at (330:1) {3}; \draw[thick] (b1)--(b2) (b2)--(b3) (b3)--(b1); \node[knoten] (bv) at (2.4,0) {$v$}; \node[font=\footnotesize] at (0.9,-1.7) {$G'$: Clique $\{1,2,3\}\not\ni v$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Nein-Instanz.} $G$ sei der Pfad $1$--$2$--$3$, $(G,k)$ mit $k=3$ eine Nein-Instanz (keine $3$-Clique). In $G'$ bleibt $v$ isoliert; da nur der isolierte $v$ hinzukam, gibt es weiterhin keine $3$-Clique -- erst recht keine ohne $v$. Die Bildinstanz bleibt \textbf{Nein}. \begin{center} \begin{tikzpicture} \node[knoten] (a1) at (0,0) {1}; \node[knoten] (a2) at (1.4,0) {2}; \node[knoten] (a3) at (2.8,0) {3}; \draw (a1)--(a2) (a2)--(a3); \node[knoten] (v) at (4.4,0) {$v$}; \node[font=\footnotesize] at (2.2,-1.0) {$G'$: Pfad ohne $3$-Clique, $v$ isoliert}; \end{tikzpicture} \end{center} \newpage % ================================================================== \katkopf{CliqueAndIndependentSet ist NP-schwer}{Klausur SS24-H, A3a, 5 P.} \textbf{Problem \problem{CliqueAndIndependentSet}:} Gegeben $G = (V,E)$ und $k \ge 1$. Gibt es in $G$ sowohl ein Independent Set der Größe $k$ als auch eine Clique der Größe $k$? Zeigen Sie die NP-Schwere durch Reduktion eines bekannten NP-schweren Problems. \lsg \textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz (o.B.d.A.\ $k \ge 2$). Füge $k$ neue isolierte Knoten $u_1, \dots, u_k$ hinzu: $G' = (V \cup \{u_1,\dots,u_k\},\, E)$. Gib $(G', k)$ aus. \textbf{Beweis hin:} Sei $C$ eine $k$-Clique in $G$. Dann ist $C$ auch $k$-Clique in $G'$, und $\{u_1, \dots, u_k\}$ ist ein Independent Set der Größe $k$ (isolierte Knoten). Beides existiert. \textbf{Beweis zurück:} $G'$ enthalte eine $k$-Clique $C'$. Wegen $k \ge 2$ hat jeder Knoten in $C'$ mindestens einen Nachbarn in $C'$; die isolierten $u_i$ haben keine Nachbarn, also $C' \subseteq V$ -- eine $k$-Clique in $G$. \textbf{Laufzeit:} $k$ isolierte Knoten $u_1, \dots, u_k$ anhängen -- $O(k) \subseteq O(|V|)$, polynomiell. Da \problem{Clique} NP-schwer ist, ist \problem{CliqueAndIndependentSet} NP-schwer. \hfill$\square$ \bspkopf{A13 -- CliqueAndIndependentSet NP-schwer} \textbf{Reduktion.} \problem{Clique} $\redp$ \problem{CliqueAndIndependentSet}: füge $k$ neue isolierte Knoten $u_1,\dots,u_k$ hinzu; $k$ bleibt. Gefragt sind in $G'$ zugleich eine $k$-Clique und ein $k$-Independent-Set. \medskip \textbf{Ja-Instanz.} $G$ sei das Dreieck $\{1,2,3\}$, also $(G,k)$ mit $k=3$ eine Ja-Instanz. $G'$ erhält $u_1,u_2,u_3$. Dann ist $\{1,2,3\}$ eine $3$-Clique \emph{und} $\{u_1,u_2,u_3\}$ ein $3$-Independent-Set (isoliert, paarweise nicht benachbart) -- beides existiert, die Bildinstanz bleibt \textbf{Ja}. \begin{center} \begin{tikzpicture} \node[kndick] (a1) at (90:1) {1}; \node[kndick] (a2) at (210:1) {2}; \node[kndick] (a3) at (330:1) {3}; \draw[thick] (a1)--(a2) (a2)--(a3) (a3)--(a1); \node[knoten] (u1) at (2.4,0.7) {$u_1$}; \node[knoten] (u2) at (3.4,0.7) {$u_2$}; \node[knoten] (u3) at (2.9,-0.4) {$u_3$}; \node[font=\footnotesize] at (0,-1.7) {$3$-Clique}; \node[font=\footnotesize] at (2.9,-1.2) {$3$-IS $\{u_1,u_2,u_3\}$}; \end{tikzpicture} \end{center} \textbf{Nein-Instanz.} $G$ sei der Pfad $1$--$2$--$3$, $(G,k)$ mit $k=3$ eine Nein-Instanz (keine $3$-Clique). $G'$ erhält wieder $u_1,u_2,u_3$; ein $3$-Independent-Set existiert nun zwar (z.\,B.\ $\{u_1,u_2,u_3\}$), aber eine $3$-Clique gibt es weiterhin nicht (Pfad hat kein Dreieck, die $u_i$ sind isoliert). Da nicht beides existiert, bleibt die Bildinstanz \textbf{Nein}. \begin{center} \begin{tikzpicture} \node[knoten] (a1) at (0,0) {1}; \node[knoten] (a2) at (1.2,0) {2}; \node[knoten] (a3) at (2.4,0) {3}; \draw (a1)--(a2) (a2)--(a3); \node[knoten] (u1) at (3.6,0.6) {$u_1$}; \node[knoten] (u2) at (4.6,0.6) {$u_2$}; \node[knoten] (u3) at (4.1,-0.5) {$u_3$}; \node[font=\footnotesize] at (1.2,-1.0) {Pfad: keine $3$-Clique}; \end{tikzpicture} \end{center} \newpage % ================================================================== \katkopf{$k$-CLIQUE-DEG-3 ist NP-vollständig}{Klausur SS25-H, A3, 2+8 P.} \textbf{Problem $k$-\problem{CLIQUE-DEG-3}:} Gegeben $G = (V,E)$ mit $\deg(v) \ge 3$ für alle $v \in V$, und $k \in \mathbb{N}_{>0}$. Existiert eine Clique $C$ mit $|C| \ge k$? \begin{enumerate} \item[a)] Zeigen Sie, dass $k$-\problem{Clique} für $k \in \{1,2,3,4\}$ polynomiell lösbar ist. \item[b)] Zeigen Sie, dass $k$-\problem{CLIQUE-DEG-3} NP-vollständig ist. \end{enumerate} \lsg \textbf{a)} Für festes $k \le 4$: Teste alle $\binom{|V|}{k} = O(|V|^k)$ Knotenmengen der Größe $k$; pro Menge prüfe die $\le 6$ Kantenpaare in $O(1)$ (Adjazenzmatrix). Laufzeit $O(|V|^4)$, polynomiell. ($k = 1$: jeder Knoten ist eine 1-Clique.) \textbf{b)} \textbf{$\in$ NP:} Zertifikat $C$; prüfe alle Paare und $|C| \ge k$ -- die Instanzmenge ist nur eingeschränkt. Laufzeit $O(|V|^2)$, polynomiell. \textbf{Konstruktion} (Reduktion von $k$-\problem{Clique}): Falls $k \le 4$, löse die Instanz mit a) in Polynomialzeit und gib eine feste triviale Ja- bzw.\ Nein-Instanz von $k$-\problem{CLIQUE-DEG-3} aus. Sonst ($k \ge 5$): Hänge an jeden Knoten $v$ drei private Knoten $a_v, b_v, c_v$ und verbinde $\{v, a_v, b_v, c_v\}$ vollständig ($K_4$). Dann gilt $\deg(v) \ge 3$ für alle Knoten (Gadget-Knoten haben Grad genau 3), die Instanz ist gültig; $k$ bleibt. \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten] (lx) at (-1.2,1.2) {$x$}; \node[knoten] (ly) at (1.2,1.2) {$y$}; \node[kndick] (lv) at (0,0) {$v$}; \draw (lv)--(lx) (lv)--(ly); \node[font=\footnotesize, text width=3cm, align=center] at (0,-2.9) {Knoten $v$ in $G$}; \end{scope} \draw[->,thick] (2.0,-0.4) -- (3.2,-0.4); \begin{scope}[xshift=6.4cm] \node[knoten] (x) at (-1.2,1.2) {$x$}; \node[knoten] (y) at (1.2,1.2) {$y$}; \node[kndick] (v) at (0,0) {$v$}; \draw[black!50] (v)--(x) (v)--(y); \node[kndick,font=\small] (a) at (-1.1,-1.75) {$a_v$}; \node[kndick,font=\small] (b) at (1.1,-1.75) {$b_v$}; \node[kndick,font=\small] (c) at (0,-1.05) {$c_v$}; \draw[thick] (v)--(a) (v)--(b) (a)--(b) (c)--(v) (c)--(a) (c)--(b); \node[font=\footnotesize, text width=7.6cm, align=center] at (0,-2.9) {in $G'$: privates $K_4$ auf $\{v,a_v,b_v,c_v\}$; $a_v,b_v,c_v$ sind nur mit $v$ und untereinander verbunden (Grad genau 3)}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Eine $k$-Clique in $G$ bleibt eine $k$-Clique in $G'$ (keine Kanten entfernt). \textbf{Beweis zurück:} Sei $C'$ eine $k$-Clique in $G'$ mit $k \ge 5$. Jede Clique, die einen Gadget-Knoten enthält, liegt komplett in einem $\{v, a_v, b_v, c_v\}$ und hat Größe $\le 4 < k$. Also $C' \subseteq V$ -- eine $k$-Clique in $G$. \textbf{Laufzeit:} $O(|V|)$ Gadgets konstanter Größe (bzw.\ $O(|V|^4)$ im Fall $k \le 4$), polynomiell. Da $k$-\problem{Clique} NP-vollständig ist und $k\text{-}\problem{CLIQUE-DEG-3} \in \NP$, ist $k$-\problem{CLIQUE-DEG-3} NP-vollständig. \hfill$\square$ \bspkopf{A23 -- $k$-CLIQUE-DEG-3} \textbf{Reduktion} (von $k$-\problem{Clique}, Fall $k\ge5$). An jeden Knoten $v$ ein privates $K_4$ auf $\{v,a_v,b_v,c_v\}$ anhängen; dann $\deg(v)\ge3$ überall, $k$ bleibt. (Fall $k\le4$ separat: Brute-Force über $O(|V|^k)$ Knotenmengen.) Gadget-Cliquen haben Größe $\le4$, zerstören also keine $k$-Clique mit $k\ge5$ und erzeugen auch keine. \medskip \textbf{Ja-Instanz bleibt Ja.} Basis: $K_5$ auf $\{1,\dots,5\}$ plus ein Pendant-Knoten $6$ mit einziger Kante $\{1,6\}$ -- also $\deg(6) = 1 < 3$, die Instanz braucht das Gadget wirklich. Gesucht: $k = 5$. \begin{center} \begin{tikzpicture}[scale=0.95] \foreach \i in {1,...,5} \node[knoten,font=\small] (v\i) at ({90+(\i-1)*72}:1.15) {$\i$}; \foreach \a/\b in {1/2,1/3,1/4,1/5,2/3,2/4,2/5,3/4,3/5,4/5} \draw (v\a)--(v\b); \node[knoten,font=\small] (v6) at (2.5,1.9) {$6$}; \draw (v1)--(v6); \node[knoten,minimum size=5mm,font=\scriptsize] (a) at (3.9,2.5) {$a_6$}; \node[knoten,minimum size=5mm,font=\scriptsize] (b) at (4.5,1.75) {$b_6$}; \node[knoten,minimum size=5mm,font=\scriptsize] (c) at (3.8,1.2) {$c_6$}; \draw[black!55] (v6)--(a) (v6)--(b) (v6)--(c) (a)--(b) (a)--(c) (b)--(c); \node[font=\footnotesize, text width=8.5cm, align=center] at (1.2,-1.9) {gezeichnet: das private $K_4$ an Knoten $6$; an jedem der Knoten $1,\dots,5$ hängt ebenso eines}; \end{tikzpicture} \end{center} Grade in $G'$: Knoten $6$: $1 + 3 = 4$; Knoten $1$: $5 + 3 = 8$; Knoten $2,\dots,5$: $4 + 3 = 7$; jeder Gadget-Knoten: genau $3$. Alle $\ge 3$ -- gültige Instanz. Die $5$-Clique $\{1,\dots,5\}$ bleibt erhalten. \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} Basis: $C_6$ (6-Kreis $1$--$2$--$\dots$--$6$--$1$; größte Clique $2$, alle Grade $2 < 3$), $k = 5$. \begin{center} \begin{tikzpicture}[scale=0.95] \foreach \i in {1,...,6} \node[knoten,font=\small] (v\i) at ({90+(\i-1)*60}:1.3) {$\i$}; \foreach \a/\b in {1/2,2/3,3/4,4/5,5/6,6/1} \draw (v\a)--(v\b); \node[knoten,minimum size=5mm,font=\scriptsize] (a) at (2.7,1.9) {$a_1$}; \node[knoten,minimum size=5mm,font=\scriptsize] (b) at (3.3,1.15) {$b_1$}; \node[knoten,minimum size=5mm,font=\scriptsize] (c) at (2.6,0.6) {$c_1$}; \draw[black!55] (v1)--(a) (v1)--(b) (v1)--(c) (a)--(b) (a)--(c) (b)--(c); \node[font=\footnotesize, text width=8.5cm, align=center] at (1.0,-2.0) {$C_6$: alle Grade $2 < 3$; jedes Gadget hebt den Grad auf $2+3=5$}; \end{tikzpicture} \end{center} Grade in $G'$: Kreis-Knoten $2 + 3 = 5$, Gadget-Knoten $3$ -- gültige Instanz. Aber keine $5$-Clique: Gadget-Cliquen haben Größe $\le 4 < 5$, im $C_6$-Teil ist die größte Clique eine Kante. \textbf{Nein.} \newpage % ================================================================== \katkopf{FeedbackVertexSet ist NP-vollständig}{Hausaufgabe 10.1, 5 P.} \textbf{Problem \problem{FeedbackVertexSet}:} Gegeben ein \emph{gerichteter} Graph $G = (V,E)$ und $k$; gibt es $X \subseteq V$ mit $|X| \le k$, sodass $G \setminus X$ kreisfrei ist? Zeigen Sie, dass \problem{FeedbackVertexSet} NP-vollständig ist. \emph{Hinweis:} Reduzieren Sie \problem{VertexCover} auf \problem{FeedbackVertexSet}. \lsg \textbf{$\in$ NP:} Zertifikat ist die Knotenmenge $X \subseteq V$; prüfe $|X| \le k$ und per topologischer Sortierung, dass $G \setminus X$ kreisfrei ist. Laufzeit $O(|V| + |E|)$, polynomiell. \textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{VertexCover}-Instanz. Erzeuge $G' = (V, E')$ mit $E' := \{(u,v), (v,u) \mid \{u,v\} \in E\}$ -- jede ungerichtete Kante wird zu zwei antiparallelen Bögen. Gib $(G', k)$ aus. \begin{center} \begin{tikzpicture} \node[knoten] (u1) at (0,0) {$u$}; \node[knoten] (v1) at (2.2,0) {$v$}; \draw (u1)--(v1); \node[font=\footnotesize] at (1.1,-1.0) {Kante $\{u,v\}$ in $G$}; \draw[->,thick] (3.4,0) -- (5.0,0); \node[knoten] (u2) at (6.2,0) {$u$}; \node[knoten] (v2) at (8.4,0) {$v$}; \draw[->] (u2) to[bend left=30] (v2); \draw[->] (v2) to[bend left=30] (u2); \node[font=\footnotesize] at (7.3,-1.0) {B\"ogen $(u,v)$ und $(v,u)$ in $G'$}; \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $C$ ein VC mit $|C| \le k$. Dann hat $G \setminus C$ keine Kanten, also hat $G' \setminus C$ keine Bögen und damit keine Kreise. \textbf{Beweis zurück:} Sei $X$ ein FVS mit $|X| \le k$. Angenommen, $X$ wäre kein VC. Dann gäbe es $\{u,v\} \in E$ mit $u,v \notin X$; dann wäre $(u,v,u)$ ein Kreis in $G' \setminus X$ -- Widerspruch. Also ist $X$ ein VC. \textbf{Laufzeit:} pro Kante zwei antiparallele Bögen anlegen -- $O(|E|)$, polynomiell. Da \problem{VertexCover} NP-vollständig ist und $\problem{FeedbackVertexSet} \in \NP$, ist \problem{FeedbackVertexSet} NP-vollständig. \hfill$\square$ \bspkopf{A7 -- FeedbackVertexSet NP-vollständig} \textbf{Reduktion.} \problem{VertexCover} $\redp$ \problem{FeedbackVertexSet}: jede ungerichtete Kante $\{u,v\}$ wird zu zwei antiparallelen Bögen $(u,v),(v,u)$ (einem $2$-Kreis); $k$ bleibt. Instanz: der Pfad $1$--$2$--$3$. \medskip \textbf{Ja-Instanz.} Der Pfad hat das Vertex Cover $C=\{2\}$, also ist $(G,k)$ mit $k=1$ eine Ja-Instanz. In $G'$ entstehen die $2$-Kreise $1\rightleftarrows 2$ und $2\rightleftarrows 3$. Die Menge $X=\{2\}$ trifft beide (jeder $2$-Kreis läuft über $2$), ist also ein Feedback Vertex Set mit $|X|=1\le k$ -- die Bildinstanz bleibt \textbf{Ja}. \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten] (a1) at (0,0) {1}; \node[kndick] (a2) at (1.5,0) {2}; \node[knoten] (a3) at (3,0) {3}; \draw (a1)--(a2) (a2)--(a3); \node[font=\footnotesize] at (1.5,-1.0) {$G$: VC $\{2\}$, $k=1$}; \end{scope} \draw[->,thick] (3.9,0) -- (5.3,0); \begin{scope}[xshift=6.2cm] \node[knoten] (b1) at (0,0) {1}; \node[kndick] (b2) at (1.5,0) {2}; \node[knoten] (b3) at (3,0) {3}; \draw[->] (b1) to[bend left=35] (b2); \draw[->] (b2) to[bend left=35] (b1); \draw[->] (b2) to[bend left=35] (b3); \draw[->] (b3) to[bend left=35] (b2); \node[font=\footnotesize] at (1.5,-1.0) {$G'$: FVS $\{2\}$, $k=1$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Nein-Instanz.} Auf demselben Pfad ist $(G,k)$ mit $k=0$ eine Nein-Instanz (kein VC der Größe $0$, es gibt Kanten). Die Konstruktion liefert dasselbe $G'$ mit zwei $2$-Kreisen; ein FVS der Größe $0$ (die leere Menge) bricht keinen davon. Also kein FVS mit $|X|\le 0$: die Bildinstanz bleibt \textbf{Nein}. \newpage % ================================================================== \katkopf{$\Delta$-Cover ist NP-vollständig}{Hausaufgabe 11.1, 8 P.} \textbf{Problem $\Delta$-\problem{Cover}:} Gegeben $G = (V,E)$ und $k$. Gibt es $C_\Delta \subseteq V$ mit $|C_\Delta| \le k$, sodass jedes Dreieck (3-Clique) von $G$ mindestens einen Knoten in $C_\Delta$ hat? Zeigen Sie, dass $\Delta$-\problem{Cover} NP-vollständig ist. \lsg \textbf{$\in$ NP:} Zertifikat $C_\Delta \subseteq V$. Prüfe $|C_\Delta| \le k$ und für jedes Knotentripel, ob es ein Dreieck bildet und dann getroffen wird. Existiert eine Dreiecksüberdeckung, wird sie akzeptiert, sonst jedes Zertifikat abgelehnt. Laufzeit: $O(|V|^3)$ Tripel mit je $O(|V|)$ Prüfung -- $O(|V|^4)$, polynomiell. \textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{VertexCover}-Instanz. Bilde $G' = (V', E')$ mit $V' = V \cup \{w_e \mid e \in E\}$ und $E' = E \cup \{\{w_e, u\}, \{w_e, v\} \mid e = \{u,v\} \in E\}$ -- jede Kante wird zu einem Dreieck $\{w_e, u, v\}$ aufgeblasen. Gib $(G', k)$ aus. \begin{center} \begin{tikzpicture} \node[knoten] (u1) at (0,0) {$u$}; \node[knoten] (v1) at (2.2,0) {$v$}; \draw (u1) -- node[midway,above,font=\footnotesize] {$e$} (v1); \node[font=\footnotesize] at (1.1,-1.0) {Kante $e=\{u,v\}$ in $G$}; \draw[->,thick] (3.4,0.4) -- (5.0,0.4); \node[knoten] (u2) at (6.2,0) {$u$}; \node[knoten] (v2) at (8.4,0) {$v$}; \node[kndick] (w2) at (7.3,1.5) {$w_e$}; \draw (u2)--(v2); \draw (u2)--(w2) (v2)--(w2); \node[font=\footnotesize] at (7.3,-1.0) {Dreieck $\{u,v,w_e\}$ in $G'$ (neuer Knoten $w_e$)}; \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $C$ ein VC mit $|C| \le k$. Jedes Dreieck in $G'$ ist entweder ein Gadget-Dreieck $\{w_e, u, v\}$ -- dann gilt $u \in C$ oder $v \in C$, da $C$ die Kante $e$ deckt -- oder ein aus $G$ geerbtes Dreieck $\{a,b,c\}$ (wegen $E \subseteq E'$) -- dann wird z.\,B.\ die Kante $\{a,b\}$ von $C$ gedeckt, also liegt ein Eckknoten in $C$. Jedes Dreieck ist getroffen. \textbf{Beweis zurück:} Sei $C_\Delta$ eine Dreiecksüberdeckung von $G'$ mit $|C_\Delta| \le k$. O.B.d.A.\ gilt $C_\Delta \subseteq V$: Enthält $C_\Delta$ ein $w_e$ mit $e = \{u,v\}$, ersetze es durch einen Endpunkt von $e$, etwa $u$ -- das einzige Dreieck durch $w_e$ ist $\{w_e, u, v\}$, es bleibt getroffen, und die Menge wird nicht größer. Nun trifft $C_\Delta$ jedes Gadget-Dreieck $\{w_e, u, v\}$ in $u$ oder $v$ -- also hat jede Kante $e \in E$ einen Endpunkt in $C_\Delta$: ein Vertex Cover. \textbf{Laufzeit:} Pro Kante ein Knoten und zwei Kanten, $O(|E|)$, polynomiell. Da \problem{VertexCover} NP-vollständig ist und $\Delta\text{-}\problem{Cover} \in \NP$, ist $\Delta$-\problem{Cover} NP-vollständig. \hfill$\square$ \bspkopf{A10 -- $\Delta$-Cover NP-vollständig} \textbf{Reduktion.} \problem{VertexCover} $\redp$ $\Delta$-\problem{Cover}: jede Kante $e=\{u,v\}$ wird durch einen neuen Knoten $w_e$ zum Dreieck $\{u,v,w_e\}$ aufgeblasen; $k$ bleibt. Instanz: der Pfad $1$--$2$--$3$ mit Kanten $e_{12}=\{1,2\}$, $e_{23}=\{2,3\}$. \medskip \textbf{Ja-Instanz.} Der Pfad hat das Vertex Cover $C=\{2\}$, also $(G,k)$ mit $k=1$ eine Ja-Instanz. $G'$ erhält $w_{12},w_{23}$ und damit genau die Dreiecke $\{1,2,w_{12}\}$ und $\{2,3,w_{23}\}$. Beide enthalten $2$, also trifft $C_\Delta=\{2\}$ jedes Dreieck mit $|C_\Delta|=1\le k$ -- die Bildinstanz bleibt \textbf{Ja}. \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten] (a1) at (0,0) {1}; \node[kndick] (a2) at (1.5,0) {2}; \node[knoten] (a3) at (3,0) {3}; \draw (a1)--(a2) (a2)--(a3); \node[font=\footnotesize] at (1.5,-1.0) {$G$: VC $\{2\}$, $k=1$}; \end{scope} \draw[->,thick] (3.9,0.3) -- (5.3,0.3); \begin{scope}[xshift=6.2cm] \node[knoten] (b1) at (0,0) {1}; \node[kndick] (b2) at (1.5,0) {2}; \node[knoten] (b3) at (3,0) {3}; \node[knoten] (w1) at (0.75,1.3) {$w_{12}$}; \node[knoten] (w2) at (2.25,1.3) {$w_{23}$}; \draw (b1)--(b2) (b2)--(b3); \draw (b1)--(w1) (b2)--(w1); \draw (b2)--(w2) (b3)--(w2); \node[font=\footnotesize] at (1.5,-1.0) {$G'$: zwei Dreiecke, $C_\Delta=\{2\}$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Nein-Instanz.} Auf demselben Pfad ist $(G,k)$ mit $k=0$ eine Nein-Instanz (kein VC der Größe $0$). $G'$ hat dieselben zwei Dreiecke; ein $\Delta$-Cover der Größe $0$ (die leere Menge) überdeckt keines. Also kein $\Delta$-Cover mit $|C_\Delta|\le 0$: die Bildinstanz bleibt \textbf{Nein}. \newpage % ================================================================== \katkopf{3-COLOR mit Minimalgrad 3 ist NP-vollständig}{Klausur SS23-H, A5b, 4 P.} Beweisen Sie die NP-Vollständigkeit von \problem{3-COLOR}, wobei jeder Knoten im Graphen mindestens Grad 3 hat. \lsg \textbf{$\in$ NP:} Zertifikat ist die Färbung $f: V \to \{1,2,3\}$; prüfe für jede Kante $f(u) \ne f(v)$. Laufzeit $O(|E|)$, polynomiell. \textbf{Idee:} Angehängte Gadgets heben den Grad untergradiger Knoten, ändern aber die 3-Färbbarkeit nicht. \textbf{Konstruktion} (Reduktion von \problem{3-COLOR}): Benutze das Diamant-Gadget $D$: Knoten $p,q,r,s$ mit Kanten $pq, pr, qr, qs, rs$ ($K_4$ ohne $ps$). Hänge an jeden Knoten $v$ mit $\deg(v) < 3$ \emph{zwei} eigene Gadgets an, verbunden über $\{v,p\}$ und $\{v,s\}$ je Gadget. Dann steigt $\deg(v)$ um 4, und alle Gadget-Knoten haben Grad 3 ($p,s$: zwei Gadget-Kanten $+$ $v$; $q,r$: drei Gadget-Kanten). \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten] (lx) at (0,1.6) {$x$}; \node[kndick] (lv) at (0,0) {$v$}; \draw (lx)--(lv); \node[font=\footnotesize] at (0,-2.3) {$\deg(v)=1<3$ in $G$}; \end{scope} \draw[->,thick] (1.2,0.4) -- (2.4,0.4); \begin{scope}[xshift=6.6cm] \node[knoten] (x) at (0,1.6) {$x$}; \node[kndick] (v) at (0,0) {$v$}; \draw (x)--(v); \node[knoten,minimum size=5.5mm] (p) at (-1.2,0) {$p$}; \node[knoten,minimum size=5.5mm] (q) at (-2.2,0.7) {$q$}; \node[knoten,minimum size=5.5mm] (r) at (-2.2,-0.7) {$r$}; \node[knoten,minimum size=5.5mm] (s) at (-3.2,0) {$s$}; \draw (p)--(q) (p)--(r) (q)--(r) (q)--(s) (r)--(s); \draw (v)--(p); \draw (v) .. controls (-1.2,-1.6) and (-2.8,-1.6) .. (s); \node[knoten,minimum size=5.5mm] (p2) at (1.2,0) {$p'$}; \node[knoten,minimum size=5.5mm] (q2) at (2.2,0.7) {$q'$}; \node[knoten,minimum size=5.5mm] (r2) at (2.2,-0.7) {$r'$}; \node[knoten,minimum size=5.5mm] (s2) at (3.2,0) {$s'$}; \draw (p2)--(q2) (p2)--(r2) (q2)--(r2) (q2)--(s2) (r2)--(s2); \draw (v)--(p2); \draw (v) .. controls (1.2,-1.6) and (2.8,-1.6) .. (s2); \node[font=\footnotesize, text width=8.6cm, align=center] at (0,-2.55) {in $G'$: zwei Diamant-Gadgets ($K_4$ ohne Kante $\{p,s\}$) an $v$ \"uber $\{v,p\}$ und $\{v,s\}$; $\deg(v)$ steigt um 4, alle Gadget-Knoten haben Grad 3}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $f$ eine 3-Färbung von $G$. Erweitere sie auf jedes Gadget: Färbe $p = s = c$ für ein $c \ne f(v)$; dann $q, r$ mit den beiden übrigen Farben ($q,r$ sind zu $p$ und $s$ adjazent, aber $p,s$ tragen dieselbe Farbe -- zwei Farben bleiben frei). Alle Kanten sind gültig. \textbf{Beweis zurück:} Sei $f'$ eine 3-Färbung von $G'$. Die Einschränkung auf $V$ ist eine 3-Färbung von $G$, denn $E \subseteq E'$. \textbf{Laufzeit:} $O(|V|)$ Gadgets konstanter Größe, polynomiell. Da \problem{3-COLOR} NP-vollständig ist und die Variante in $\NP$ liegt, ist sie NP-vollständig. \hfill$\square$ \bspkopf{A18 -- 3-COLOR mit Minimalgrad 3} \textbf{Reduktion.} An jeden Knoten $v$ mit $\deg(v)<3$ werden \emph{zwei} Diamant-Gadgets ($D=K_4$ ohne Kante $\{p,s\}$; Kanten $pq,pr,qr,qs,rs$) angehängt, verbunden über $\{v,p\}$ und $\{v,s\}$. Das hebt $\deg(v)$ um $4$; alle Gadget-Knoten bekommen Grad $3$. \medskip \textbf{Ja-Instanz bleibt Ja.} $G=$ eine Kante $\{x,v\}$, also $\deg(v)=1$. \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten,font=\small] (lx) at (0,1.4) {$x$}; \node[kndick,font=\small] (lv) at (0,0) {$v$}; \draw (lx)--(lv); \node[font=\footnotesize] at (0,-1.9) {$\deg(v)=1<3$ in $G$}; \end{scope} \draw[->,thick] (1.1,0.4) -- (2.3,0.4); \begin{scope}[xshift=6.4cm] \node[knoten,font=\small] (x) at (0,1.4) {$x$}; \node[kndick,font=\small] (v) at (0,0) {$v$}; \draw (x)--(v); \node[knoten,minimum size=5.5mm,font=\small] (p) at (-1.2,0) {$p$}; \node[knoten,minimum size=5.5mm,font=\small] (q) at (-2.2,0.6) {$q$}; \node[knoten,minimum size=5.5mm,font=\small] (r) at (-2.2,-0.6) {$r$}; \node[knoten,minimum size=5.5mm,font=\small] (s) at (-3.2,0) {$s$}; \draw (p)--(q) (p)--(r) (q)--(r) (q)--(s) (r)--(s); \draw (v)--(p); \draw (v) .. controls (-1.2,-1.5) and (-2.8,-1.5) .. (s); \node[knoten,minimum size=5.5mm,font=\small] (p2) at (1.2,0) {$p'$}; \node[knoten,minimum size=5.5mm,font=\small] (q2) at (2.2,0.6) {$q'$}; \node[knoten,minimum size=5.5mm,font=\small] (r2) at (2.2,-0.6) {$r'$}; \node[knoten,minimum size=5.5mm,font=\small] (s2) at (3.2,0) {$s'$}; \draw (p2)--(q2) (p2)--(r2) (q2)--(r2) (q2)--(s2) (r2)--(s2); \draw (v)--(p2); \draw (v) .. controls (1.2,-1.5) and (2.8,-1.5) .. (s2); \node[font=\footnotesize, text width=8.6cm, align=center] at (0,-2.2) {$\deg(v)=1+4=5$; alle Gadget-Knoten haben Grad $3$}; \end{scope} \end{tikzpicture} \end{center} Gültige 3-Färbung (Farben $1,2,3$): $f(v)=1$, $f(x)=2$; je Gadget $p=s=2$, $q=1$, $r=3$ (analog $p',s'=2$, $q'=1$, $r'=3$). Alle Kanten korrekt. \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $G=K_4$ ist nicht 3-färbbar -- und hat schon überall Grad $3$, es werden also \emph{keine} Gadgets angehängt, $G'=K_4$. \begin{center} \begin{tikzpicture}[scale=0.9] \node[knoten,font=\small] (1) at (0,1.4) {$1$}; \node[knoten,font=\small] (2) at (1.4,1.4) {$2$}; \node[knoten,font=\small] (3) at (0,0) {$3$}; \node[knoten,font=\small] (4) at (1.4,0) {$4$}; \draw (1)--(2)--(4)--(1) (1)--(3)--(2) (3)--(4); \node[font=\footnotesize] at (0.7,-0.8) {$K_4$: Grade alle $3$, nicht 3-färbbar}; \end{tikzpicture} \end{center} $G'=K_4$ ist nicht 3-färbbar. \textbf{Nein.} \newpage % ================================================================== \katkopf{$k$-COLOR-PRECOLORING ist NP-vollständig}{Klausur SS25-N, A3, 10 P.} \textbf{Problem $k$-\problem{COLOR-PRECOLORING}:} Gegeben $G = (V,E)$, $k \in \mathbb{N}_{>0}$ und paarweise verschiedene Knoten $v_1, \dots, v_k \in V$. Existiert eine Färbung $f: V \to [k]$ mit $f(v_i) = i$ für alle $i$ und $f(u) \ne f(v)$ für alle $\{u,v\} \in E$? Zeigen Sie, dass $k$-\problem{COLOR-PRECOLORING} NP-vollständig ist. \lsg \textbf{$\in$ NP:} Zertifikat ist die Färbung $f$. Prüfe $f(v_i) = i$ für alle $i$ und $f(u) \ne f(v)$ für jede Kante. Existiert eine gültige Färbung, wird sie akzeptiert, sonst jedes Zertifikat abgelehnt. Laufzeit $O(k + |E|)$, polynomiell. \textbf{Konstruktion} (Reduktion von $k$-\problem{Color}): Sei $(G, k)$ eine $k$-\problem{Color}-Instanz. Füge $k$ neue Knoten $v_1, \dots, v_k$ hinzu, die untereinander vollständig verbunden sind ($K_k$), aber keine Kanten nach $G$ haben. Gib $(G' = G \mathbin{\dot\cup} K_k,\ k,\ v_1, \dots, v_k)$ aus. \textbf{Beweis hin:} Sei $f$ eine $k$-Färbung von $G$. Erweitere sie durch $f(v_i) = i$ -- die $v_i$ sind nur untereinander verbunden und paarweise verschieden gefärbt. $f$ ist gültig und erfüllt die Vorgabe. \textbf{Beweis zurück:} Sei $f$ eine gültige Färbung von $G'$ mit $f(v_i) = i$. Die Einschränkung von $f$ auf $V$ ist eine $k$-Färbung von $G$, denn alle $G$-Kanten liegen in $E'$. \textbf{Laufzeit:} $O(k^2)$ für die neue Clique, polynomiell. Da $k$-\problem{Color} NP-vollständig ist und $k\text{-}\problem{COLOR-PRECOLORING} \in \NP$, ist $k$-\problem{COLOR-PRECOLORING} NP-vollständig. \hfill$\square$ \bspkopf{A24 -- $k$-COLOR-PRECOLORING} \textbf{Reduktion} (von $k$-\problem{Color}, hier $k=3$). Zu $G$ ein disjunktes $K_k$ mit Knoten $v_1,\dots,v_k$ hinzufügen (keine Kanten nach $G$) und diese vorfärben: $f(v_i)=i$. Da das $K_k$ isoliert ist, erzwingt die Vorfärbung nichts in $G$. \medskip \textbf{Ja-Instanz bleibt Ja.} $G=$ Dreieck $\{A,B,C\}$ (3-färbbar). \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[knoten,font=\small] (A) at (90:1.0) {$A$}; \node[knoten,font=\small] (B) at (210:1.0) {$B$}; \node[knoten,font=\small] (C) at (330:1.0) {$C$}; \draw (A)--(B)--(C)--(A); \node[font=\scriptsize] at (0,1.45) {$1$}; \node[font=\scriptsize] at (-1.27,-0.6) {$2$}; \node[font=\scriptsize] at (1.27,-0.6) {$3$}; \node[font=\footnotesize] at (0,-1.7) {$G$: 3-Färbung $A{=}1,B{=}2,C{=}3$}; \end{scope} \begin{scope}[xshift=5.6cm] \node[knoten,font=\small] (v1) at (90:1.0) {$v_1$}; \node[knoten,font=\small] (v2) at (210:1.0) {$v_2$}; \node[knoten,font=\small] (v3) at (330:1.0) {$v_3$}; \draw (v1)--(v2)--(v3)--(v1); \node[font=\scriptsize] at (0,1.45) {$=1$}; \node[font=\scriptsize] at (-1.4,-0.6) {$=2$}; \node[font=\scriptsize] at (1.4,-0.6) {$=3$}; \node[font=\footnotesize, text width=5cm, align=center] at (0,-1.7) {disjunktes $K_3$, vorgefärbt $f(v_i)=i$}; \end{scope} \end{tikzpicture} \end{center} $G'=G\mathbin{\dot\cup}K_3$: Die 3-Färbung von $G$ plus $f(v_i)=i$ ist gültig. \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $G=K_4$ (nicht 3-färbbar). \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[knoten,font=\small] (1) at (0,1.3) {$1$}; \node[knoten,font=\small] (2) at (1.3,1.3) {$2$}; \node[knoten,font=\small] (3) at (0,0) {$3$}; \node[knoten,font=\small] (4) at (1.3,0) {$4$}; \draw (1)--(2)--(4)--(1) (1)--(3)--(2) (3)--(4); \node[font=\footnotesize] at (0.65,-0.8) {$G=K_4$: nicht 3-färbbar}; \end{scope} \begin{scope}[xshift=5.2cm] \node[knoten,font=\small] (v1) at (90:1.0) {$v_1$}; \node[knoten,font=\small] (v2) at (210:1.0) {$v_2$}; \node[knoten,font=\small] (v3) at (330:1.0) {$v_3$}; \draw (v1)--(v2)--(v3)--(v1); \node[font=\scriptsize] at (0,1.45) {$=1$}; \node[font=\scriptsize] at (-1.4,-0.6) {$=2$}; \node[font=\scriptsize] at (1.4,-0.6) {$=3$}; \node[font=\footnotesize] at (0,-1.7) {disjunktes vorgefärbtes $K_3$}; \end{scope} \end{tikzpicture} \end{center} $G'=K_4\mathbin{\dot\cup}K_3$: Der $K_4$-Teil scheitert bereits an $3$ Farben. \textbf{Nein.} \newpage % ================================================================== \katkopf{HamiltonianPath $\redp$ HamiltonianCycle}{Klausur SS23-N, A5b, 5 P.} Geben Sie eine polynomielle Reduktion von \problem{HamiltonianPath} auf \problem{HamiltonianCycle} an. \lsg \textbf{Konstruktion:} Sei $G = (V,E)$ gegeben. Füge einen neuen universellen Knoten $u$ hinzu: $G' = (V \cup \{u\},\, E \cup \{\{u,v\} \mid v \in V\})$. \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten,font=\small] (a1) at (0,0) {$v_1$}; \node[knoten,font=\small] (a2) at (1.5,0) {$v_2$}; \node[knoten,font=\small] (a3) at (3.0,0) {$v_{n-1}$}; \node[knoten,font=\small] (a4) at (4.5,0) {$v_n$}; \draw (a1)--(a2) (a3)--(a4); \draw[dashed] (a2)--(a3); \node[font=\footnotesize] at (2.25,-2.5) {Hamiltonpfad in $G$}; \end{scope} \draw[->,thick] (5.4,-0.5) -- (6.6,-0.5); \begin{scope}[xshift=7.5cm] \node[knoten,font=\small] (b1) at (0,0) {$v_1$}; \node[knoten,font=\small] (b2) at (1.5,0) {$v_2$}; \node[knoten,font=\small] (b3) at (3.0,0) {$v_{n-1}$}; \node[knoten,font=\small] (b4) at (4.5,0) {$v_n$}; \node[kndick] (u) at (2.25,-1.6) {$u$}; \draw[thick] (b1)--(b2) (b3)--(b4); \draw[thick,dashed] (b2)--(b3); \draw[black!50] (u)--(b2) (u)--(b3); \draw[thick] (u)--(b1) (u)--(b4); \node[font=\footnotesize, text width=6.5cm, align=center] at (2.25,-2.5) {in $G'$: neuer Knoten $u$ mit Kanten zu allen $v_i$; fett: Hamiltonkreis $v_1,\dots,v_n,u,v_1$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $v_1, \dots, v_n$ ein Hamiltonpfad in $G$. Dann ist $v_1, \dots, v_n, u, v_1$ ein Hamiltonkreis in $G'$ -- die Kanten $\{v_n, u\}$ und $\{u, v_1\}$ existieren, da $u$ universell ist. \textbf{Beweis zurück:} Sei $C$ ein Hamiltonkreis in $G'$. Er besucht $u$ genau einmal, zwischen zwei Nachbarn $v_i, v_j \in V$. Entfernt man $u$ aus dem Kreis, bleibt ein Pfad von $v_i$ nach $v_j$, der alle Knoten aus $V$ genau einmal besucht und nur Kanten aus $E$ benutzt -- ein Hamiltonpfad in $G$. \textbf{Laufzeit:} $O(|V|)$ neue Kanten, polynomiell. \hfill$\square$ \bspkopf{A20 -- HamiltonianPath $\redp$ HamiltonianCycle} \textbf{Reduktion.} Füge einen universellen Knoten $u$ hinzu, verbunden mit allen $v\in V$. Ein Hamiltonpfad in $G$ schließt sich über $u$ zum Hamiltonkreis in $G'$. \medskip \textbf{Ja-Instanz bleibt Ja.} $G=$ Pfad $1\!-\!2\!-\!3$ (hat HP). \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[knoten,font=\small] (1) at (0,0) {$1$}; \node[knoten,font=\small] (2) at (1.3,0) {$2$}; \node[knoten,font=\small] (3) at (2.6,0) {$3$}; \draw[thick] (1)--(2)--(3); \node[font=\footnotesize] at (1.3,-1.4) {HP in $G$: $1\!-\!2\!-\!3$}; \end{scope} \draw[->,thick] (3.4,-0.3) -- (4.6,-0.3); \begin{scope}[xshift=5.5cm] \node[knoten,font=\small] (1) at (0,0) {$1$}; \node[knoten,font=\small] (2) at (1.3,0) {$2$}; \node[knoten,font=\small] (3) at (2.6,0) {$3$}; \node[kndick,font=\small] (u) at (1.3,-1.4) {$u$}; \draw[thick] (1)--(2)--(3); \draw[black!50] (u)--(2); \draw[thick] (u)--(1) (u)--(3); \node[font=\footnotesize, text width=5.5cm, align=center] at (1.3,-2.5) {$u$ zu allen $v_i$; fett: HK $1\!-\!2\!-\!3\!-\!u\!-\!1$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $G=$ Kante $\{1,2\}$ plus isolierter Knoten $3$ (kein HP). \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[knoten,font=\small] (1) at (0,0) {$1$}; \node[knoten,font=\small] (2) at (1.3,0) {$2$}; \node[knoten,font=\small] (3) at (2.6,0) {$3$}; \draw[thick] (1)--(2); \node[font=\footnotesize] at (1.3,-1.4) {kein HP in $G$}; \end{scope} \draw[->,thick] (3.4,-0.3) -- (4.6,-0.3); \begin{scope}[xshift=5.5cm] \node[knoten,font=\small] (1) at (0,0) {$1$}; \node[knoten,font=\small] (2) at (1.3,0) {$2$}; \node[knoten,font=\small] (3) at (2.6,0) {$3$}; \node[kndick,font=\small] (u) at (1.3,-1.4) {$u$}; \draw[thick] (1)--(2); \draw[black!50] (u)--(1) (u)--(2) (u)--(3); \node[font=\footnotesize, text width=5.8cm, align=center] at (1.3,-2.5) {$3$ hängt nur an $u$ (Grad $1$); $u$ wird nur einmal besucht $\Rightarrow$ kein HK}; \end{scope} \end{tikzpicture} \end{center} Knoten $3$ ist im Kreis nur über $u$ erreichbar, doch $u$ liegt in einem Kreis zwischen genau zwei Nachbarn -- $3$ mit Grad $1$ kann nicht auf einem Kreis liegen. \textbf{Nein.} \newpage % ================================================================== \katkopf{HamiltonianCycle $\redp$ HamiltonianPath}{Klausur SS23-N, A5c, 6 P.} Geben Sie eine polynomielle Reduktion von \problem{HamiltonianCycle} auf \problem{HamiltonianPath} an. \lsg \textbf{Idee:} Den Kreis bei $v$ aufschneiden: Ein Zwilling $v^*$ erbt $v$s Nachbarn, zwei Pendants $s,t$ erzwingen die Pfadenden. \textbf{Konstruktion:} Sei $G = (V,E)$ gegeben, o.B.d.A.\ $|V| \ge 3$. Wähle einen beliebigen Knoten $v$. Füge hinzu: einen Zwilling $v^*$ mit denselben Nachbarn wie $v$, einen Grad-1-Knoten $s$ mit Kante $\{s, v\}$ und einen Grad-1-Knoten $t$ mit Kante $\{t, v^*\}$. \begin{center} \begin{tikzpicture} \begin{scope} \node[kndick] (v) at (90:1.3) {$v$}; \node[knoten,font=\small] (w1) at (162:1.3) {$w_1$}; \node[knoten,font=\small] (w2) at (234:1.3) {$w_2$}; \node[knoten,font=\small] (w3) at (306:1.3) {$w_3$}; \node[knoten,font=\small] (w4) at (18:1.3) {$w_4$}; \draw[thick] (v)--(w1)--(w2)--(w3)--(w4)--(v); \node[font=\footnotesize, text width=3.4cm, align=center] at (0,-2.4) {Hamiltonkreis durch $v$ in $G$}; \end{scope} \draw[->,thick] (2.0,0.3) -- (3.2,0.3); \begin{scope}[xshift=6.8cm] \node[knoten,font=\small] (w1) at (162:1.3) {$w_1$}; \node[knoten,font=\small] (w2) at (234:1.3) {$w_2$}; \node[knoten,font=\small] (w3) at (306:1.3) {$w_3$}; \node[knoten,font=\small] (w4) at (18:1.3) {$w_4$}; \node[kndick] (v) at (125:1.55) {$v$}; \node[kndick,font=\small] (vs) at (55:1.55) {$v^*$}; \node[knoten,font=\small] (s) at (-1.55,2.45) {$s$}; \node[knoten,font=\small] (t) at (1.55,2.45) {$t$}; \draw[black!50] (v)--(w4) (vs)--(w1); \draw[thick] (s)--(v)--(w1)--(w2)--(w3)--(w4)--(vs)--(t); \node[font=\footnotesize, text width=7.6cm, align=center] at (0,-2.4) {in $G'$: Zwilling $v^*$ mit denselben Nachbarn wie $v$, dazu $s$ an $v$ und $t$ an $v^*$; fett: Hamiltonpfad $s,v,\dots,v^*,t$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Beweis hin:} Sei $v, w_1, \dots, w_{n-1}, v$ ein Hamiltonkreis in $G$. Dann ist $s, v, w_1, \dots, w_{n-1}, v^*, t$ ein Hamiltonpfad in $G'$ -- die Kante $\{w_{n-1}, v^*\}$ existiert, weil $v^*$ dieselben Nachbarn wie $v$ hat. \textbf{Beweis zurück:} Sei $P$ ein Hamiltonpfad in $G'$. Die Knoten $s$ und $t$ haben Grad 1, also sind sie die beiden Endpunkte: $P = s, v, x_1, \dots, x_{n-1}, v^*, t$, wobei $x_1, \dots, x_{n-1}$ alle Knoten aus $V \setminus \{v\}$ sind. Ersetzt man $v^*$ durch $v$, wird aus dem Mittelstück $v, x_1, \dots, x_{n-1}, v$ ein Hamiltonkreis in $G$ -- die letzte Kante existiert, da $\{x_{n-1}, v^*\} \in E'$ nur für Nachbarn von $v$ möglich ist. \textbf{Laufzeit:} Zwilling $v^*$ mit den bis zu $|V|$ Nachbarn von $v$ anlegen, dazu die zwei Pendants $s, t$ -- $O(|V|)$, polynomiell. \hfill$\square$ \bspkopf{A21 -- HamiltonianCycle $\redp$ HamiltonianPath} \textbf{Reduktion.} Wähle einen Knoten $v$; füge einen Zwilling $v^*$ mit denselben Nachbarn wie $v$ hinzu, dazu Grad-1-Pendants $s$ an $v$ und $t$ an $v^*$. Ein HK durch $v$ wird zum HP, indem er bei $v$/$v^*$ aufgetrennt und mit $s,t$ verlängert wird. \medskip \textbf{Ja-Instanz bleibt Ja.} $G=$ Dreieck $\{v,w_1,w_2\}$ (hat HK). \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[kndick,font=\small] (v) at (90:1.1) {$v$}; \node[knoten,font=\small] (w1) at (210:1.1) {$w_1$}; \node[knoten,font=\small] (w2) at (330:1.1) {$w_2$}; \draw[thick] (v)--(w1)--(w2)--(v); \node[font=\footnotesize] at (0,-1.9) {HK in $G$}; \end{scope} \draw[->,thick] (1.7,0) -- (2.9,0); \begin{scope}[xshift=6.4cm] \node[knoten,font=\small] (w1) at (210:1.1) {$w_1$}; \node[knoten,font=\small] (w2) at (330:1.1) {$w_2$}; \node[kndick,font=\small] (v) at (120:1.35) {$v$}; \node[kndick,font=\small] (vs) at (60:1.35) {$v^*$}; \node[knoten,font=\small] (s) at (-1.4,2.1) {$s$}; \node[knoten,font=\small] (t) at (1.4,2.1) {$t$}; \draw[black!50] (v)--(w2) (vs)--(w1); \draw[thick] (s)--(v)--(w1)--(w2)--(vs)--(t); \node[font=\footnotesize, text width=6.6cm, align=center] at (0,-1.9) {Zwilling $v^*$ (Nachbarn wie $v$), $s$ an $v$, $t$ an $v^*$; fett: HP $s\!-\!v\!-\!w_1\!-\!w_2\!-\!v^*\!-\!t$}; \end{scope} \end{tikzpicture} \end{center} \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $G=$ Pfad $v\!-\!w_1\!-\!w_2$ (kein HK). Dann ist $v^*$ nur zu $w_1$ benachbart (einziger Nachbar von $v$). \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[kndick,font=\small] (v) at (0,0) {$v$}; \node[knoten,font=\small] (w1) at (1.4,0) {$w_1$}; \node[knoten,font=\small] (w2) at (2.8,0) {$w_2$}; \draw[thick] (v)--(w1)--(w2); \node[font=\footnotesize] at (1.4,-1.4) {kein HK in $G$}; \end{scope} \draw[->,thick] (3.6,-0.3) -- (4.8,-0.3); \begin{scope}[xshift=6.0cm] \node[knoten,font=\small] (s) at (-1.3,0) {$s$}; \node[kndick,font=\small] (v) at (0,0) {$v$}; \node[knoten,font=\small] (w1) at (1.3,0) {$w_1$}; \node[knoten,font=\small] (w2) at (2.6,0) {$w_2$}; \node[kndick,font=\small] (vs) at (1.3,-1.3) {$v^*$}; \node[knoten,font=\small] (t) at (2.6,-1.3) {$t$}; \draw[thick] (s)--(v)--(w1)--(w2); \draw[thick] (vs)--(w1) (vs)--(t); \node[font=\footnotesize, text width=6.6cm, align=center] at (0.9,-2.4) {drei Grad-1-Knoten $s,t,w_2$ $\Rightarrow$ ein Pfad hat nur $2$ Enden $\Rightarrow$ kein HP}; \end{scope} \end{tikzpicture} \end{center} $v^*$ ist nur über $w_1$ erreichbar; jeder Versuch, $v^*$ zu erreichen, bräuchte $w_1$ ein zweites Mal. Formal: $s,t,w_2$ haben alle Grad $1$, ein Pfad kann aber höchstens $2$ Endpunkte haben. \textbf{Nein.} \newpage % ================================================================== \katkopf{Hitchhiker's-HamiltonianCycle ist NP-schwer}{Klausur SS24-N, A3a, 5 P.} \textbf{Problem \problem{Hitchhiker's-HamiltonianCycle}:} Gegeben $G = (V,E)$ mit $\deg(v) \ge 42$ für alle $v \in V$. Gibt es einen Hamiltonkreis? Zeigen Sie die NP-Schwere durch Reduktion eines bekannten NP-schweren Problems. \lsg \textbf{Idee:} Jeder Knoten wird zu einer $K_{43}$-Clique mit zwei Portalen -- das erzwingt überall Grad $\ge 42$, ohne die Hamiltonizität zu ändern. \textbf{Konstruktion} (Reduktion von \problem{HamiltonianCycle}): Ersetze jeden Knoten $v$ durch eine Clique $K_{43}$ mit Knoten $v_1, \dots, v_{43}$. Für jede Originalkante $\{u,v\} \in E$ füge die vier Kanten $\{u_1,v_1\}, \{u_1,v_{43}\}, \{u_{43},v_1\}, \{u_{43},v_{43}\}$ hinzu (Portale sind $v_1$ und $v_{43}$). \begin{center} \begin{tikzpicture} \begin{scope} \node[knoten] (lu) at (-1.5,0) {$u$}; \node[kndick] (lv) at (0,0) {$v$}; \draw (lu)--(lv); \node[font=\footnotesize, text width=3cm, align=center] at (-0.75,-2.45) {Knoten $v$ mit Nachbar $u$ in $G$}; \end{scope} \draw[->,thick] (1.0,0) -- (2.2,0); \begin{scope}[xshift=7.2cm] \node[kndick,font=\small] (p1) at (144:1.3) {$v_1$}; \node[knoten,minimum size=5.5mm] (i1) at (72:1.3) {}; \node[knoten,minimum size=5.5mm] (i2) at (0:1.3) {}; \node[knoten,minimum size=5.5mm] (i3) at (288:1.3) {}; \node[kndick,font=\small] (p43) at (216:1.3) {$v_{43}$}; \draw[black!45] (p1)--(i1) (p1)--(i2) (p1)--(i3) (p1)--(p43) (i1)--(i2) (i1)--(i3) (i1)--(p43) (i2)--(i3) (i2)--(p43) (i3)--(p43); \draw[dashed,thick,->] (p1)--(i1)--(i2)--(i3)--(p43); \node[fill=white,inner sep=2pt,font=\small] at (0.1,0) {$K_{43}$}; \node[knoten,minimum size=5.5mm,font=\small] (q1) at (-3.4,0.85) {$u_1$}; \node[knoten,minimum size=5.5mm,font=\small] (q43) at (-3.4,-0.85) {$u_{43}$}; \node at (-3.4,0.05) {$\vdots$}; \draw[dashed,black!60] (-3.4,0) ellipse [x radius=0.8, y radius=1.55]; \node[font=\footnotesize,black!60] at (-3.4,-1.9) {Clique von $u$}; \draw (q1)--(p1) (q43)--(p43) (q1)--(p43) (q43)--(p1); \node[font=\footnotesize, text width=8.4cm, align=center] at (-0.9,-2.75) {in $G'$: $v$ ersetzt durch Clique $K_{43}$; Originalkanten docken nur an den Portalen $v_1,v_{43}$ an; gestrichelt: Hamiltonpfad $v_1 \to \dots \to v_{43}$}; \end{scope} \end{tikzpicture} \end{center} Grade: innere Clique-Knoten haben Grad $42$; die Portale $v_1, v_{43}$ haben Grad $\ge 42$. Die Instanz ist also gültig. \textbf{Beweis hin:} Sei $v^{(1)}, \dots, v^{(n)}, v^{(1)}$ ein Hamiltonkreis in $G$. Ersetze jeden Besuch von $v$ durch einen Hamiltonpfad durch dessen Clique von Portal zu Portal ($v_1 \to \dots \to v_{43}$; in einer Clique existiert er immer). Die Übergänge nutzen die Portalkanten -- ein Hamiltonkreis in $G'$. \textbf{Beweis zurück:} Ein Hamiltonkreis in $G'$ besucht in jeder Knoten-Clique alle 43 Knoten. Die inneren Knoten haben nur Clique-Nachbarn, Außenkanten gibt es nur an den zwei Portalen -- der Kreis durchläuft jede Clique also als \emph{ein} Segment von Portal zu Portal. Zieht man jede Clique zu einem Knoten zusammen, entsteht ein Hamiltonkreis in $G$. \textbf{Laufzeit:} pro Knoten eine $K_{43}$-Clique aufbauen ($43^2$ Kanten), pro Originalkante vier Portalkanten -- $O(43^2 \cdot |V| + |E|)$, polynomiell. Da \problem{HamiltonianCycle} NP-schwer ist, ist \problem{Hitchhiker's-HamiltonianCycle} NP-schwer. \hfill$\square$ \bspkopf{A15 -- Hitchhiker's-HamiltonianCycle} \textbf{Reduktion.} Jeder Knoten von $G$ wird zu einer Clique $K_{43}$ mit den Portalen $v_1,v_{43}$; jede Originalkante dockt nur an den Portalen an. Ein Hamiltonkreis durchläuft jede Clique als \emph{ein} Portal-zu-Portal-Segment. \medskip \textbf{Ja-Instanz bleibt Ja.} Basis: Dreieck $A,B,C$ mit Hamiltonkreis $A\!-\!B\!-\!C\!-\!A$. \begin{center} \begin{tikzpicture}[scale=0.95] \begin{scope} \node[knoten,font=\small] (A) at (0,1.5) {$A$}; \node[knoten,font=\small] (B) at (-1.0,-0.4){$B$}; \node[knoten,font=\small] (C) at (1.0,-0.4) {$C$}; \draw[thick] (A)--(B)--(C)--(A); \node[font=\footnotesize] at (0,-1.3) {HK in $G$: $A\!-\!B\!-\!C\!-\!A$}; \end{scope} \draw[->,thick] (1.7,0.2) -- (2.9,0.2); \begin{scope}[xshift=6.6cm] \def\rr{0.75} \coordinate (cA) at (0,2.4); \coordinate (cB) at (-2.1,-1.0); \coordinate (cC) at (2.1,-1.0); \coordinate (pAB) at (-0.40,1.76); \coordinate (pAC) at (0.40,1.76); \coordinate (pBA) at (-1.70,-0.36); \coordinate (pBC) at (-1.35,-1.0); \coordinate (pCA) at (1.70,-0.36); \coordinate (pCB) at (1.35,-1.0); \draw[black!55] (pAB)--(pBA); \draw[black!55] (pAC)--(pCA); \draw[black!55] (pBC)--(pCB); \draw[thick] (cA) circle (\rr); \draw[thick] (cB) circle (\rr); \draw[thick] (cC) circle (\rr); \node[font=\small] at (0,2.62) {$K_{43}$}; \node[font=\small] at (cB) {$K_{43}$}; \node[font=\small] at (cC) {$K_{43}$}; \foreach \p in {pAB,pAC,pBA,pBC,pCA,pCB} \fill (\p) circle (1.6pt); \node[font=\scriptsize] at (-0.80,1.74) {$v_1$}; \node[font=\scriptsize] at (0.82,1.74) {$v_{43}$}; \draw[dashed,thick,->] (pAB) .. controls (-0.12,2.16) and (0.12,2.16) .. (pAC); \node[font=\footnotesize, text width=9cm, align=center] at (0,-2.55) {in $G'$: jeder Knoten $\to K_{43}$ mit Portalen; gestrichelt: Portal-zu-Portal-Pfad durch die Clique}; \end{scope} \end{tikzpicture} \end{center} \textbf{Konkret:} Die Cliquen haben die Knoten $A_1, \dots, A_{43}$, $B_1, \dots, B_{43}$ und $C_1, \dots, C_{43}$. Jede Originalkante liefert genau vier Portalkanten, z.\,B.\ für $A$--$B$: \[ \{A_1,B_1\},\ \{A_1,B_{43}\},\ \{A_{43},B_1\},\ \{A_{43},B_{43}\} \] (analog für $B$--$C$ und $C$--$A$). Grade: innere Clique-Knoten haben Grad 42; ein Portal wie $A_1$ hat $42 + 4 = 46$ (zwei inzidente Originalkanten mal zwei Portalkanten). Alle Grade $\ge 42$ -- die Instanz ist gültig. Der HK $A\!-\!B\!-\!C\!-\!A$ wird zum konkreten HK in $G'$: \[ A_1 - A_2 - \dots - A_{43} \;\xrightarrow{\{A_{43},B_1\}}\; B_1 - \dots - B_{43} \;\xrightarrow{\{B_{43},C_1\}}\; C_1 - \dots - C_{43} \;\xrightarrow{\{C_{43},A_1\}}\; A_1. \] Jede Clique wird als ein Portal-zu-Portal-Pfad durchlaufen, die Übergänge sind die markierten Portalkanten. \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} Basis: Pfad $A\!-\!B\!-\!C$ (keine Kante $A\!-\!C$), also \emph{kein} Hamiltonkreis. \begin{center} \begin{tikzpicture}[scale=0.95] \node[knoten,font=\small] (A) at (0,0) {$A$}; \node[knoten,font=\small] (B) at (1.4,0) {$B$}; \node[knoten,font=\small] (C) at (2.8,0) {$C$}; \draw[thick] (A)--(B)--(C); \end{tikzpicture} \end{center} Ohne HK in $G$ gibt es keinen in $G'$: Ein Kreis müsste jede Clique einmal Portal-zu-Portal durchlaufen; das Zusammenziehen der Cliquen ergäbe einen HK im Pfad -- den gibt es nicht. \textbf{Nein.} \newpage % ================================================================== \katkopf{SubsetSumCardinality ist NP-vollständig}{Präsenz 11.3} \textbf{Problem \problem{SubsetSumCardinality}:} Gegeben $c_1, \dots, c_n \in \mathbb{N}_{>0}$ ($n$ gerade) und $K$. Gibt es $S$ mit $|S| = n/2$ und $\sum_{i\in S} c_i = K$? Zeigen Sie NP-Vollständigkeit; $\in \NP$ dürfen Sie annehmen. \lsg \textbf{Konstruktion:} Sei $(c_1, \dots, c_n, K)$ eine \problem{SubsetSum}-Instanz. Setze $c_i' := c_i + 1$ für $i \le n$ (Shift) und $c_i' := 1$ für $i \in \{n+1, \dots, 2n\}$ ($n$ Padding-Items). Gib $(c_1', \dots, c_{2n}',\, K + n)$ aus ($2n$ Items, verlangt $|S| = n$). \textbf{Beweis hin:} Sei $S$ mit $\sum_{i\in S} c_i = K$. Dann $\sum_{i\in S} c_i' = K + |S|$. Fülle mit $S' = \{n+1, \dots, 2n - |S|\}$ auf: $|S \cup S'| = n$ und \[ \sum_{i \in S \cup S'} c_i' = K + |S| + (n - |S|) = K + n. \] \textbf{Beweis zurück:} Sei $S'$ mit $|S'| = n$ und $\sum_{i\in S'} c_i' = K + n$. Setze $S := S' \cap \{1,\dots,n\}$. Die $n - |S|$ Padding-Items in $S'$ tragen je 1 bei, also $\sum_{i\in S}(c_i + 1) = K + n - (n - |S|) = K + |S|$, d.\,h.\ $\sum_{i\in S} c_i = K$. \textbf{Laufzeit:} $n$ Zahlen um 1 shiften und $n$ Padding-Items anhängen -- $O(n)$, polynomiell. Da \problem{SubsetSum} NP-vollständig ist und $\problem{SubsetSumCardinality} \in \NP$, ist \problem{SubsetSumCardinality} NP-vollständig. \hfill$\square$ \bspkopf{A11 -- SubsetSumCardinality NP-vollständig} \textbf{Reduktion.} \problem{SubsetSum} $\redp$ \problem{SubsetSumCardinality}: aus $(c_1,\dots,c_n,K)$ mache $c_i' = c_i+1$ (Shift) für $i\le n$ und $n$ Padding-Items $c_i'=1$ für $i\in\{n+1,\dots,2n\}$; Zielwert $K+n$, verlangte Kardinalität $n$ (also die Hälfte der $2n$ Items). Instanz: $c=(2,3,5)$, $n=3$. \medskip \textbf{Ja-Instanz.} $K=5$ ist eine Ja-Instanz: $\{1,2\}$ mit $2+3=5$. Die Konstruktion liefert $c'=(3,4,6)$ und die Padding-Items $(1,1,1)$ als Items $4,5,6$; Zielwert $K+n=5+3=8$, Kardinalität $3$. Nimm die Bildmenge $\{1,2\}$ und fülle mit einem Padding-Item auf: $\{1,2,4\}$ mit $3+4+1=8$ und genau $3$ Elementen -- die Bildinstanz bleibt \textbf{Ja}. \medskip \textbf{Nein-Instanz.} $K=4$ ist eine Nein-Instanz: keine Teilmenge von $(2,3,5)$ summiert zu $4$. Dieselbe Konstruktion ergibt Items $(3,4,6,1,1,1)$, Zielwert $K+n=4+3=7$, Kardinalität $3$. Ein $3$-elementiges Subset mit $j$ Original- und $3-j$ Padding-Items hat Summe $(\text{Originalsumme}+j)+(3-j)=\text{Originalsumme}+3$; für Summe $7$ wäre eine Originalsumme $4$ nötig -- die es nicht gibt. Kein $3$-Subset trifft $7$ (mögliche Summen: $3,5,6,8,10,11,13$): die Bildinstanz bleibt \textbf{Nein}. \newpage % ================================================================== \katkopf{$(a_1{=}1)$-SubsetSum ist NP-schwer}{Klausur SS24-H, A3b, 5 P.} \textbf{Problem $(a_1{=}1)$-\problem{SubsetSum}:} $n$ Items mit Größen $a_i \in \mathbb{N}_{>0}$, wobei $a_1 = 1$, und Zielwert $T$. Gibt es $I \subseteq [n]$ mit $\sum_{i\in I} a_i = T$? Zeigen Sie die NP-Schwere durch Reduktion eines bekannten NP-schweren Problems. \lsg \textbf{Konstruktion:} Sei $(c_1, \dots, c_n, K)$ eine \problem{SubsetSum}-Instanz. Erzeuge die Items $a_1 = 1$ und $a_{i+1} = 2c_i$ für $i \in [n]$, mit Zielwert $T = 2K$. ($a_1 = 1$ ist erfüllt, die Instanz ist gültig.) \textbf{Beweis hin:} Sei $S$ mit $\sum_{i\in S} c_i = K$. Dann erfüllt die Auswahl $I := \{i+1 \mid i \in S\}$ \[ \sum_{j \in I} a_j \;=\; \sum_{i \in S} 2c_i \;=\; 2K \;=\; T. \] \textbf{Beweis zurück:} Sei $I$ mit $\sum_{i\in I} a_i = T = 2K$. Alle Items außer $a_1$ sind gerade, $T$ ist gerade -- enthielte $I$ das Item $a_1 = 1$, wäre die Summe ungerade. Also $1 \notin I$, und $S := \{i-1 \mid i \in I\}$ erfüllt $\sum_{i\in S} 2c_i = 2K$, d.\,h.\ $\sum_{i\in S} c_i = K$. \textbf{Laufzeit:} $n$ Zahlen verdoppeln und das Ballast-Item $a_1 = 1$ voranstellen -- $O(n)$, polynomiell. Da \problem{SubsetSum} NP-schwer ist, ist $(a_1{=}1)$-\problem{SubsetSum} NP-schwer. \hfill$\square$ \bspkopf{A14 -- $(a_1{=}1)$-SubsetSum} \textbf{Reduktion.} Aus einer \problem{SubsetSum}-Instanz $(c_1,\dots,c_n,K)$ entsteht die neue Instanz mit $a_1=1$, $a_{i+1}=2c_i$ und $T=2K$. Das Original-Item $c_i$ wandert also nach $a_{i+1}$; das aufgesetzte Item $a_1=1$ ist reiner Ballast, damit die Vorbedingung $a_1=1$ erfüllt ist. \medskip \textbf{Ja-Instanz bleibt Ja.} $c=(2,3,5)$, $K=5$ mit Lösung $c_1+c_2=2+3=5$. Transformiert: $a=(1,\;4,\;6,\;10)$, denn $a_2=2\cdot2$, $a_3=2\cdot3$, $a_4=2\cdot5$, und $T=2\cdot5=10$. Die Original-Auswahl $\{c_1,c_2\}$ wird zu $\{a_2,a_3\}$ mit $4+6=10=T$. Das Item $a_1=1$ bleibt ungenutzt. \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $c=(2,3,5)$, $K=4$: keine Teilmenge von $\{2,3,5\}$ ergibt $4$. Transformiert: $a=(1,4,6,10)$, $T=8$. \emph{Paritätsargument:} $T=8$ ist gerade, und jedes $a_i$ mit $i\ge2$ ist gerade; nähme man $a_1=1$ hinzu, würde die Summe ungerade. Also muss $a_1$ draußen bleiben -- doch aus $\{4,6,10\}$ ergibt sich nie $8$ ($4,\,6,\,10,\;4{+}6{=}10,\;4{+}10{=}14,\;6{+}10{=}16,\;20$). \textbf{Nein.} \medskip Genau dieses Paritätsargument ist die Rückrichtung des Beweises: Eine Lösung mit Summe $2K$ kann $a_1=1$ nie verwenden und entspricht daher einer $c$-Auswahl mit Summe $K$. \newpage % ================================================================== \katkopf{AtMostTwoPerSize-SubsetSum ist NP-schwer}{Klausur SS24-N, A3b, 5 P.} \textbf{Problem \problem{AtMostTwoPerSize-SubsetSum}:} Zielwert $T > 0$, $n$ Items mit Größen $a_i \in \mathbb{N}_{>0}$; jede Größe tritt höchstens zweimal auf. Gibt es $S$ mit $\sum_{i\in S} a_i = T$? Zeigen Sie die NP-Schwere durch Reduktion eines bekannten NP-schweren Problems. \emph{Hinweis:} Bei \problem{3-ExactCover} sind ein Universum $U$ mit $|U| = 3m$ und Dreiermengen $S_1, \dots, S_n \subseteq U$ gegeben; gefragt ist eine Auswahl von Mengen, die jedes Element \emph{genau einmal} überdeckt. Die Vorlesung reduziert \problem{3-EC} auf \problem{SubsetSum} über die Kodierung $c_j = \sum_{u_i \in S_j} (n+1)^{i-1}$ mit Ziel $K = \sum_{j=0}^{3m-1} (n+1)^j$. \lsg \textbf{Konstruktion} (Reduktion von \problem{3-ExactCover}): Nutze die Vorlesungs-Reduktion $\problem{3-EC} \redp \problem{SubsetSum}$: Für eine 3-EC-Instanz mit Universum $|U| = 3m$ und Mengen $S_1, \dots, S_n$ setze $c_j = \sum_{u_i \in S_j} (n+1)^{i-1}$ und $K = \sum_{j=0}^{3m-1} (n+1)^j$. O.B.d.A.\ sind die Mengen $S_j$ paarweise verschieden (doppelte Mengen ändern die Existenz einer exakten Überdeckung nicht -- lösche Duplikate vorab). Verschiedene Mengen ergeben verschiedene Bitvektoren und damit paarweise verschiedene Größen $c_j$ -- jede Größe tritt genau einmal auf, die Zusatzbedingung ist erfüllt. \begin{center} \small \begin{tabular}{l cccccc r} \toprule & \multicolumn{6}{c}{Ziffer zu $u_i$ (Basis $n+1=4$)} & \\ \cmidrule(lr){2-7} & $u_6$ & $u_5$ & $u_4$ & $u_3$ & $u_2$ & $u_1$ & $c_j$ \\ \midrule $S_1 = \{u_1,u_2,u_3\}$ & 0 & 0 & 0 & 1 & 1 & 1 & $21$ \\ $S_2 = \{u_3,u_4,u_5\}$ & 0 & 1 & 1 & 1 & 0 & 0 & $336$ \\ $S_3 = \{u_4,u_5,u_6\}$ & 1 & 1 & 1 & 0 & 0 & 0 & $1344$ \\ \midrule Ziel $K$ & 1 & 1 & 1 & 1 & 1 & 1 & $1365$ \\ \bottomrule \end{tabular} \smallskip {\footnotesize Beispiel mit $|U|=6$, $n=3$: verschiedene Mengen $\Rightarrow$ verschiedene Ziffernvektoren $\Rightarrow$ paarweise verschiedene $c_j$; $c_1 + c_3 = 1365 = K$ entspricht der exakten \"Uberdeckung $\{S_1,S_3\}$.} \end{center} \textbf{Beweis hin:} Sei $\mathcal{S}$ eine exakte Überdeckung. Jedes Element wird genau einmal überdeckt, also steht in jeder Ziffernstelle der Summe $\sum_{S_j \in \mathcal{S}} c_j$ genau eine 1 -- die Summe ist $K$. \textbf{Beweis zurück:} Sei $\sum_{j\in S} c_j = K$. Wegen Basis $n+1$ entsteht kein Übertrag, also muss jede Ziffernstelle genau einmal getroffen werden -- die gewählten Mengen überdecken jedes Element genau einmal: eine exakte Überdeckung. \textbf{Laufzeit:} Duplikat-Entfernung und Kodierung in Polynomialzeit. Da \problem{3-ExactCover} NP-schwer ist, ist \problem{AtMostTwoPerSize-SubsetSum} NP-schwer. \hfill$\square$ \bspkopf{A16 -- AtMostTwoPerSize-SubsetSum} \textbf{Reduktion} ($\problem{3-ExactCover}\redp\problem{SubsetSum}$). Universum $U=\{u_1,\dots,u_6\}$ ($m=2$, also $|U|=6$), $n=3$ Mengen. Kodiere jede Menge in Basis $n+1=4$: $c_j=\sum_{u_i\in S_j}4^{\,i-1}$, Ziel $K=\sum_{j=0}^{5}4^{\,j}=1365$ (in Basis $4$: $111111$). \medskip \textbf{Ja-Instanz bleibt Ja.} $S_1=\{u_1,u_2,u_3\}$, $S_2=\{u_4,u_5,u_6\}$, $S_3=\{u_1,u_2,u_4\}$. \begin{center} \small \begin{tabular}{l cccccc r} \toprule & \multicolumn{6}{c}{Ziffer zu $u_i$ (Basis $4$)} & \\ \cmidrule(lr){2-7} & $u_6$ & $u_5$ & $u_4$ & $u_3$ & $u_2$ & $u_1$ & $c_j$ \\ \midrule $S_1=\{u_1,u_2,u_3\}$ & 0 & 0 & 0 & 1 & 1 & 1 & $21$ \\ $S_2=\{u_4,u_5,u_6\}$ & 1 & 1 & 1 & 0 & 0 & 0 & $1344$ \\ $S_3=\{u_1,u_2,u_4\}$ & 0 & 0 & 1 & 0 & 1 & 1 & $69$ \\ \midrule Ziel $K$ & 1 & 1 & 1 & 1 & 1 & 1 & $1365$ \\ \bottomrule \end{tabular} \end{center} Verschiedene Mengen $\Rightarrow$ verschiedene Ziffernvektoren $\Rightarrow$ $c_1,c_2,c_3$ paarweise verschieden (jede Größe tritt genau einmal auf -- $\le 2$-mal ist erfüllt). Die exakte Überdeckung $\{S_1,S_2\}$ liefert $c_1+c_2=21+1344=1365=K$ (kein Übertrag in Basis $4$). \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} Gleiches $U$, aber nur $S_1=\{u_1,u_2,u_3\}$, $S_3=\{u_1,u_2,u_4\}$: $u_5,u_6$ sind unüberdeckbar, keine exakte Überdeckung. Größen $c_1=21$, $c_3=69$; jede Teilsumme ($21,\,69,\,90$) bleibt unter $K=1365$. \textbf{Nein.} \newpage % ================================================================== \katkopf{SubsetSum mit Teilbarkeit ist NP-vollständig}{Klausur SS23-H, A5a, 4 P.} Beweisen Sie die NP-Vollständigkeit von \problem{SubsetSum}, bei dem jede Itemgröße durch 3 oder durch 7 teilbar ist. \lsg \textbf{$\in$ NP:} Zertifikat $S$; summiere und vergleiche mit $K$, wie beim gewöhnlichen \problem{SubsetSum}. Laufzeit $O(n)$, polynomiell. \textbf{Konstruktion:} Sei $(c_1, \dots, c_n, K)$ eine \problem{SubsetSum}-Instanz. Setze $c_i' := 3c_i$ und $K' := 3K$. Alle Größen sind durch 3 teilbar -- die Instanz ist gültig. \textbf{Beweis hin:} Sei $S$ mit $\sum_{i\in S} c_i = K$. Dann $\sum_{i\in S} c_i' = 3K = K'$. \textbf{Beweis zurück:} Sei $S$ mit $\sum_{i\in S} c_i' = K'$. Division durch 3 liefert $\sum_{i\in S} c_i = K$. \textbf{Laufzeit:} jede der $n$ Zahlen und $K$ mit 3 multiplizieren -- $O(n)$, polynomiell. Da \problem{SubsetSum} NP-vollständig ist und die Variante in $\NP$ liegt, ist sie NP-vollständig. \hfill$\square$ \bspkopf{A17 -- SubsetSum mit Teilbarkeit} \textbf{Reduktion.} Aus $(c_1,\dots,c_n,K)$ entsteht $c_i'=3c_i$, $K'=3K$; dann ist jede Größe durch $3$ teilbar (also die Zusatzbedingung \glqq durch $3$ oder $7$ teilbar\grqq{} erfüllt). \medskip \textbf{Ja-Instanz bleibt Ja.} $c=(2,3,5)$, $K=5$ mit $c_1+c_2=2+3=5$. Transformiert: $c'=(6,9,15)$, $K'=15$. Dieselbe Auswahl: $6+9=15=K'$ (alle Größen durch $3$ teilbar). \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $c=(2,3,5)$, $K=4$: keine Teilmenge ergibt $4$. Transformiert: $c'=(6,9,15)$, $K'=12$. Teilsummen von $\{6,9,15\}$: $6,\,9,\,15,\;15,\,21,\,24,\,30$ -- $12$ ist nicht dabei. \textbf{Nein.} \medskip Rückrichtung: Aus $\sum_{i\in S}c_i'=K'$ folgt durch Division durch $3$ sofort $\sum_{i\in S}c_i=K$. \newpage % ================================================================== \katkopf{SubsetSum ohne Zweierpotenzen ist NP-vollständig}{Klausur SS23-N, A5a, 4 P.} Sei $L$ die Menge der \problem{SubsetSum}-Instanzen, bei denen keine Itemgröße eine Zweierpotenz ist. Zeigen Sie, dass $L$ NP-vollständig ist. \lsg \textbf{$\in$ NP:} Zertifikat $S$; summiere und vergleiche mit $K$. Laufzeit $O(n)$, polynomiell. \textbf{Konstruktion:} Sei $(c_1, \dots, c_n, K)$ eine \problem{SubsetSum}-Instanz. Setze $c_i' := 3c_i$ und $K' := 3K$. Jede Größe $c_i' \ge 3$ ist durch 3 teilbar und damit keine Zweierpotenz (Zweierpotenzen haben nur den Primfaktor 2) -- die Instanz liegt in der eingeschränkten Menge. \textbf{Beweis hin:} $\sum_{i\in S} c_i = K \Rightarrow \sum_{i\in S} c_i' = 3K = K'$. \textbf{Beweis zurück:} $\sum_{i\in S} c_i' = K' \Rightarrow$ Division durch 3: $\sum_{i\in S} c_i = K$. \textbf{Laufzeit:} jede der $n$ Zahlen und $K$ mit 3 multiplizieren -- $O(n)$, polynomiell. Da \problem{SubsetSum} NP-vollständig ist und $L \in \NP$, ist $L$ NP-vollständig. \hfill$\square$ \bspkopf{A19 -- SubsetSum ohne Zweierpotenzen} \textbf{Reduktion.} Aus $(c_1,\dots,c_n,K)$ entsteht $c_i'=3c_i$, $K'=3K$. Jedes $c_i'$ hat den Primfaktor $3$, ist also keine Zweierpotenz (diese haben nur den Primfaktor $2$) -- die Instanz liegt in der eingeschränkten Menge, auch wenn die Ausgangsgrößen Zweierpotenzen enthalten. \medskip \textbf{Ja-Instanz bleibt Ja.} $c=(1,4,6)$ (mit $1=2^0$, $4=2^2$ Zweierpotenzen!), $K=5$, Lösung $c_1+c_2=1+4=5$. Transformiert: $c'=(3,12,18)$, $K'=15$. Dieselbe Auswahl: $3+12=15=K'$ -- und $3,12,18$ ist keine Zweierpotenz. \textbf{Ja.} \medskip \textbf{Nein-Instanz bleibt Nein.} $c=(1,4,6)$, $K=8$: keine Teilmenge von $\{1,4,6\}$ ergibt $8$. Transformiert: $c'=(3,12,18)$, $K'=24$. Teilsummen von $\{3,12,18\}$: $3,\,12,\,18,\;15,\,21,\,30,\,33$ -- $24$ ist nicht dabei. \textbf{Nein.} \newpage % ================================================================== \katkopf{TSP ist nicht approximierbar}{Klausur SS23-H, A5c, 7 P.} \textbf{Problem \problem{TSP}:} Gegeben $n$ Städte mit beliebigen Distanzen $d(u,v) > 0$ -- \emph{allgemeines} TSP, die Dreiecksungleichung wird \emph{nicht} vorausgesetzt. Gesucht ist eine Rundtour minimaler Länge durch alle Städte. Ein Algorithmus $A$ hat Güte $\alpha$, wenn $A(I) \le \alpha \cdot \mathrm{OPT}(I)$ für alle Instanzen $I$ gilt. Zeigen Sie: Für kein $\alpha > 1$ gibt es einen Approximationsalgorithmus mit Güte $\alpha$ für \problem{TSP}, außer $P = NP$. \lsg Angenommen, es gäbe einen polynomiellen Algorithmus $A$ mit $A(I) \le \alpha \cdot \mathrm{OPT}(I)$ für ein festes $\alpha > 1$. Wir lösen damit \problem{HamiltonianCycle} in Polynomialzeit: \textbf{Konstruktion:} Zu $G = (V,E)$ mit $n = |V|$ baue die TSP-Instanz mit Städten $V$ und \[ d(u,v) = \begin{cases} 1 & \{u,v\} \in E,\\ \alpha n + 1 & \text{sonst.} \end{cases} \] \textbf{Fall 1: $G$ hat einen Hamiltonkreis.} Dann ist $\mathrm{OPT} = n$ (Tour nur über echte Kanten), also $A(I) \le \alpha n$. \textbf{Fall 2: $G$ hat keinen Hamiltonkreis.} Dann benutzt jede Tour mindestens eine Nicht-Kante, also $\mathrm{OPT} \ge (\alpha n + 1) + (n-1) > \alpha n$, und damit auch $A(I) > \alpha n$. Der Vergleich \glqq$A(I) \le \alpha n$?\grqq{} entscheidet also \problem{HamiltonianCycle} in Polynomialzeit. Da \problem{HamiltonianCycle} NP-vollständig ist, folgt $P = NP$. Also existiert ein solcher Algorithmus nur, wenn $P = NP$. \hfill$\square$ \bspkopf{A22 -- TSP ist nicht approximierbar} \textbf{Reduktion} (Gap: HK $\to$ TSP). Kante $\to$ Distanz $1$, Nicht-Kante $\to$ $\alpha n+1$. Fest gewählt: $\alpha=2$, $n=4$, also $\alpha n+1=9$ und Schranke $\alpha n=8$. Der Test \glqq$A(I)\le 8$?\grqq{} entscheidet HK. \medskip \textbf{Ja-Instanz.} $G=$ Kreis $1\!-\!2\!-\!3\!-\!4\!-\!1$ (hat HK). $\OPT=n=4$ (Tour nur über echte Kanten), also $A(I)\le\alpha n=8$. \medskip \textbf{Nein-Instanz.} Kanten $\{1,2\},\{2,3\},\{3,4\},\{2,4\}$; Knoten $1$ hat Grad $1$, kein HK. Jede Tour muss bei $1$ eine Nicht-Kante ($=9$) benutzen, also $\OPT\ge 9+3\cdot1=12>8$, d.\,h.\ $A(I)>8$. \begin{center} \begin{tikzpicture}[scale=1.05] \begin{scope} \node[knoten,font=\small] (1) at (0,1.3) {$1$}; \node[knoten,font=\small] (2) at (1.3,1.3) {$2$}; \node[knoten,font=\small] (3) at (1.3,0) {$3$}; \node[knoten,font=\small] (4) at (0,0) {$4$}; \draw[thick] (1)--(2) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[thick] (2)--(3) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[thick] (3)--(4) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[thick] (4)--(1) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[dashed,black!55] (1)--(3) node[pos=0.3,fill=white,inner sep=1pt,font=\scriptsize]{$9$}; \draw[dashed,black!55] (2)--(4) node[pos=0.3,fill=white,inner sep=1pt,font=\scriptsize]{$9$}; \node[font=\footnotesize] at (0.65,-0.9) {Ja: $\OPT=4$}; \end{scope} \begin{scope}[xshift=4.6cm] \node[knoten,font=\small] (1) at (0,1.3) {$1$}; \node[knoten,font=\small] (2) at (1.3,1.3) {$2$}; \node[knoten,font=\small] (3) at (1.3,0) {$3$}; \node[knoten,font=\small] (4) at (0,0) {$4$}; \draw[thick] (1)--(2) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[thick] (2)--(3) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[thick] (3)--(4) node[midway,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[thick] (2)--(4) node[pos=0.3,fill=white,inner sep=1pt,font=\scriptsize]{$1$}; \draw[dashed,black!55] (1)--(3) node[pos=0.3,fill=white,inner sep=1pt,font=\scriptsize]{$9$}; \draw[dashed,black!55] (1)--(4) node[near start,fill=white,inner sep=1pt,font=\scriptsize]{$9$}; \node[font=\footnotesize] at (0.65,-0.9) {Nein: $\OPT\ge12$}; \end{scope} \end{tikzpicture} \end{center} {\small Distanzmatrix Nein-Instanz (symm.): $d_{12}{=}d_{23}{=}d_{34}{=}d_{24}{=}1$, $d_{13}{=}d_{14}{=}9$.} Solid $=1$, gestrichelt $=\alpha n+1=9$. Der Gütetest trennt Ja ($\le8$) von Nein ($>8$) und würde HK in Polynomialzeit lösen. \newpage % ================================================================== \katkopf{HALT$_{\text{TM}}$ ist NP-schwer}{Hausaufgabe 11.2 (2026), 5 P.} $\mathrm{HALT}_{\mathrm{TM}} := \{\langle M, w\rangle \mid M \text{ ist DTM und hält auf } w\}$. Zeigen Sie: $\mathrm{HALT}_{\mathrm{TM}}$ ist NP-schwer. \lsg Wir zeigen $\problem{SAT} \redp \mathrm{HALT}_{\mathrm{TM}}$; da \problem{SAT} NP-schwer ist, folgt mit der Transitivität die NP-Schwere. \textbf{Konstruktion:} Zu einer KNF-Formel $\varphi$ konstruiere die DTM $M_\varphi$, die (unabhängig von ihrer Eingabe) alle Belegungen der Variablen von $\varphi$ systematisch aufzählt, jede auswertet und \emph{hält}, sobald eine erfüllende gefunden ist -- sonst läuft sie endlos weiter. Gib $\langle M_\varphi, \varepsilon \rangle$ aus. \textbf{Korrektheit:} Ist $\varphi$ erfüllbar, erreicht die Aufzählung eine erfüllende Belegung und $M_\varphi$ hält. Ist $\varphi$ unerfüllbar, hält $M_\varphi$ nie. Also $\varphi \in \problem{SAT} \iff \langle M_\varphi, \varepsilon\rangle \in \mathrm{HALT}_{\mathrm{TM}}$. \textbf{Laufzeit:} $M_\varphi$ läuft womöglich ewig -- aber die \emph{Konstruktion} von $\langle M_\varphi, \varepsilon\rangle$ aus $\varphi$ ist polynomiell (Formel plus feste Schleifen-Schablone), und nur darauf kommt es an. Da \problem{SAT} NP-schwer ist und $\problem{SAT} \redp \mathrm{HALT}_{\mathrm{TM}}$ gilt, ist $\mathrm{HALT}_{\mathrm{TM}}$ NP-schwer. \hfill$\square$ \bspkopf{A12 -- HALT$_{\text{TM}}$ NP-schwer} \textbf{Reduktion.} \problem{SAT} $\redp \mathrm{HALT}_{\mathrm{TM}}$: zu einer Formel $\varphi$ baue die DTM $M_\varphi$, die alle Belegungen von $\varphi$ systematisch aufzählt, jede auswertet und \emph{hält}, sobald eine erfüllende gefunden ist -- sonst läuft sie ewig. Ausgabe $\langle M_\varphi,\varepsilon \rangle$. \medskip \textbf{Ja-Instanz.} $\varphi=(x_1\vee x_2)\wedge(\neg x_1)$ ist erfüllbar. $M_\varphi$ zählt auf: $x_1x_2=00$ gibt $C_1=(0\vee 0)=\false$; $x_1x_2=01$ gibt $(0\vee 1)=\true$ und $(\neg 0)=\true$ -- beide Klauseln wahr, also hält $M_\varphi$ hier. Damit $\langle M_\varphi,\varepsilon\rangle\in \mathrm{HALT}_{\mathrm{TM}}$: die Bildinstanz bleibt \textbf{Ja}. \medskip \textbf{Nein-Instanz.} $\varphi=(x_1)\wedge(\neg x_1)$ ist unerfüllbar: $x_1=0$ scheitert an der Klausel $(x_1)$, $x_1=1$ an $(\neg x_1)$. $M_\varphi$ findet nie eine erfüllende Belegung und hält nie, also $\langle M_\varphi,\varepsilon\rangle\notin\mathrm{HALT}_{\mathrm{TM}}$: die Bildinstanz bleibt \textbf{Nein}. \medskip \textbf{Pointe.} Obwohl $M_\varphi$ selbst womöglich \emph{nie} hält, ist die \emph{Konstruktion} des Paars $\langle M_\varphi,\varepsilon\rangle$ aus $\varphi$ (Formel plus feste Schleifen-Schablone) in Polynomialzeit möglich -- und nur darauf kommt es bei der Reduktion an. \newpage % ################################################################## \section{ETH-Schranken} % ################################################################## % ================================================================== \katkopf{Lower Bounds: VertexCover}{Hausaufgabe 12.1, 5 P.} Betrachten Sie die Reduktion $\problem{Clique} \redp \problem{VertexCover}$ (Komplementgraph, $k' = n-k$). \begin{enumerate} \item Geben Sie $|V'|$, $|E'|$ und $k'$ in Abhängigkeit der Clique-Instanz an. \item Zeigen Sie Lower Bounds für \problem{VertexCover} bzgl.\ $|V'|$, $|E'|$ und $k'$ basierend auf der ETH. \end{enumerate} \emph{Hinweis:} Unter der ETH ist \problem{Clique} nicht in $2^{o(|V|)} \cdot |I|^{O(1)}$ lösbar (Vorlesung). \lsg \textbf{1.} $|V'| = |V|$,\quad $|E'| = \tfrac12|V|(|V|-1) - |E| \le |V|^2$,\quad $k' = |V| - k \le |V|$. \begin{center} \begin{tikzpicture}[ pbox/.style={draw,rounded corners,minimum height=6mm,inner sep=5pt,font=\small}, plab/.style={font=\scriptsize,align=center}, blab/.style={font=\scriptsize,align=center,text=black!60}] \node[pbox] (cl) at (0,0) {\problem{Clique} $(G,k)$}; \node[pbox] (vc) at (7.8,0) {\problem{VertexCover} $(\bar G,k')$}; \draw[->] (cl) -- node[above,plab,yshift=0.5mm] {Komplementgraph:\\ $|V'|{=}|V|$, $|E'|\le|V|^2$,\\ $k'{=}|V|{-}k\le|V|$} (vc); \node[blab,anchor=east] at (-1.55,0) {ETH:\\ kein $2^{o(|V|)}$}; \node[blab,anchor=south] at (7.8,0.45) {kein $2^{o(|V'|)}$, kein $2^{o(\sqrt{|E'|})}$,\\ kein $2^{o(k')}$}; \draw[->,dashed] (vc.south) .. controls (6.5,-2.2) and (1.3,-2.2) .. (cl.south); \node[plab] at (3.9,-2.4) {Kontraposition: \problem{VertexCover} in $2^{o(|V'|)}$/$2^{o(\sqrt{|E'|})}$/$2^{o(k')}$\\ $\Rightarrow$ \problem{Clique} in $2^{o(|V|)}\cdot|I|^{O(1)}$ $\Rightarrow$ ETH verletzt}; \end{tikzpicture} \end{center} \textbf{2.} Für \problem{Clique} gilt unter der ETH: kein $2^{o(|V|)} \cdot |I|^{O(1)}$-Algorithmus. \begin{itemize} \item \textbf{Bzgl.\ $|V'|$:} Angenommen, \problem{VertexCover} wäre in $2^{o(|V'|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|V'| = |V|$ ergäbe Reduktion $+$ Algorithmus einen $2^{o(|V|)}$-Algorithmus für \problem{Clique} -- nur möglich, wenn die ETH falsch ist. \item \textbf{Bzgl.\ $|E'|$:} Angenommen, \problem{VertexCover} wäre in $2^{o(\sqrt{|E'|})} \cdot |I|^{O(1)}$ lösbar. Wegen $|E'| \le |V|^2$ ist $\sqrt{|E'|} = O(|V|)$ -- es ergäbe sich ein $2^{o(|V|)}$-Algorithmus für \problem{Clique}. Widerspruch zur ETH. \item \textbf{Bzgl.\ $k'$:} Angenommen, \problem{VertexCover} wäre in $2^{o(k')} \cdot |I|^{O(1)}$ lösbar. Wegen $k' \le |V|$ ergäbe sich ein $2^{o(|V|)}$-Algorithmus für \problem{Clique}. Widerspruch zur ETH. \end{itemize} \hfill$\square$ \bspkopf{A35 -- Lower Bounds VertexCover: konkrete Zahlen} Wir setzen eine kleine \problem{Clique}-Instanz ein: $G$ mit $|V|=5$, $|E|=6$, gesucht $k=3$. Die Reduktion bildet den Komplementgraphen $\bar G$ und setzt $k'=|V|-k$. \smallskip \textbf{Parameter der VC-Instanz $(\bar G,k')$:} \[ |V'| = |V| = 5,\qquad |E'| = \tbinom{5}{2}-|E| = 10-6 = 4,\qquad k' = |V|-k = 5-3 = 2. \] \textbf{Kontrapositions-Schluss.} Ein zu schneller VC-Löser ergäbe via dieser Reduktion einen zu schnellen \problem{Clique}-Löser -- und $2^{o(|V|)}$ ist für \problem{Clique} unter der ETH verboten: \begin{itemize} \item $|V'|=|V|=5$: Ein $2^{o(|V'|)}$-Löser wäre ein $2^{o(5)}=2^{o(|V|)}$-Löser für \problem{Clique}. Also \emph{kein} $2^{o(|V'|)}$. \item $\sqrt{|E'|}=\sqrt 4 = 2 = O(|V|)$: Ein $2^{o(\sqrt{|E'|})}$-Löser wäre ein $2^{o(|V|)}$-Löser für \problem{Clique}. Also \emph{kein} $2^{o(\sqrt{|E'|})}$. \item $k'=2\le|V|=5$: Ein $2^{o(k')}$-Löser wäre ein $2^{o(|V|)}$-Löser für \problem{Clique}. Also \emph{kein} $2^{o(k')}$. \end{itemize} Alle drei Schranken für \problem{VertexCover} folgen aus dem einen verbotenen $2^{o(|V|)}$-Algorithmus für \problem{Clique}. \newpage % ================================================================== \katkopf{Lower Bounds: HittingSet}{Hausaufgabe 12.2 / Klausur SS23-H A6a, 5 bzw.\ 7 P.} Reduktion $\problem{3-SAT} \redp \problem{HittingSet}$: $U = \{x_1, \bar x_1, \dots, x_n, \bar x_n\}$; $F_i = \{x_i, \bar x_i\}$ pro Variable; $F_{n+j} = C_j$ pro Klausel; $k = n$. \begin{enumerate} \item Geben Sie $|U|$, $r$ und $k$ in Abhängigkeit von $n$ und $m$ an. \item Beweisen Sie Lower Bounds bzgl.\ $|U|$, $r$ und $k$ unter der ETH. \end{enumerate} \emph{Hinweis:} Unter der ETH ist \problem{3-SAT} nicht in $2^{o(n)} \cdot |I|^{O(1)}$ lösbar; mit dem Sparsification-Lemma auch nicht in $2^{o(m)} \cdot |I|^{O(1)}$. Für 3-SAT-Formeln gilt $n \le 3m$. \lsg \textbf{1.} $|U| = 2n$,\quad $r = n + m$,\quad $k = n$. \begin{center} \begin{tikzpicture}[ plab/.style={font=\scriptsize,align=center}, cbox/.style={draw,rounded corners,inner sep=4pt,font=\small}] \foreach \y/\l in {5.0/{x_1}, 4.3/{\bar x_1}, 3.3/{x_2}, 2.6/{\bar x_2}, 1.6/{x_3}, 0.9/{\bar x_3}} { \fill (0,\y) circle (1.6pt); \node[left,font=\small] at (-0.55,\y) {$\l$}; } \foreach \yc/\i in {4.65/1, 2.95/2, 1.25/3} { \draw[black!60] (0,\yc) ellipse (0.42 and 0.62); \node[left,plab,text=black!60] at (-1.25,\yc) {$F_\i$}; } \node[plab,anchor=west] at (-2.6,5.7) {$U=\{x_1,\bar x_1,\dots\}$,\ $|U|=2n$}; \node[cbox] (c1) at (4.3,4.0) {$F_{n+1}=C_1$}; \node[cbox] (c2) at (4.3,1.7) {$F_{n+2}=C_2$}; \draw[black!60] (c1.west) -- (0.12,5.0); \draw[black!60] (c1.west) -- (0.45,2.6); \draw[black!60] (c1.west) -- (0.12,1.6); \draw[black!60] (c2.west) -- (0.12,4.3); \draw[black!60] (c2.west) -- (0.45,3.3); \draw[black!60] (c2.west) -- (0.12,0.9); \node[plab,anchor=west] at (2.6,5.7) {$C_1=(x_1\vee\bar x_2\vee x_3)$,\ $C_2=(\bar x_1\vee x_2\vee\bar x_3)$}; \node[plab,anchor=west] at (6.6,3.5) {$|U| = 2n$\\[2pt] $r = n+m$ Mengen\\[2pt] $k = n$}; \node[plab,anchor=west,text=black!60] at (6.6,2.2) {kein $2^{o(|U|)}$, kein $2^{o(r)}$,\\ kein $2^{o(k)}$}; \end{tikzpicture} \end{center} \textbf{2.} \begin{itemize} \item \textbf{Bzgl.\ $|U|$:} Angenommen, \problem{HittingSet} wäre in $2^{o(|U|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|U| = 2n$ ergäbe Reduktion $+$ Algorithmus einen $2^{o(n)}$-Algorithmus für \problem{3-SAT} -- direkter Widerspruch zur ETH. \item \textbf{Bzgl.\ $r$:} Angenommen, \problem{HittingSet} wäre in $2^{o(r)} \cdot |I|^{O(1)}$ lösbar. Wegen $r = n + m$ und $n \le 3m$ ist $r = O(m)$ -- es ergäbe sich ein $2^{o(m)}$-Algorithmus für \problem{3-SAT}. Nach dem \textbf{Sparsification-Lemma} geht das nur, wenn die ETH falsch ist. \item \textbf{Bzgl.\ $k$:} Angenommen, \problem{HittingSet} wäre in $2^{o(k)} \cdot |I|^{O(1)}$ lösbar. Wegen $k = n$ ergäbe sich ein $2^{o(n)}$-Algorithmus für \problem{3-SAT} -- direkter Widerspruch zur ETH. \end{itemize} \hfill$\square$ \bspkopf{A36 -- Lower Bounds HittingSet: konkrete Instanz} Wir setzen die 3-SAT-Formel mit $n=3$, $m=2$ ein: \[ C_1 = (x_1 \vee \bar x_2 \vee x_3),\qquad C_2 = (\bar x_1 \vee x_2 \vee \bar x_3). \] Die Reduktion liefert die \problem{HittingSet}-Instanz $U=\{x_1,\bar x_1,x_2,\bar x_2,x_3,\bar x_3\}$ mit den Mengen $F_i=\{x_i,\bar x_i\}$ (pro Variable) und $F_{n+j}=C_j$ (pro Klausel), $k=n$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, cbox/.style={draw,rounded corners,inner sep=3pt,font=\small}] \foreach \y/\l in {4.5/{x_1},3.9/{\bar x_1},3.0/{x_2},2.4/{\bar x_2},1.5/{x_3},0.9/{\bar x_3}} { \fill (0,\y) circle (1.6pt); \node[left,font=\small] at (-0.5,\y) {$\l$}; } \foreach \yc/\i in {4.2/1,2.7/2,1.2/3} { \draw[black!60] (0,\yc) ellipse (0.38 and 0.55); \node[left,plab,text=black!60] at (-1.15,\yc) {$F_\i$}; } \node[cbox] (c1) at (3.4,3.6) {$F_4=C_1$}; \node[cbox] (c2) at (3.4,1.5) {$F_5=C_2$}; \draw[black!60] (c1.west) -- (0.1,4.5); \draw[black!60] (c1.west) -- (0.1,2.4); \draw[black!60] (c1.west) -- (0.1,1.5); \draw[black!60] (c2.west) -- (0.1,3.9); \draw[black!60] (c2.west) -- (0.1,3.0); \draw[black!60] (c2.west) -- (0.1,0.9); \node[plab,anchor=west] at (5.0,2.7) {$|U|=2n=6$\\[3pt] $r=n+m=5$ Mengen\\[3pt] $k=n=3$}; \end{tikzpicture} \end{center} \textbf{Kontrapositions-Schluss} (ETH: \problem{3-SAT} nicht in $2^{o(n)}$; mit Sparsification auch nicht in $2^{o(m)}$; $n\le 3m$): \begin{itemize} \item $|U|=2n=6$: Ein $2^{o(|U|)}$-Löser wäre ein $2^{o(2n)}=2^{o(n)}$-Löser für \problem{3-SAT} -- direkter ETH-Verstoß. Kein $2^{o(|U|)}$. \item $r=n+m=5$: Wegen $n\le 3m$ ist $r=O(m)$; ein $2^{o(r)}$-Löser wäre ein $2^{o(m)}$-Löser -- Verstoß laut Sparsification-Lemma. Kein $2^{o(r)}$. \item $k=n=3$: Ein $2^{o(k)}$-Löser wäre ein $2^{o(n)}$-Löser -- direkter ETH-Verstoß. Kein $2^{o(k)}$. \end{itemize} \newpage % ================================================================== \katkopf{Lower Bounds entlang der Reduktionskette}{Präsenz 12.1} Welche Lower Bounds ergeben sich unter der ETH (mit Sparsification-Lemma) aus den Reduktionen (1) $\problem{3-SAT} \redp k\text{-}\problem{Clique}$, (2) $k\text{-}\problem{Clique} \redp k\text{-}\problem{IS}$ (Komplementgraph), (3) $\problem{SAT} \redp \problem{3-DM}$, (4) $\problem{3-DM} \redp \problem{3-EC}$, (5) $\problem{3-EC} \redp \problem{SubsetSum}$? Schätzen Sie zuerst die Parameter der jeweils erzeugten Instanz ab. \lsg Unter der ETH ist \problem{3-SAT} nicht in $2^{o(m)} \cdot |I|^{O(1)}$ lösbar (Sparsification-Lemma). \textbf{(1)} Erzeugt $|V| = O(m)$, $|E| = O(m^2)$, $k = m$. Ein $2^{o(|V|)}$-, $2^{o(\sqrt{|E|})}$- oder $2^{o(k)}$-Algorithmus für \problem{Clique} ergäbe jeweils $2^{o(m)}$ für \problem{3-SAT} -- Widerspruch. Bounds: kein $2^{o(|V|)}$, kein $2^{o(\sqrt{|E|})}$, kein $2^{o(k)}$. \textbf{(2)} Erzeugt $|V'| = |V|$, $|E'| \le |V|^2$. Ein zu schneller \problem{IS}-Algorithmus ergäbe via Komplementbildung denselben für \problem{Clique}. Bounds: kein $2^{o(|V'|)}$, kein $2^{o(\sqrt{|E'|})}$. \textbf{(3)} Erzeugt $|U| = |V| = |W| = O(mn) \subseteq O(m^2)$ und $|T| = O(m^2 n^2) \subseteq O(m^4)$ (angewandt auf 3-SAT-Instanzen). Ein $2^{o(\sqrt{|V|})}$-Algorithmus ergäbe $2^{o(m)}$ für \problem{3-SAT}; ebenso ein $2^{o(\sqrt[4]{|T|})}$-Algorithmus. Bounds: kein $2^{o(\sqrt{|V|})}$, kein $2^{o(\sqrt[4]{|T|})}$. \textbf{(4)} 3-DM ist Spezialfall von 3-EC mit $|U| = O(|V|)$ und $|F| = |T|$. Die Bounds übertragen sich: kein $2^{o(\sqrt{|U|})}$, kein $2^{o(\sqrt[4]{|F|})}$. \textbf{(5)} Erzeugt $n_{\text{Items}} = |F|$. Ein $2^{o(\sqrt[4]{n})}$-Algorithmus für \problem{SubsetSum} ergäbe $2^{o(\sqrt[4]{|F|})}$ für \problem{3-EC} -- nach (4) verboten. Bound: kein $2^{o(\sqrt[4]{n})}$. \hfill$\square$ \begin{center} \begin{tikzpicture}[ pbox/.style={draw,rounded corners,minimum height=6mm,inner sep=4pt,font=\small}, plab/.style={font=\scriptsize,align=center}, blab/.style={font=\scriptsize,align=center,text=black!60}] \node[pbox] (sat) at (1.0,0) {\problem{3-SAT}}; \node[pbox] (cli) at (5.4,0) {$k$-\problem{Clique}}; \node[pbox] (is) at (10.6,0) {$k$-\problem{IS}}; \draw[->] (sat) -- node[below,plab] {(1)\quad $|V|{=}O(m)$\\ $|E|{=}O(m^2)$, $k{=}m$} (cli); \draw[->] (cli) -- node[below,plab] {(2) Komplement\\ $|V'|{=}|V|$, $|E'|\le|V|^2$} (is); \node[blab,anchor=north] at (1.0,-1.0) {ETH + Sparsif.:\\ kein $2^{o(m)}$}; \node[blab,anchor=north] at (5.4,-1.0) {kein $2^{o(|V|)}$, kein $2^{o(\sqrt{|E|})}$,\\ kein $2^{o(k)}$}; \node[blab,anchor=north] at (10.6,-1.0) {kein $2^{o(|V'|)}$,\\ kein $2^{o(\sqrt{|E'|})}$}; \node[pbox] (dm) at (4.4,-3.3) {\problem{3-DM}}; \node[pbox] (ec) at (7.9,-3.3) {\problem{3-EC}}; \node[pbox] (ss) at (11.4,-3.3) {\problem{SubsetSum}}; \draw[->] (sat.west) -- ++(-0.55,0) |- (dm.west); \node[plab,anchor=south west] at (0.1,-3.2) {(3) \problem{SAT} $\redp$ \problem{3-DM}, auf 3-SAT:\\ $|U|{=}|V|{=}|W|{=}O(m^2)$,\\ $|T|{=}O(m^4)$}; \draw[->] (dm) -- node[below,plab] {(4) Spezialfall\\ $|U|{=}O(|V|)$, $|F|{=}|T|$} (ec); \draw[->] (ec) -- node[below,plab] {(5)\\ $n_{\text{Items}}{=}|F|$} (ss); \node[blab,anchor=north] at (4.4,-4.3) {kein $2^{o(\sqrt{|V|})}$,\\ kein $2^{o(\sqrt[4]{|T|})}$}; \node[blab,anchor=north] at (7.9,-4.3) {kein $2^{o(\sqrt{|U|})}$,\\ kein $2^{o(\sqrt[4]{|F|})}$}; \node[blab,anchor=north] at (11.4,-4.3) {kein $2^{o(\sqrt[4]{n})}$}; \end{tikzpicture} \end{center} \bspkopf{A37 -- Lower Bounds entlang der Kette: $m=4$ durchpropagiert} Wir starten mit einer \problem{3-SAT}-Formel mit $m=4$ Klauseln (unter der ETH mit Sparsification kein $2^{o(m)}=2^{o(4)}$-Löser) und verfolgen die von den Reduktionen erzeugten Instanzgrößen. Zur Illustration setzen wir die $O$-Schranken als konkrete Werte an ($|V|=3m$ usw.): \smallskip \begin{center}\small \begin{tabular}{l l l} \toprule Schritt & erzeugte Instanz & Größen bei $m=4$ \\ \midrule (1) $\problem{3-SAT}\redp k\text{-}\problem{Clique}$ & $|V|=O(m),\ |E|=O(m^2),\ k=m$ & $|V|=12,\ |E|=16,\ k=4$ \\ (3) $\problem{SAT}\redp\problem{3-DM}$ & $|U|=O(m^2),\ |T|=O(m^4)$ & $|U|=16,\ |T|=256$ \\ (4) $\problem{3-DM}\redp\problem{3-EC}$ & $|U|=O(|V|),\ |F|=|T|$ & $|U|=16,\ |F|=256$ \\ (5) $\problem{3-EC}\redp\problem{SubsetSum}$ & $n_{\text{Items}}=|F|$ & $n=256$ \\ \bottomrule \end{tabular} \end{center} \textbf{Exponenten-Verkettung (Kontraposition).} Ein $2^{o(\sqrt[4]{n})}$-Löser für \problem{SubsetSum} hätte bei $n=256$ den Exponenten $\sqrt[4]{256}=4=m$. Über die Kette: \[ 2^{o(\sqrt[4]{n})}\text{-SubsetSum} \;\Rightarrow\; 2^{o(\sqrt[4]{|F|})}\text{-3-EC} \;\Rightarrow\; 2^{o(\sqrt[4]{|T|})}\text{-3-DM} \;\Rightarrow\; 2^{o(m)}\text{-3-SAT}, \] denn $\sqrt[4]{|T|}=\sqrt[4]{m^4}=m$. Ein $2^{o(m)}$-Löser für \problem{3-SAT} ist unter der ETH (Sparsification) verboten -- also existiert keiner der Löser in der Kette. Analog liefert Schritt~(1) über $\sqrt{|E|}=\sqrt{m^2}=m$ und $k=m$ die Clique-Schranken kein $2^{o(\sqrt{|E|})}$, kein $2^{o(k)}$. \newpage % ================================================================== \katkopf{Lower Bounds: $k$-Color}{Klausur SS24-H, A5a, 5 P.} Die Reduktion $\problem{3-SAT} \redp k\text{-}\problem{Color}$ erzeugt $V = \{x_i, \bar x_i, v_i \mid i \in [n]\} \cup \{C_j \mid j \in [m]\} \cup \{z\}$ mit den Kanten des Vorlesungs-Gadgets. Welche Lower Bounds ergeben sich unter der ETH bzgl.\ (i) $|V|$ und (ii) $|E|$? \emph{Hinweis:} Mit dem Sparsification-Lemma ist \problem{3-SAT} unter der ETH nicht in $2^{o(m)} \cdot |I|^{O(1)}$ lösbar; für 3-SAT-Formeln gilt $n \le 3m$. \lsg \textbf{Parameter:} $|V| = 3n + m + 1$; wegen $n \le 3m$ gilt $|V| = O(m)$. Für die Kanten: $v_i$-Clique und $v_i$-Literal-Kanten $O(n^2)$, Variablen-Kanten $O(n)$, Klausel-Kanten $O(nm)$, $z$-Kanten $O(n+m)$ -- insgesamt $|E| = O(n^2 + nm + m) = O(m^2)$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}] \node[kndick] (v1) at (3.2,4.6) {$v_1$}; \node[kndick] (v2) at (5.2,4.6) {$v_2$}; \node[kndick] (v3) at (4.2,5.8) {$v_3$}; \draw (v1) -- (v2); \draw (v2) -- (v3); \draw (v1) -- (v3); \node[plab] at (1.4,5.5) {Palette $v_1,\dots,v_n$:\\ Clique}; \node[knoten] (x1) at (0.6,2.6) {$x_1$}; \node[knoten] (nx1) at (1.8,2.6) {$\bar x_1$}; \node[knoten] (x2) at (3.6,2.6) {$x_2$}; \node[knoten] (nx2) at (4.8,2.6) {$\bar x_2$}; \node[knoten] (x3) at (6.6,2.6) {$x_3$}; \node[knoten] (nx3) at (7.8,2.6) {$\bar x_3$}; \draw (x1) -- (nx1); \draw (x2) -- (nx2); \draw (x3) -- (nx3); \node[plab] at (-0.9,3.3) {Variablen-\\Kanten: $O(n)$}; \draw[black!45] (v1) -- (x2); \draw[black!45] (v1) -- (nx2); \draw[black!45] (v1) -- (x3); \draw[black!45] (v1) -- (nx3); \node[plab,text=black!60] at (7.4,5.9) {$v_i$--Literal ($j\ne i$),\\ nur $v_1$ gezeigt: $O(n^2)$}; \node[knoten] (c1) at (5.6,0.3) {$C_1$}; \draw[black!45] (c1) -- (nx1); \draw[black!45] (c1) -- (x2); \draw[black!45] (c1) -- (nx3); \node[plab,text=black!60] at (8.8,0.9) {Klausel-Kanten:\\ $O(n)$ je Klausel, insg.\ $O(nm)$}; \node[knoten] (z) at (9.0,5.1) {$z$}; \draw[dashed,black!45] (z) -- (v2); \draw[dashed,black!45] (z) -- (c1); \node[plab,text=black!60] at (10.0,4.4) {$z$-Kanten:\\ $O(n+m)$}; \node[plab] at (4.2,-1.1) {schematisch --- $|V| = 3n+m+1 = O(m)$, \ $|E| = O(n^2+nm+m) = O(m^2)$ \ $\Rightarrow$\ kein $2^{o(|V|)}$, kein $2^{o(\sqrt{|E|})}$}; \end{tikzpicture} \end{center} \textbf{(i)} Angenommen, $k$-\problem{Color} wäre in $2^{o(|V|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|V| = O(m)$ ergäbe sich ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem Sparsification-Lemma nur möglich, wenn die ETH falsch ist. Bound: kein $2^{o(|V|)}$. \textbf{(ii)} Angenommen, $k$-\problem{Color} wäre in $2^{o(\sqrt{|E|})} \cdot |I|^{O(1)}$ lösbar. Wegen $|E| = O(m^2)$ ist $\sqrt{|E|} = O(m)$ -- es ergäbe sich ein $2^{o(m)}$-Algorithmus für \problem{3-SAT}. Widerspruch (Sparsification-Lemma). Bound: kein $2^{o(\sqrt{|E|})}$. \hfill$\square$ \bspkopf{A38 -- Lower Bounds $k$-Color: konkrete Zahlen} Wir setzen $n=3$, $m=2$ ein. Die Reduktion erzeugt die Knotenmenge $V=\{x_i,\bar x_i,v_i \mid i\in[3]\}\cup\{C_1,C_2\}\cup\{z\}$: \[ |V| = 3n+m+1 = 9+2+1 = 12. \] Die Kanten, Gruppe für Gruppe gezählt: \begin{itemize} \item $v$-Clique: $\binom{3}{2} = 3$; \item $v_i$--Literal-Kanten ($v_i$ zu $x_j, \bar x_j$ für $j \ne i$): $3 \cdot 2 \cdot 2 = 12$; \item Variablen-Kanten $x_i$--$\bar x_i$: $3$; \item Klausel-Kanten ($C_j$ zu seinen $\le 3$ Literalen): $2 \cdot 3 = 6$; \item $z$-Kanten (zu allen $v_i$ und $C_j$): $3 + 2 = 5$. \end{itemize} Zusammen $|E| = 3+12+3+6+5 = 29$, also $\sqrt{|E|} = \sqrt{29} \approx 5{,}4$. Wegen $n\le 3m$ (hier $3\le 6$) sind $|V| = O(m)$ und $\sqrt{|E|} = O(m)$. \textbf{Kontrapositions-Schluss} (ETH mit Sparsification: kein $2^{o(m)}$ für \problem{3-SAT}): \begin{itemize} \item $|V|=12=O(m)$: Ein $2^{o(|V|)}$-Löser für $k$-\problem{Color} wäre ein $2^{o(m)}$-Löser für \problem{3-SAT} -- Sparsification-Verstoß. Kein $2^{o(|V|)}$. \item $\sqrt{|E|}=\sqrt{29}=O(m)$: Ein $2^{o(\sqrt{|E|})}$-Löser wäre ebenso ein $2^{o(m)}$-Löser für \problem{3-SAT} -- Verstoß. Kein $2^{o(\sqrt{|E|})}$. \end{itemize} Beide Schranken folgen aus dem verbotenen $2^{o(m)}$-Algorithmus für \problem{3-SAT}. \newpage % ================================================================== \katkopf{Lower Bounds: $2\,|\,\mathrm{prec}, p_i \in \{1,2\}\,|\,C_{\max}$}{Klausur SS24-H, A5b, 5 P.} Reduktion von $k$-\problem{Clique}: $n = 4|V| + 3|E|$ Jobs (Knoten-Jobs $p = 1$, Kanten-Jobs $p = 2$, Dummy-Jobs $p = 1$), Präzedenzen $(J_i, J_{\{i,j\}})$, Makespan $T = 2|V| + 2|E|$. Nutzen Sie die bekannten Clique-Bounds (zusammenhängender Graph): kein $2^{o(|V|)}$, kein $2^{o(\sqrt{|E|})}$. Welche Lower Bounds ergeben sich bzgl.\ (i) $n$ und (ii) $T$? \lsg \textbf{Parameter:} Da der Clique-Graph zusammenhängend ist, gilt $|V| \le |E| + 1$, also $n = 4|V| + 3|E| = O(|E|)$ und ebenso $T = 2|V| + 2|E| = O(|E|)$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, kjob/.style={draw,rectangle,minimum width=9mm,minimum height=6mm}] \node[knoten] (j1) at (0,2.2) {$J_1$}; \node[knoten] (j2) at (2.2,2.2) {$J_2$}; \node[knoten] (j3) at (4.4,2.2) {$J_3$}; \node[kjob] (j12) at (1.1,0.4) {$J_{\{1,2\}}$}; \node[kjob] (j23) at (3.3,0.4) {$J_{\{2,3\}}$}; \draw[->] (j1) -- (j12); \draw[->] (j2) -- (j12); \draw[->] (j2) -- (j23); \draw[->] (j3) -- (j23); \node[plab,anchor=west] at (5.6,2.4) {$\circ$ Knoten-Job je $v\in V$: $p=1$\\[1pt] $\square$ Kanten-Job je $e\in E$: $p=2$,\\ Vorgänger $J_i \to J_{\{i,j\}}$\\[1pt] dazu Dummy-Jobs ($p=1$)}; \node[plab,anchor=west] at (5.6,0.6) {$n = 4|V|+3|E| = O(|E|)$\\[1pt] $T = 2|V|+2|E| = O(|E|)$}; \node[plab,anchor=west,text=black!60] at (5.6,-0.4) {kein $2^{o(\sqrt{n})}$, kein $2^{o(\sqrt{T})}$}; \end{tikzpicture} \end{center} \textbf{(i)} Angenommen, das Scheduling-Problem wäre in $2^{o(\sqrt{n})} \cdot |I|^{O(1)}$ lösbar. Wegen $n = O(|E|)$ ist $\sqrt{n} = O(\sqrt{|E|})$ -- Reduktion $+$ Algorithmus ergäben einen $2^{o(\sqrt{|E|})}$-Algorithmus für \problem{Clique}, den es unter der ETH nicht gibt. Bound: kein $2^{o(\sqrt{n})}$. \textbf{(ii)} Analog mit $T = O(|E|)$: Ein $2^{o(\sqrt{T})}$-Algorithmus ergäbe $2^{o(\sqrt{|E|})}$ für \problem{Clique}. Bound: kein $2^{o(\sqrt{T})}$. \hfill$\square$ \bspkopf{A39 -- Lower Bounds Scheduling: Dreieck einsetzen} Als \problem{Clique}-Instanz nehmen wir den Dreiecksgraphen $K_3$: $|V|=3$, $|E|=3$ (zusammenhängend). Die Reduktion erzeugt \[ n = 4|V|+3|E| = 12+9 = 21 \text{ Jobs},\qquad T = 2|V|+2|E| = 6+6 = 12 \text{ (Makespan)}. \] Da der Graph zusammenhängend ist ($|V|\le|E|+1$), wachsen $n=4|V|+3|E|$ und $T=2|V|+2|E|$ in der Reduktionsfamilie nur \emph{linear} in $|E|$; an dieser Instanz: $n=21$, $T=12$ bei $|E|=3$. \textbf{Kontrapositions-Schluss} (Clique-Bounds für zusammenhängende Graphen: kein $2^{o(|V|)}$, kein $2^{o(\sqrt{|E|})}$): \begin{itemize} \item $\sqrt{n}=O(\sqrt{|E|})$: Ein $2^{o(\sqrt n)}$-Scheduler wäre via Reduktion ein $2^{o(\sqrt{|E|})}$-Löser für \problem{Clique} -- ETH-Verstoß. Kein $2^{o(\sqrt n)}$. \item $\sqrt{T}=O(\sqrt{|E|})$: analog ergäbe ein $2^{o(\sqrt T)}$-Scheduler einen $2^{o(\sqrt{|E|})}$-Löser für \problem{Clique}. Kein $2^{o(\sqrt T)}$. \end{itemize} Ohne Wurzel (also kein $2^{o(n)}$, kein $2^{o(T)}$) folgt \emph{nichts}: die Clique-Schranke ist selbst nur $2^{o(\sqrt{|E|})}$, und $n,T=O(|E|)$ liefern nur $\sqrt n,\sqrt T=O(\sqrt{|E|})$. \newpage % ================================================================== \katkopf{Lower Bounds: DominatingSet}{Klausur SS24-N, A5a, 5 P.} Reduktion $\problem{3-SAT} \redp \problem{DominatingSet}$: pro Variable die Knoten $x_i, \bar x_i, d_i$ mit Dreieckskanten; pro Klausel ein Knoten $C_j$ mit Kanten zu seinen Literalen. Welche Lower Bounds ergeben sich unter der ETH bzgl.\ (i) $|V|$ und (ii) $|E|$? \emph{Hinweis:} Mit dem Sparsification-Lemma ist \problem{3-SAT} unter der ETH nicht in $2^{o(m)} \cdot |I|^{O(1)}$ lösbar; für 3-SAT-Formeln gilt $n \le 3m$. \lsg \textbf{Parameter:} $|V| = 3n + m$; wegen $n \le 3m$ gilt $|V| = O(m)$. Kanten: $3n$ Dreieckskanten plus höchstens $3m$ Klausel-Literal-Kanten (je Klausel $\le 3$ Literale), also $|E| = 3n + 3m = O(m)$ -- \emph{linear} in $m$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}] \foreach \i/\xs in {1/0, 2/2.8, 3/5.6} { \node[knoten] (x\i) at (\xs,1.0) {$x_\i$}; \node[knoten] (nx\i) at (\xs+1.4,1.0) {$\bar x_\i$}; \node[knoten] (d\i) at (\xs+0.7,2.3) {$d_\i$}; \draw (x\i) -- (nx\i); \draw (x\i) -- (d\i); \draw (nx\i) -- (d\i); } \node[knoten] (c1) at (2.1,-0.9) {$C_1$}; \node[knoten] (c2) at (4.9,-0.9) {$C_2$}; \draw[black!60] (c1) -- (x1); \draw[black!60] (c1) -- (nx2); \draw[black!60] (c1) -- (x3); \draw[black!60] (c2) -- (nx1); \draw[black!60] (c2) -- (x2); \draw[black!60] (c2) -- (nx3); \node[plab,anchor=west] at (7.6,2.2) {je Variable: Dreieck $x_i,\bar x_i,d_i$\\[1pt] je Klausel: $C_j$ --- Kanten zu\\ ihren $\le 3$ Literalen}; \node[plab,anchor=west] at (7.6,0.9) {$|V| = 3n+m = O(m)$\\[1pt] $|E| = 3n+3m = O(m)$ (linear!)}; \node[plab,anchor=west,text=black!60] at (7.6,-0.2) {kein $2^{o(|V|)}$,\\ kein $2^{o(|E|)}$ (ohne Wurzel)}; \node[plab] at (3.5,-1.9) {$C_1=(x_1\vee\bar x_2\vee x_3)$, $C_2=(\bar x_1\vee x_2\vee\bar x_3)$}; \end{tikzpicture} \end{center} \textbf{(i)} Angenommen, \problem{DominatingSet} wäre in $2^{o(|V|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|V| = O(m)$ ergäbe sich ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem Sparsification-Lemma Widerspruch zur ETH. Bound: kein $2^{o(|V|)}$. \textbf{(ii)} Angenommen, \problem{DominatingSet} wäre in $2^{o(|E|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|E| = O(m)$ ergäbe sich ebenfalls ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- Widerspruch (Sparsification-Lemma). Bound: kein $2^{o(|E|)}$ (hier ohne Wurzel, da die Kantenzahl nur linear wächst). \hfill$\square$ \bspkopf{A40 -- Lower Bounds DominatingSet: konkrete Instanz} Wir setzen $n=3$, $m=2$ ein, mit $C_1=(x_1\vee\bar x_2\vee x_3)$, $C_2=(\bar x_1\vee x_2\vee\bar x_3)$. Pro Variable ein Dreieck $x_i,\bar x_i,d_i$; pro Klausel ein Knoten $C_j$ mit Kanten zu seinen Literalen. \[ |V| = 3n+m = 9+2 = 11,\qquad |E| = 3n+3m = 9+6 = 15\ \ (\text{linear in }m!). \] \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}] \foreach \i/\xs in {1/0,2/2.8,3/5.6} { \node[knoten] (x\i) at (\xs,1.0) {$x_\i$}; \node[knoten] (nx\i) at (\xs+1.3,1.0) {$\bar x_\i$}; \node[knoten] (d\i) at (\xs+0.65,2.2) {$d_\i$}; \draw (x\i)--(nx\i); \draw (x\i)--(d\i); \draw (nx\i)--(d\i); } \node[knoten] (c1) at (2.0,-0.7) {$C_1$}; \node[knoten] (c2) at (4.6,-0.7) {$C_2$}; \draw[black!60] (c1)--(x1); \draw[black!60] (c1)--(nx2); \draw[black!60] (c1)--(x3); \draw[black!60] (c2)--(nx1); \draw[black!60] (c2)--(x2); \draw[black!60] (c2)--(nx3); \node[plab,anchor=west] at (7.4,1.4) {$|V|=3n+m=11$\\[3pt] $|E|=3n+3m=15$\\ (linear in $m$)}; \end{tikzpicture} \end{center} \textbf{Kontrapositions-Schluss} (ETH mit Sparsification: kein $2^{o(m)}$ für \problem{3-SAT}; $n\le 3m$): \begin{itemize} \item $|V|=11=O(m)$: Ein $2^{o(|V|)}$-Löser für \problem{DominatingSet} wäre ein $2^{o(m)}$-Löser für \problem{3-SAT} -- Verstoß. Kein $2^{o(|V|)}$. \item $|E|=15=O(m)$ \emph{linear}: Ein $2^{o(|E|)}$-Löser (\emph{ohne} Wurzel!) wäre ebenso ein $2^{o(m)}$-Löser -- Verstoß. Kein $2^{o(|E|)}$. \end{itemize} Besonderheit: Weil $|E|$ hier nur linear (statt quadratisch) in $m$ wächst, gilt die Schranke \emph{ohne} Wurzel -- $2^{o(|E|)}$ statt $2^{o(\sqrt{|E|})}$. \newpage % ================================================================== \katkopf{Lower Bounds: GridTiling}{Klausur SS24-N, A5b, 5 P.} Reduktion von \problem{Clique} (mit $c \cdot n \le k \le n$ erlaubt): $S_{i,i} = \{(a,a) \mid a \in V\}$, $S_{i,j} = \{(a,b) \mid a \ne b,\, \{a,b\} \in E\}$ für $i \ne j$; $k$ übernommen. Welche Lower Bounds ergeben sich bzgl.\ (i) $X = \sum_{(i,j)} |S_{i,j}|$ und (ii) $Y = \max_{(i,j)} |S_{i,j}|$? \lsg \textbf{Parameter} (mit $N := |V|$, $k = \Theta(N)$): Diagonale Mengen haben $N$ Tupel, Nebendiagonal-Mengen $2|E| \le N^2$ Tupel. Also $X \le k \cdot N + k^2 \cdot N^2 = O(N^4)$ und $Y \le \max(N,\, N^2) = O(N^2)$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, cell/.style={draw,minimum width=34mm,minimum height=11mm,font=\scriptsize}, dcell/.style={cell,fill=black!8}] \foreach \i in {1,2,3} \foreach \j in {1,2,3} { \ifnum\i=\j \node[dcell] at (3.55*\j,-1.3*\i) {$\{(a,a)\mid a\in V\}$}; \else \node[cell] at (3.55*\j,-1.3*\i) {$\{(a,b)\mid \{a,b\}\in E\}$}; \fi } \foreach \j in {1,2,3} \node[plab] at (3.55*\j,-0.4) {$j=\j$}; \foreach \i in {1,2,3} \node[plab] at (1.4,-1.3*\i) {$i=\i$}; \node[plab] at (7.1,0.25) {$k\times k$ Zellen (hier $k=3$), \ $k$ von \problem{Clique} \"ubernommen, $k=\Theta(N)$, $N=|V|$}; \node[plab] at (7.1,-5.05) {$|S_{i,i}| = N$, \ $|S_{i,j}| = 2|E| \le N^2$ \ $\Rightarrow$ \ $X = \sum_{(i,j)}|S_{i,j}| = O(N^4)$, \ $Y = \max_{(i,j)}|S_{i,j}| = O(N^2)$}; \node[plab,text=black!60] at (7.1,-5.7) {kein $2^{o(\sqrt[4]{X})}$, \ kein $2^{o(\sqrt{Y})}$}; \end{tikzpicture} \end{center} \textbf{(i)} Angenommen, \problem{GridTiling} wäre in $2^{o(\sqrt[4]{X})} \cdot |I|^{O(1)}$ lösbar. Wegen $X = O(N^4)$ ist $\sqrt[4]{X} = O(N)$ -- es ergäbe sich ein $2^{o(N)}$-Algorithmus für \problem{Clique}, den es unter der ETH nicht gibt. Bound: kein $2^{o(\sqrt[4]{X})}$. \textbf{(ii)} Angenommen, \problem{GridTiling} wäre in $2^{o(\sqrt{Y})} \cdot |I|^{O(1)}$ lösbar. Wegen $Y = O(N^2)$ ist $\sqrt{Y} = O(N)$ -- wieder ein $2^{o(N)}$-Algorithmus für \problem{Clique}. Widerspruch. Bound: kein $2^{o(\sqrt{Y})}$. \hfill$\square$ \bspkopf{A41 -- Lower Bounds GridTiling: $3\times3$-Instanz} \problem{Clique}-Instanz: $N=|V|=4$, $|E|=5$, gesucht $k=3$. Die Reduktion baut ein $k\times k=3\times3$-Gitter: Diagonalzellen $S_{i,i}=\{(a,a)\}$ mit $|S_{i,i}|=N=4$, Nebendiagonalzellen $S_{i,j}=\{(a,b):\{a,b\}\in E\}$ mit $|S_{i,j}|=2|E|=10$. \begin{center} \begin{tikzpicture}[ cell/.style={draw,minimum width=13mm,minimum height=10mm,font=\small}, dcell/.style={cell,fill=black!12}] \foreach \i in {1,2,3} \foreach \j in {1,2,3} { \ifnum\i=\j \node[dcell] at (1.5*\j,-1.15*\i) {$4$}; \else \node[cell] at (1.5*\j,-1.15*\i) {$10$}; \fi } \foreach \j in {1,2,3} \node[font=\scriptsize] at (1.5*\j,-0.45) {$j=\j$}; \foreach \i in {1,2,3} \node[font=\scriptsize] at (0.55,-1.15*\i) {$i=\i$}; \node[font=\scriptsize,align=left,anchor=west] at (5.7,-2.3) {grau (Diagonale): $|S_{i,i}|=N=4$\\[3pt] weiß: $|S_{i,j}|=2|E|=10$\\[3pt] $3\times3$-Gitter, $k=3=\Theta(N)$}; \end{tikzpicture} \end{center} \textbf{Parameter:} $X=\sum_{(i,j)}|S_{i,j}| = 3\cdot 4 + 6\cdot 10 = 72 = O(N^4)$ und $Y=\max_{(i,j)}|S_{i,j}| = \max(4,10) = 10 = O(N^2)$. \textbf{Kontrapositions-Schluss} (ETH: kein $2^{o(N)}$ für \problem{Clique}): \begin{itemize} \item $\sqrt[4]{X}=\sqrt[4]{72}\approx 2{,}9 = O(N)$: Ein $2^{o(\sqrt[4]{X})}$-Löser für \problem{GridTiling} wäre ein $2^{o(N)}$-Löser für \problem{Clique} -- ETH-Verstoß. Kein $2^{o(\sqrt[4]{X})}$. \item $\sqrt{Y}=\sqrt{10}\approx 3{,}2 = O(N)$: Ein $2^{o(\sqrt{Y})}$-Löser wäre ebenso ein $2^{o(N)}$-Löser für \problem{Clique}. Kein $2^{o(\sqrt{Y})}$. \end{itemize} \newpage % ================================================================== \katkopf{Lower Bounds: SubsetSum (strenge Reduktion)}{Klausur SS23-H, A6b, 8 P.} Reduktion $\problem{3-SAT} \redp \problem{SubsetSum}$ mit Dezimalziffern: pro Variable zwei Items $a_i, b_i$ ($s = 10^{i-1} + \sum 10^{n+j-1}$ über die Klauseln mit $x_i$ bzw.\ $\bar x_i$), pro Klausel zwei Items $c_j, d_j$ mit $s = 10^{n+j-1}$; Ziel $B = \sum_j 3 \cdot 10^{n+j-1} + \sum_i 10^{i-1}$. Welche Lower Bounds ergeben sich bzgl.\ (i) der Anzahl unterschiedlicher Itemgrößen $d$ und (ii) der Kodierungslänge $L = \log \Delta$ der größten Itemgröße? \emph{Hinweis:} Mit dem Sparsification-Lemma ist \problem{3-SAT} unter der ETH nicht in $2^{o(m)} \cdot |I|^{O(1)}$ lösbar; für 3-SAT-Formeln gilt $n \le 3m$. \lsg \textbf{Parameter:} Es gibt $2n + 2m$ Items; die Klausel-Items $c_j, d_j$ teilen sich je eine Größe, also $d \le 2n + m$. Wegen $n \le 3m$ gilt $d = O(m)$. Die größte Größe ist $\Delta < 10^{n+m+1}$, also $L = \log \Delta = O(n + m) = O(m)$. \begin{center} \small Beispiel $n=3$, $m=2$: \ $\varphi = \underbrace{(x_1\vee x_2\vee x_3)}_{C_1} \wedge \underbrace{(\bar x_1\vee\bar x_2\vee x_3)}_{C_2}$ \smallskip \newcommand{\gz}{\textcolor{black!40}{0}} \begin{tabular}{l c c c c c l} \toprule Item & $10^4$ ($C_2$) & $10^3$ ($C_1$) & $10^2$ ($x_3$) & $10^1$ ($x_2$) & $10^0$ ($x_1$) & \\ \midrule $a_1$ ($x_1$) & \gz & 1 & \gz & \gz & 1 & $10^{0}+10^{3}$ \\ $b_1$ ($\bar x_1$) & 1 & \gz & \gz & \gz & 1 & $10^{0}+10^{4}$ \\ $a_2$ ($x_2$) & \gz & 1 & \gz & 1 & \gz & $10^{1}+10^{3}$ \\ $b_2$ ($\bar x_2$) & 1 & \gz & \gz & 1 & \gz & $10^{1}+10^{4}$ \\ $a_3$ ($x_3$) & 1 & 1 & 1 & \gz & \gz & $10^{2}+10^{3}+10^{4}$ \\ $b_3$ ($\bar x_3$) & \gz & \gz & 1 & \gz & \gz & $10^{2}$ \\ $c_1 = d_1$ & \gz & 1 & \gz & \gz & \gz & $10^{3}$ (je zweimal) \\ $c_2 = d_2$ & 1 & \gz & \gz & \gz & \gz & $10^{4}$ (je zweimal) \\ \midrule $B$ & 3 & 3 & 1 & 1 & 1 & Ziel \\ \bottomrule \end{tabular} \smallskip {\scriptsize $2n+2m$ Items, aber $d \le 2n+m = O(m)$ Größen; $\Delta < 10^{n+m+1}$, also $L = \log\Delta = O(m)$ \ $\Rightarrow$\ \textcolor{black!60}{kein $2^{o(d)}$, kein $2^{o(L)}$}} \end{center} \textbf{(i)} Angenommen, \problem{SubsetSum} wäre in $2^{o(d)} \cdot |I|^{O(1)}$ lösbar. Wegen $d = O(m)$ ergäbe Reduktion $+$ Algorithmus einen $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem Sparsification-Lemma Widerspruch zur ETH. Bound: kein $2^{o(d)}$. \textbf{(ii)} Angenommen, \problem{SubsetSum} wäre in $2^{o(L)} \cdot |I|^{O(1)}$ lösbar. Wegen $L = O(m)$ ergäbe sich ebenso ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- Widerspruch (Sparsification-Lemma). Bound: kein $2^{o(L)}$. \hfill$\square$ \bspkopf{A42 -- Lower Bounds SubsetSum: Parameter der $n{=}3,m{=}2$-Instanz} Instanz: $n=3$, $m=2$, $\varphi=(x_1\vee x_2\vee x_3)\wedge(\bar x_1\vee\bar x_2\vee x_3)$. Wir setzen die Parameter der Reduktion ein. \smallskip \textbf{Anzahl Items:} $2n+2m = 6+4 = 10$ (je Variable $a_i,b_i$, je Klausel $c_j,d_j$). \textbf{Verschiedene Itemgrößen:} Die Klausel-Items $c_j,d_j$ teilen sich je \emph{eine} Größe ($10^{n+j-1}$), also \[ d \le 2n+m = 6+2 = 8 \quad(<10). \] Wegen $n\le 3m$ ist $d=O(m)$. \textbf{Kodierungslänge:} Die größte Größe ist $\Delta < 10^{\,n+m+1} = 10^{6}$, also $L=\log\Delta = O(n+m)=O(m)$; konkret $L<6$ Dezimalstellen. \textbf{Kontrapositions-Schluss} (ETH mit Sparsification: kein $2^{o(m)}$ für \problem{3-SAT}): \begin{itemize} \item $d=8=O(m)$: Ein $2^{o(d)}$-Löser für \problem{SubsetSum} wäre ein $2^{o(m)}$-Löser für \problem{3-SAT} -- Sparsification-Verstoß. Kein $2^{o(d)}$. \item $L=O(m)$: Ein $2^{o(L)}$-Löser wäre ebenso ein $2^{o(m)}$-Löser -- Verstoß. Kein $2^{o(L)}$. \end{itemize} Schärfe der Reduktion: obwohl $10$ Items vorliegen, gibt es nur $d\le 8$ Größen, und die Zahlen bleiben mit $L<6$ Stellen kurz -- beides linear in $m$. \newpage % ================================================================== \katkopf{Lower Bounds: SetCover}{Klausur SS23-N, A6a, 5 P.} Gegeben: \problem{HittingSet} ist unter der ETH nicht in $2^{o(r')} \langle I\rangle^{O(1)}$ und nicht in $2^{o(|U'|)} \langle I\rangle^{O(1)}$ lösbar. Die Reduktion $\problem{SetCover} \redp \problem{HittingSet}$ vertauscht die Rollen: $U' = \{1, \dots, r\}$ und pro $w \in U$ die Menge $F_w' = \{v \mid w \in F_v\}$, $k' = k$. Welche Lower Bounds ergeben sich für \problem{SetCover} bzgl.\ (i) $|U|$ und (ii) $r$? \lsg Die Abbildung ist involutorisch (Elemente und Mengen tauschen die Plätze; zweimal angewandt entsteht die Ausgangsinstanz). Sie ist damit zugleich eine Reduktion $\problem{HittingSet} \redp \problem{SetCover}$, bei der aus einer HittingSet-Instanz mit Universum $U'$ und $r'$ Mengen eine SetCover-Instanz mit $|U| = r'$ und $r = |U'|$ entsteht. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, sbox/.style={draw,rounded corners,inner sep=3.5pt,font=\small}] \node[plab] at (1.4,3.2) {\problem{SetCover} $(U,\{F_1,\dots,F_r\},k)$}; \foreach \y/\l in {2.3/{w_1}, 1.5/{w_2}, 0.7/{w_3}} { \fill (0,\y) circle (1.6pt); \node[left,font=\small] at (-0.15,\y) {$\l$}; } \node[sbox] (f1) at (2.6,1.9) {$F_1$}; \node[sbox] (f2) at (2.6,1.1) {$F_2$}; \draw[black!60] (f1.west) -- (0.12,2.3); \draw[black!60] (f1.west) -- (0.12,1.5); \draw[black!60] (f2.west) -- (0.12,1.5); \draw[black!60] (f2.west) -- (0.12,0.7); \draw[<->,thick] (3.6,1.5) -- (6.0,1.5); \node[plab] at (4.8,1.9) {Rollentausch}; \node[plab] at (4.8,1.0) {involutorisch:\\ zweimal $=$ Identität}; \node[plab] at (8.6,3.2) {\problem{HittingSet} $(U'{=}\{1,\dots,r\},\{F'_w\},k'{=}k)$}; \foreach \y/\l in {1.9/{1}, 1.1/{2}} { \fill (6.8,\y) circle (1.6pt); \node[left,font=\small] at (6.65,\y) {$\l$}; } \node[sbox] (g1) at (9.6,2.3) {$F'_{w_1}$}; \node[sbox] (g2) at (9.6,1.5) {$F'_{w_2}$}; \node[sbox] (g3) at (9.6,0.7) {$F'_{w_3}$}; \draw[black!60] (g1.west) -- (6.92,1.9); \draw[black!60] (g2.west) -- (6.92,1.9); \draw[black!60] (g2.west) -- (6.92,1.1); \draw[black!60] (g3.west) -- (6.92,1.1); \node[plab] at (5.5,-0.4) {$F'_w = \{v \mid w\in F_v\}$: \ aus $(U',r')$ wird $|U| = r'$, $r = |U'|$ \ $\Rightarrow$\ \textcolor{black!60}{kein $2^{o(|U|)}$, kein $2^{o(r)}$}}; \end{tikzpicture} \end{center} \textbf{(i)} Angenommen, \problem{SetCover} wäre in $2^{o(|U|)} \langle I\rangle^{O(1)}$ lösbar. Über die Reduktion entstünde ein Algorithmus für \problem{HittingSet} in $2^{o(r')} \langle I\rangle^{O(1)}$ -- den es unter der ETH nicht gibt. Bound: kein $2^{o(|U|)}$. \textbf{(ii)} Angenommen, \problem{SetCover} wäre in $2^{o(r)} \langle I\rangle^{O(1)}$ lösbar. Über die Reduktion entstünde ein $2^{o(|U'|)}$-Algorithmus für \problem{HittingSet} -- auch den gibt es unter der ETH nicht. Bound: kein $2^{o(r)}$. \hfill$\square$ \bspkopf{A43 -- Lower Bounds SetCover: Rollentausch konkret} \problem{SetCover}-Instanz: $U=\{w_1,w_2,w_3\}$, $F_1=\{w_1,w_2\}$, $F_2=\{w_2,w_3\}$, $k=1$ (also $r=2$ Mengen). Der involutorische Rollentausch $F'_w=\{v : w\in F_v\}$, $U'=\{1,\dots,r\}$ liefert die \problem{HittingSet}-Instanz. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, sbox/.style={draw,rounded corners,inner sep=3pt,font=\small}] \node[plab] at (1.3,3.1) {\problem{SetCover}\\ $U,\{F_1,F_2\},k{=}1$}; \foreach \y/\l in {2.2/{w_1},1.4/{w_2},0.6/{w_3}} { \fill (0,\y) circle (1.6pt); \node[left,font=\small] at (-0.1,\y) {$\l$}; } \node[sbox] (f1) at (2.4,1.8) {$F_1$}; \node[sbox] (f2) at (2.4,1.0) {$F_2$}; \draw[black!60] (f1.west)--(0.1,2.2); \draw[black!60] (f1.west)--(0.1,1.4); \draw[black!60] (f2.west)--(0.1,1.4); \draw[black!60] (f2.west)--(0.1,0.6); \draw[<->,thick] (3.4,1.4) -- (5.6,1.4); \node[plab] at (4.5,1.8) {Rollentausch\\ (involutorisch)}; \node[plab] at (8.4,3.1) {\problem{HittingSet}\\ $U'{=}\{1,2\},\{F'_w\},k'{=}1$}; \foreach \y/\l in {1.8/{1},1.0/{2}} { \fill (6.2,\y) circle (1.6pt); \node[left,font=\small] at (6.1,\y) {$\l$}; } \node[sbox] (g1) at (8.9,2.2) {$F'_{w_1}$}; \node[sbox] (g2) at (8.9,1.4) {$F'_{w_2}$}; \node[sbox] (g3) at (8.9,0.6) {$F'_{w_3}$}; \draw[black!60] (g1.west)--(6.3,1.8); \draw[black!60] (g2.west)--(6.3,1.8); \draw[black!60] (g2.west)--(6.3,1.0); \draw[black!60] (g3.west)--(6.3,1.0); \end{tikzpicture} \end{center} Inzidenz: $F'_{w_1}=\{1\}$, $F'_{w_2}=\{1,2\}$, $F'_{w_3}=\{2\}$. Somit \[ |U| = r' = 3,\qquad r = |U'| = 2. \] \textbf{Kontrapositions-Schluss} (Voraussetzung: \problem{HittingSet} unter der ETH nicht in $2^{o(r')}$ und nicht in $2^{o(|U'|)}$): \begin{itemize} \item $|U|=r'$: Ein $2^{o(|U|)}$-Löser für \problem{SetCover} wäre via Rollentausch ein $2^{o(r')}$-Löser für \problem{HittingSet} -- verboten. Kein $2^{o(|U|)}$. \item $r=|U'|$: Ein $2^{o(r)}$-Löser wäre ein $2^{o(|U'|)}$-Löser für \problem{HittingSet} -- verboten. Kein $2^{o(r)}$. \end{itemize} \newpage % ================================================================== \katkopf{Lower Bounds: ILP-Feasibility}{Klausur SS23-N, A6b, 5 P.} Reduktion $\problem{3-SAT} \redp \problem{ILP-Feasibility}$: $N = 2n$ ILP-Variablen (eine pro Literal); pro Klausel $C_i$ die Ungleichung $-\sum_{\ell \in C_i} x_\ell \le -1$; pro Variable $v$ die Ungleichungen $x_v + x_{\bar v} \le 1$ und $-x_v - x_{\bar v} \le -1$. Welche Lower Bounds ergeben sich bzgl.\ (i) $M$ (Zeilenzahl) und (ii) $N$ (Spaltenzahl)? \emph{Hinweis:} Unter der ETH ist \problem{3-SAT} nicht in $2^{o(n)} \cdot |I|^{O(1)}$ lösbar; mit dem Sparsification-Lemma auch nicht in $2^{o(m)} \cdot |I|^{O(1)}$. Für 3-SAT-Formeln gilt $n \le 3m$. \lsg \textbf{Parameter:} $M = m + 2n$; wegen $n \le 3m$ gilt $M = O(m)$. Und $N = 2n$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}] \draw (0,0) rectangle (6.4,2.6); \draw[dashed,black!50] (0,1.6) -- (6.4,1.6); \node[plab] at (3.2,2.05) {$m$ Klausel-Zeilen:\\ $-\sum_{\ell\in C_j} x_\ell \le -1$}; \node[plab] at (3.2,0.75) {$2n$ Variablen-Zeilen:\\ $x_v + x_{\bar v} \le 1$ \ und \ $-x_v - x_{\bar v} \le -1$}; \node[plab] at (3.2,3.0) {$N = 2n$ Spalten: eine $0/1$-Variable je Literal}; \draw[black!60] (-0.2,0) -- (-0.35,0) -- (-0.35,2.6) -- (-0.2,2.6); \node[plab,rotate=90] at (-0.7,1.3) {$M = m + 2n$ Zeilen}; \end{tikzpicture} \end{center} \textbf{(i)} Angenommen, \problem{ILP-Feasibility} wäre in $2^{o(M)} \langle I\rangle^{O(1)}$ lösbar. Wegen $M = O(m)$ ergäbe Reduktion $+$ Algorithmus einen $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem Sparsification-Lemma Widerspruch zur ETH. Bound: kein $2^{o(M)}$. \textbf{(ii)} Angenommen, \problem{ILP-Feasibility} wäre in $2^{o(N)} \langle I\rangle^{O(1)}$ lösbar. Wegen $N = 2n$ ergäbe sich ein $2^{o(n)}$-Algorithmus für \problem{3-SAT} -- direkter Widerspruch zur ETH. Bound: kein $2^{o(N)}$. \hfill$\square$ \bspkopf{A44 -- Lower Bounds ILP-Feasibility: Ungleichungen einsetzen} $n=3$, $m=2$ mit $C_1=(x_1\vee x_2\vee x_3)$, $C_2=(\bar x_1\vee x_2\vee\bar x_3)$. Pro Literal eine $0/1$-Variable $x_{(\cdot)}$; also $N=2n=6$ Variablen $x_{x_1},x_{\bar x_1},\dots,x_{x_3},x_{\bar x_3}$. \smallskip \textbf{Ungleichungen} ($M=m+2n=2+6=8$ Zeilen): \[ \begin{aligned} &\text{je Klausel:} && -\,(x_{x_1}+x_{x_2}+x_{x_3}) \le -1,\quad -\,(x_{\bar x_1}+x_{x_2}+x_{\bar x_3}) \le -1;\\[2pt] &\text{je Variable } v:&& x_{x_v}+x_{\bar x_v}\le 1,\quad -\,x_{x_v}-x_{\bar x_v}\le -1 \quad (v=1,2,3). \end{aligned} \] Das sind $m=2$ Klausel- plus $2n=6$ Variablen-Zeilen, zusammen $M=8$. \textbf{Kontrapositions-Schluss} (ETH: kein $2^{o(n)}$ für \problem{3-SAT}; mit Sparsification kein $2^{o(m)}$; $n\le 3m$): \begin{itemize} \item $M=8=O(m)$: Ein $2^{o(M)}$-Löser für \problem{ILP-Feasibility} wäre ein $2^{o(m)}$-Löser für \problem{3-SAT} -- Sparsification-Verstoß. Kein $2^{o(M)}$. \item $N=2n=6$: Ein $2^{o(N)}$-Löser wäre ein $2^{o(2n)}=2^{o(n)}$-Löser für \problem{3-SAT} -- direkter ETH-Verstoß. Kein $2^{o(N)}$. \end{itemize} \newpage % ================================================================== \katkopf{Lower Bounds: NAE-4-SAT und SetSplitting}{Klausur SS25-H, A4, 1+4+1+4 P.} \textbf{\problem{NAE-4-SAT}:} Klauseln mit $\le 4$ Literalen; gesucht ist eine Belegung, unter der jede Klausel zwei \emph{verschieden} belegte Literale enthält. Reduktion von \problem{3-SAT}: neue Variable $w$; jede Klausel $C_i$ wird zu $C_i \cup \{w\}$. \textbf{\problem{SetSplitting}:} Grundmenge $S$, Teilmengen $F_1, \dots, F_r$; gesucht eine Partition $S = S_1 \mathbin{\dot\cup} S_2$, die jede $F_i$ schneidet. Reduktion von \problem{NAE-4-SAT}: $S = \{x_i, \bar x_i\}$; Teilmengen $\{x_i, \bar x_i\}$ pro Variable und $C_i$ pro Klausel. \begin{enumerate} \item[a)] Parameter der NAE-4-SAT-Instanz; \quad b) Lower Bounds dafür; \item[c)] Parameter der SetSplitting-Instanz; \quad d) Lower Bounds dafür. \end{enumerate} \lsg \textbf{a)} Variablen $n' = n + 1$, Klauseln $m' = m$. \textbf{b)} Angenommen, \problem{NAE-4-SAT} wäre in $2^{o(n')} \cdot |I|^{O(1)}$ lösbar. Wegen $n' = n + 1$ ergäbe Reduktion $+$ Algorithmus einen $2^{o(n)}$-Algorithmus für \problem{3-SAT} -- direkter Widerspruch zur ETH. Angenommen, \problem{NAE-4-SAT} wäre in $2^{o(m')} \cdot |I|^{O(1)}$ lösbar. Wegen $m' = m$ ergäbe sich ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem Sparsification-Lemma Widerspruch zur ETH. Bounds: kein $2^{o(n')}$, kein $2^{o(m')}$. \textbf{c)} Mit $n'$ Variablen und $m'$ Klauseln der NAE-Instanz: $|S| = 2n'$, $r = n' + m'$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}] \draw[dashed,black!60] (-0.5,0) -- (8.6,0); \node[font=\small] at (8.9,0.9) {$S_1$}; \node[font=\small] at (8.9,-0.9) {$S_2$}; \foreach \x/\lo/\lu in {0.9/{x_1}/{\bar x_1}, 2.7/{\bar x_2}/{x_2}, 4.5/{x_3}/{\bar x_3}, 7.4/{w}/{\bar w}} { \fill (\x,0.75) circle (1.6pt); \fill (\x,-0.75) circle (1.6pt); \node[font=\scriptsize] at (\x,1.05) {$\lo$}; \node[font=\scriptsize] at (\x,-1.05) {$\lu$}; } \foreach \x in {0.9,2.7,4.5,7.4} \draw[black!55] (\x,0) ellipse (0.44 and 1.6); \node[plab,text=black!60] at (0.9,-2.0) {$\{x_i,\bar x_i\}$\\ je Variable (und $w$)}; \draw[densely dashed,thick,rounded corners=10pt] (2.0,-1.3) -- (5.05,-1.3) -- (8.0,0.35) -- (8.0,1.35) -- (6.85,1.35) -- (4.3,-0.28) -- (2.0,-0.28) -- cycle; \node[plab] at (5.6,-2.0) {$C_1\cup\{w\} = \{x_2,\bar x_3, w\}$:\\ je Klausel eine Menge}; \node[plab] at (4.1,-2.9) {$|S| = 2n'$, \ $r = n'+m'$ Mengen; \ jede Menge schneidet $S_1$ und $S_2$ \ $\Rightarrow$\ \textcolor{black!60}{kein $2^{o(|S|)}$, kein $2^{o(r)}$}}; \end{tikzpicture} \end{center} \textbf{d)} Angenommen, \problem{SetSplitting} wäre in $2^{o(|S|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|S| = 2n'$ ergäbe sich ein $2^{o(n')}$-Algorithmus für \problem{NAE-4-SAT} -- und daraus wegen $n' = n+1$ ein $2^{o(n)}$-Algorithmus für \problem{3-SAT}: direkter ETH-Verstoß. Angenommen, \problem{SetSplitting} wäre in $2^{o(r)} \cdot |I|^{O(1)}$ lösbar. Jede NAE-Klausel hat $\le 4$ Literale, also $n' \le 4m' + 1 = O(m')$ und damit $r = n' + m' = O(m')$ -- es ergäbe sich ein $2^{o(m')}$-Algorithmus für \problem{NAE-4-SAT} und wegen $m' = m$ ein $2^{o(m)}$-Algorithmus für \problem{3-SAT}: Verstoß gegen das Sparsification-Lemma. Bounds: kein $2^{o(|S|)}$, kein $2^{o(r)}$. \hfill$\square$ \bspkopf{A45 -- Lower Bounds NAE-4-SAT und SetSplitting: Kette einsetzen} Start: \problem{3-SAT} mit $n=3$, $m=2$, $C_1=(x_1\vee x_2\vee x_3)$, $C_2=(\bar x_1\vee x_2\vee\bar x_3)$. \smallskip \textbf{(a) NAE-4-SAT.} Neue Variable $w$; jede Klausel wird zu $C_i\cup\{w\}$: $C_1'=(x_1\vee x_2\vee x_3\vee w)$, $C_2'=(\bar x_1\vee x_2\vee\bar x_3\vee w)$. Parameter: $n'=n+1=4$, $m'=m=2$. \textbf{(b) Bounds NAE-4-SAT} (ETH: kein $2^{o(n)}$/$2^{o(m)}$ für 3-SAT). Ein $2^{o(n')}$-Löser ergäbe (da $n'=n+1$) einen $2^{o(n)}$-3-SAT-Löser (direkter Verstoß); ein $2^{o(m')}$-Löser ergäbe (da $m'=m$) einen $2^{o(m)}$-3-SAT-Löser (Sparsification-Verstoß). Kein $2^{o(n')}$, kein $2^{o(m')}$. \textbf{(c) SetSplitting.} $S=\{x_i,\bar x_i \mid i\in[3]\}\cup\{w,\bar w\}$, also \[ |S| = 2n' = 8,\qquad r = n'+m' = 4+2 = 6. \] Mengen: die $n'=4$ Paare $\{x_i,\bar x_i\}$ bzw.\ $\{w,\bar w\}$ und die $m'=2$ Klauseln $C_i'$. Die gesuchte Partition $S=S_1\mathbin{\dot\cup}S_2$ (wahr/falsch) schneidet jede Menge. \textbf{(d) Bounds SetSplitting:} \begin{itemize} \item $|S|=8=2n'$: Ein $2^{o(|S|)}$-Löser ergäbe einen $2^{o(n')}$-NAE-Löser und wegen $n'=n+1$ einen $2^{o(n)}$-3-SAT-Löser -- direkter ETH-Verstoß. Kein $2^{o(|S|)}$. \item $r=6$: jede NAE-Klausel hat $\le 4$ Literale, also $n'\le 4m'+1=O(m')$ und $r=n'+m'=O(m')$; ein $2^{o(r)}$-Löser ergäbe einen $2^{o(m')}$-NAE-Löser und wegen $m'=m$ einen $2^{o(m)}$-3-SAT-Löser -- Sparsification-Verstoß. Kein $2^{o(r)}$. \end{itemize} \newpage % ================================================================== \katkopf{Lower Bounds: CoverClique und $\Delta$Cover}{Klausur SS25-N, A4, 1+4+1+4 P.} \textbf{\problem{CoverClique}:} Gibt es $k$ disjunkte Cliquen, die alle Knoten überdecken? Reduktion von $k$-\problem{Color}: $(G, k) \mapsto (G' = (V, \bar E), k)$ (Komplementgraph). \emph{Hinweis:} $k$-\problem{Color} ist unter der ETH nicht in $2^{o(|V|)} \cdot |I|^{O(1)}$ lösbar. \textbf{$\Delta$\problem{Cover}:} Reduktion von \problem{VertexCover} (aus der Übung): $V' = V \cup \{v_e \mid e \in E\}$, $E' = E \cup \{\{v_e, e_1\}, \{v_e, e_2\}\}$. \begin{enumerate} \item[a)] Parameter der CoverClique-Instanz; \quad b) Lower Bounds dafür; \item[c)] Parameter der $\Delta$Cover-Instanz; \quad d) Lower Bounds dafür. \end{enumerate} \lsg \textbf{a)} $|V'| = |V|$,\quad $|\bar E| = \tfrac12 |V|(|V|-1) - |E| \le |V|^2$. \textbf{b)} Angenommen, \problem{CoverClique} wäre in $2^{o(|V'|)} \cdot |I|^{O(1)}$ lösbar. Wegen $|V'| = |V|$ ergäbe sich ein $2^{o(|V|)}$-Algorithmus für $k$-\problem{Color} -- den es unter der ETH nicht gibt. Angenommen, \problem{CoverClique} wäre in $2^{o(\sqrt{|\bar E|})} \cdot |I|^{O(1)}$ lösbar. Wegen $|\bar E| \le |V|^2$ ist $\sqrt{|\bar E|} = O(|V|)$ -- wieder ein $2^{o(|V|)}$-Algorithmus für $k$-\problem{Color}. Bounds: kein $2^{o(|V'|)}$, kein $2^{o(\sqrt{|\bar E|})}$. \textbf{c)} $|V'| = |V| + |E|$,\quad $|E'| = |E| + 2|E| = 3|E|$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, mini/.style={circle,draw,inner sep=1.6pt}] \node[plab] at (1.9,3.3) {$k$-\problem{Color} $\redp$ \problem{CoverClique}}; \node[mini] (a1) at (0,2) {}; \node[mini] (b1) at (1,2) {}; \node[mini] (c1) at (1,1) {}; \node[mini] (d1) at (0,1) {}; \draw (a1)--(b1)--(c1)--(d1)--(a1); \node[plab] at (0.5,0.5) {$G$}; \draw[->] (1.5,1.5) -- node[above,plab] {Komplement} (2.6,1.5); \node[mini] (a2) at (3.1,2) {}; \node[mini] (b2) at (4.1,2) {}; \node[mini] (c2) at (4.1,1) {}; \node[mini] (d2) at (3.1,1) {}; \draw (a2)--(c2); \draw (b2)--(d2); \node[plab] at (3.6,0.5) {$\bar G$}; \node[plab] at (1.9,-0.3) {$|V'| = |V|$,\ $|\bar E| \le |V|^2$}; \node[plab,text=black!60] at (1.9,-0.9) {kein $2^{o(|V'|)}$, kein $2^{o(\sqrt{|\bar E|})}$}; \node[plab] at (9.4,3.3) {\problem{VertexCover} $\redp$ $\Delta$\problem{Cover}}; \node[mini,label=below:{\scriptsize $u$}] (u1) at (7.2,1.5) {}; \node[mini,label=below:{\scriptsize $v$}] (v1) at (8.4,1.5) {}; \draw (u1)--(v1); \draw[->] (8.9,1.5) -- node[above,plab] {je Kante} (9.9,1.5); \node[mini,label=below:{\scriptsize $u$}] (u2) at (10.4,1.5) {}; \node[mini,label=below:{\scriptsize $v$}] (v2) at (11.6,1.5) {}; \node[mini,label=above:{\scriptsize $v_e$}] (w2) at (11.0,2.4) {}; \draw (u2)--(v2)--(w2)--(u2); \node[plab] at (9.4,-0.3) {$|V'| = |V|+|E| = O(|V|^2)$,\ $|E'| = 3|E|$}; \node[plab,text=black!60] at (9.4,-0.9) {kein $2^{o(\sqrt{|V'|})}$, kein $2^{o(\sqrt{|E'|})}$}; \end{tikzpicture} \end{center} \textbf{d)} Für \problem{VertexCover} gilt unter der ETH: kein $2^{o(|V|)}$- und kein $2^{o(\sqrt{|E|})}$-Algorithmus. Angenommen, $\Delta$\problem{Cover} wäre in $2^{o(\sqrt{|V'|})} \cdot |I|^{O(1)}$ lösbar. Wegen $|V'| = |V| + |E| \le |V| + |V|^2 = O(|V|^2)$ ist $\sqrt{|V'|} = O(|V|)$ -- es ergäbe sich ein $2^{o(|V|)}$-Algorithmus für \problem{VertexCover}. Widerspruch. Angenommen, $\Delta$\problem{Cover} wäre in $2^{o(\sqrt{|E'|})} \cdot |I|^{O(1)}$ lösbar. Wegen $|E'| = 3|E| = O(|E|)$ ist $\sqrt{|E'|} = O(\sqrt{|E|})$ -- es ergäbe sich ein $2^{o(\sqrt{|E|})}$-Algorithmus für \problem{VertexCover}. Widerspruch. Bounds: kein $2^{o(\sqrt{|V'|})}$, kein $2^{o(\sqrt{|E'|})}$. \hfill$\square$ \bspkopf{A46 -- Lower Bounds CoverClique und $\Delta$Cover: Mini-Gadgets} \textbf{(a) CoverClique} (aus $k$-\problem{Color}, Komplementgraph). Instanz $G=C_4$ (4-Kreis), $k=2$: $|V|=4$, $|E|=4$. Komplement $\bar G$ hat die beiden Nicht-Kanten $\{1,3\},\{2,4\}$, also $|V'|=|V|=4$, $|\bar E|=2$. \textbf{(c) $\Delta$Cover} (aus \problem{VertexCover}). Instanz: eine Kante $\{u,v\}$ ($|V|=2$, $|E|=1$). Pro Kante ein neuer Knoten $v_e$ mit Dreieck: $V'=\{u,v,v_e\}$, $E'=\{uv,uv_e,vv_e\}$, also $|V'|=|V|+|E|=3$, $|E'|=3|E|=3$. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}, mini/.style={circle,draw,inner sep=1.8pt}] \node[plab] at (1.5,2.7) {$k$-\problem{Color} $\redp$ \problem{CoverClique}}; \node[mini,label=left:{\scriptsize 1}] (a) at (0.6,2) {}; \node[mini,label=right:{\scriptsize 2}] (b) at (1.8,2) {}; \node[mini,label=right:{\scriptsize 3}] (c) at (1.8,0.9) {}; \node[mini,label=left:{\scriptsize 4}] (d) at (0.6,0.9) {}; \draw (a)--(b)--(c)--(d)--(a); \node[plab] at (1.2,0.3) {$G=C_4$}; \draw[->] (2.5,1.45)--node[above,plab]{Kompl.}(3.5,1.45); \node[mini,label=left:{\scriptsize 1}] (a2) at (4.0,2) {}; \node[mini,label=right:{\scriptsize 2}] (b2) at (5.2,2) {}; \node[mini,label=right:{\scriptsize 3}] (c2) at (5.2,0.9) {}; \node[mini,label=left:{\scriptsize 4}] (d2) at (4.0,0.9) {}; \draw (a2)--(c2); \draw (b2)--(d2); \node[plab] at (4.6,0.3) {$\bar G$}; \node[plab] at (2.9,-0.55) {$|V'|{=}4$, $|\bar E|{=}2$}; \node[plab] at (9.0,2.7) {\problem{VertexCover} $\redp$ $\Delta$\problem{Cover}}; \node[mini,label=below:{\scriptsize $u$}] (u1) at (7.4,1.3) {}; \node[mini,label=below:{\scriptsize $v$}] (v1) at (8.6,1.3) {}; \draw (u1)--(v1); \draw[->] (9.0,1.3)--node[above,plab]{je Kante}(10.0,1.3); \node[mini,label=below:{\scriptsize $u$}] (u2) at (10.4,1.0) {}; \node[mini,label=below:{\scriptsize $v$}] (v2) at (11.6,1.0) {}; \node[mini,label=above:{\scriptsize $v_e$}] (w2) at (11.0,2.0) {}; \draw (u2)--(v2)--(w2)--(u2); \node[plab] at (10.8,-0.55) {$|V'|{=}3$, $|E'|{=}3$}; \end{tikzpicture} \end{center} \textbf{(b) Bounds CoverClique} ($k$-\problem{Color} nicht in $2^{o(|V|)}$): $|V'|=|V|$ $\Rightarrow$ ein $2^{o(|V'|)}$-Löser wäre ein $2^{o(|V|)}$-$k$-Color-Löser; $\sqrt{|\bar E|}\le\sqrt{|V|^2}=O(|V|)$ $\Rightarrow$ $2^{o(\sqrt{|\bar E|})}$ ebenso. Kein $2^{o(|V'|)}$, kein $2^{o(\sqrt{|\bar E|})}$. \textbf{(d) Bounds $\Delta$Cover} (\problem{VertexCover} nicht in $2^{o(|V|)}$, nicht in $2^{o(\sqrt{|E|})}$): $|V'|=|V|+|E|=O(|V|^2)$, also $\sqrt{|V'|}=O(|V|)$ $\Rightarrow$ ein $2^{o(\sqrt{|V'|})}$-Löser wäre ein $2^{o(|V|)}$-VC-Löser; $|E'|=3|E|=O(|E|)$, also $\sqrt{|E'|}=O(\sqrt{|E|})$ $\Rightarrow$ ein $2^{o(\sqrt{|E'|})}$-Löser wäre ein $2^{o(\sqrt{|E|})}$-VC-Löser. Kein $2^{o(\sqrt{|V'|})}$, kein $2^{o(\sqrt{|E'|})}$. \newpage % ################################################################## \section{Approximation: anwenden, Güte beweisen, Worst Case} % ################################################################## % ================================================================== \katkopf{Knapsack: Greedy und ModifiedGreedy}{Klausur SS23-H, A1, 3+2+5 P.} Rucksack-Instanz mit Kapazität $B = 16$, Items als $(p_i, w_i)$: \[ I = [(1,4),\,(1,1),\,(1,3),\,(11,13),\,(3,3),\,(5,6),\,(1,5)] \] \begin{enumerate} \item[a)] Wenden Sie Greedy an (mit Begründung der Auswahl). Lösungswert? \item[b)] Wenden Sie ModifiedGreedy an. Wie ändert sich die Lösung? \item[c)] Güte von ModifiedGreedy? Idee zur Verbesserung auf $\frac32$ bzw.\ $\frac43$? \end{enumerate} \emph{Hinweis:} Greedy sortiert die Items absteigend nach Profitdichte $p_i/w_i$ und packt in dieser Reihenfolge jedes Item ein, das noch passt. ModifiedGreedy gibt das Bessere aus Greedy-Lösung und profitreichstem Einzel-Item aus. \lsg \textbf{a)} Profitdichten $p_i/w_i$: $0{,}25;\ 1;\ 0{,}33;\ 0{,}85;\ 1;\ 0{,}83;\ 0{,}2$. Absteigend sortiert: $(1,1), (3,3), (11,13), (5,6), (1,3), (1,4), (1,5)$. Einpacken (Restkapazität beachten): \begin{itemize} \item $(1,1)$ einpacken -- Last 1. \item $(3,3)$ einpacken -- Last 4. \item $(11,13)$ passt nicht ($4+13 = 17 > 16$). \item $(5,6)$ einpacken -- Last 10. \item $(1,3)$ einpacken -- Last 13. \item $(1,4)$ und $(1,5)$ passen nicht. \end{itemize} $\mathrm{GA} = 1 + 3 + 5 + 1 = 10$. \textbf{b)} Bestes Einzel-Item ist $(11,13)$ mit Profit $11 > 10$, also gibt ModifiedGreedy dieses aus: $\mathrm{MGA} = 11$. (Optimal wäre $\{(11,13),(3,3)\}$ mit Gewicht 16 und Profit 14.) \begin{center} \begin{tikzpicture}[x=0.65cm,y=1cm] \node[left] at (-0.3,2.7) {\small Greedy}; \draw[fill=black!10] (0,2.4) rectangle (1,3.0); \node at (0.5,2.7) {\scriptsize $1/1$}; \draw[fill=black!25] (1,2.4) rectangle (4,3.0); \node at (2.5,2.7) {\scriptsize $3/3$}; \draw[fill=black!10] (4,2.4) rectangle (10,3.0); \node at (7,2.7) {\scriptsize $5/6$}; \draw[fill=black!25] (10,2.4) rectangle (13,3.0); \node at (11.5,2.7) {\scriptsize $1/3$}; \draw (13,2.4) rectangle (16,3.0); \node[right] at (16.2,2.7) {\small $\mathrm{GA}=10$}; \node[left] at (-0.3,1.5) {\small MGA}; \draw[fill=black!25] (0,1.2) rectangle (13,1.8); \node at (6.5,1.5) {\scriptsize $11/13$}; \draw (13,1.2) rectangle (16,1.8); \node[right] at (16.2,1.5) {\small $\mathrm{MGA}=11$}; \node[left] at (-0.3,0.3) {\small OPT}; \draw[fill=black!25] (0,0) rectangle (13,0.6); \node at (6.5,0.3) {\scriptsize $11/13$}; \draw[fill=black!10] (13,0) rectangle (16,0.6); \node at (14.5,0.3) {\scriptsize $3/3$}; \node[right] at (16.2,0.3) {\small $\mathrm{OPT}=14$}; \draw[thin] (0,-0.35) -- (16,-0.35); \draw[thin] (0,-0.42) -- (0,-0.28); \draw[thin] (16,-0.42) -- (16,-0.28); \node[below] at (0,-0.42) {\small $0$}; \node[below] at (16,-0.42) {\small $B=16$}; \node at (8,-1.1) {\small Segmentbeschriftung: $p_i/w_i$, Breite $=$ Gewicht $w_i$}; \end{tikzpicture} \end{center} \textbf{c)} MGA hat Güte 2. Verbesserung durch $k$-Enumeration (Sahni): Probiere alle Vorauswahlen mit $\le k$ Items, fülle mit Greedy auf, nimm das Beste -- Güte $1 + 1/k$, also $\frac32$ für $k = 2$ und $\frac43$ für $k = 3$. \hfill$\square$ \newpage % ================================================================== \katkopf{LPT anwenden + ListScheduling-Worst-Case}{Klausur SS24-H, A1, 4+2+2+2 P.} Jobs $p = (5, 3, 7, 8, 1, 4, 2)$, $m = 3$. \begin{enumerate} \item[a)] Wenden Sie LPT an (Zwischenschritte, Reihenfolge, Schedule grafisch). \item[b)] Approximative Güte von LPT? \item[c)] Instanz für $m = 2$, bei der ListScheduling Güte $2 - 1/m$ erreicht (mit OPT und LS-Wert). \item[d)] Dasselbe für $m = 3$. \end{enumerate} \emph{Hinweis:} ListScheduling legt jeden Job in der gegebenen Reihenfolge auf die aktuell am wenigsten belastete Maschine. LPT ist ListScheduling nach absteigender Sortierung der Bearbeitungszeiten. \lsg \textbf{a)} Absteigend sortiert: $8, 7, 5, 4, 3, 2, 1$ (also $J_4, J_3, J_1, J_6, J_2, J_7, J_5$). Platzierung auf die jeweils leerste Maschine: \begin{itemize} \item $8 \to M_1$ [Last 8], \quad $7 \to M_2$ [7], \quad $5 \to M_3$ [5], \item $4 \to M_3$ [9], \quad $3 \to M_2$ [10], \quad $2 \to M_1$ [10], \quad $1 \to M_3$ [10]. \end{itemize} \begin{center} \begin{tikzpicture}[x=0.7cm,y=1cm] \node[left] at (-0.2,1.775) {\small $M_1$}; \draw[fill=black!10] (0,1.5) rectangle (8,2.05); \node at (4,1.775) {\small $J_4\,(8)$}; \draw[fill=black!25] (8,1.5) rectangle (10,2.05); \node at (9,1.775) {\small $2$}; \node[left] at (-0.2,1.025) {\small $M_2$}; \draw[fill=black!10] (0,0.75) rectangle (7,1.3); \node at (3.5,1.025) {\small $J_3\,(7)$}; \draw[fill=black!25] (7,0.75) rectangle (10,1.3); \node at (8.5,1.025) {\small $3$}; \node[left] at (-0.2,0.275) {\small $M_3$}; \draw[fill=black!10] (0,0) rectangle (5,0.55); \node at (2.5,0.275) {\small $J_1\,(5)$}; \draw[fill=black!25] (5,0) rectangle (9,0.55); \node at (7,0.275) {\small $4$}; \draw[fill=black!10] (9,0) rectangle (10,0.55); \node at (9.5,0.275) {\small $1$}; \draw[->,thin] (0,-0.35) -- (10.8,-0.35) node[below] {\small $t$}; \foreach \x in {0,5,10} { \draw[thin] (\x,-0.42) -- (\x,-0.28); \node[below] at (\x,-0.45) {\small $\x$};} \draw[dashed,thin] (10,-0.28) -- (10,2.05); \end{tikzpicture} \end{center} Makespan $= 10$ (hier sogar optimal, da $\sum p_j = 30 = 3 \cdot 10$). \textbf{b)} LPT hat Güte $\frac43 - \frac1{3m}$. \textbf{c)} $m = 2$: Jobs $(1, 1, 2)$ in dieser Reihenfolge. LS verteilt die Einsen auf beide Maschinen, die 2 kommt obendrauf: $\mathrm{LS} = 3$. Optimal: $\{2\}$ / $\{1,1\}$ mit $\mathrm{OPT} = 2$. Rate $3/2 = 2 - \frac12$. \textbf{d)} $m = 3$: sechs Einser-Jobs, dann ein Job der Größe 3. LS verteilt die Einsen gleichmäßig (je 2), die 3 kommt obendrauf: $\mathrm{LS} = 5$. Optimal: 3 allein, die Einsen auf zwei Maschinen: $\mathrm{OPT} = 3$. Rate $5/3 = 2 - \frac13$. \begin{center} \begin{tikzpicture}[x=0.6cm,y=1cm] \node at (3.3,1.85) {\small c)\; $m=2$: Jobs $(1,1,2)$}; \node[left] at (-0.2,1.025) {\small $M_1$}; \draw[fill=black!10] (0,0.75) rectangle (1,1.3); \node at (0.5,1.025) {\small $1$}; \draw[fill=black!25] (1,0.75) rectangle (3,1.3); \node at (2,1.025) {\small $2$}; \node[left] at (-0.2,0.275) {\small $M_2$}; \draw[fill=black!10] (0,0) rectangle (1,0.55); \node at (0.5,0.275) {\small $1$}; \draw[dashed,thin] (3,-0.1) -- (3,1.3); \node at (1.5,-0.55) {\small $\mathrm{LS}=3$}; \begin{scope}[xshift=3.3cm] \draw[fill=black!25] (0,0.75) rectangle (2,1.3); \node at (1,1.025) {\small $2$}; \draw[fill=black!10] (0,0) rectangle (1,0.55); \node at (0.5,0.275) {\small $1$}; \draw[fill=black!10] (1,0) rectangle (2,0.55); \node at (1.5,0.275) {\small $1$}; \draw[dashed,thin] (2,-0.1) -- (2,1.3); \node at (1,-0.55) {\small $\mathrm{OPT}=2$}; \end{scope} \end{tikzpicture}\hspace{1.8cm}% \begin{tikzpicture}[x=0.6cm,y=1cm] \node at (4.4,2.6) {\small d)\; $m=3$: sechs Einsen, dann eine $3$}; \node[left] at (-0.2,1.775) {\small $M_1$}; \draw[fill=black!10] (0,1.5) rectangle (1,2.05); \node at (0.5,1.775) {\small $1$}; \draw[fill=black!10] (1,1.5) rectangle (2,2.05); \node at (1.5,1.775) {\small $1$}; \draw[fill=black!25] (2,1.5) rectangle (5,2.05); \node at (3.5,1.775) {\small $3$}; \node[left] at (-0.2,1.025) {\small $M_2$}; \draw[fill=black!10] (0,0.75) rectangle (1,1.3); \node at (0.5,1.025) {\small $1$}; \draw[fill=black!10] (1,0.75) rectangle (2,1.3); \node at (1.5,1.025) {\small $1$}; \node[left] at (-0.2,0.275) {\small $M_3$}; \draw[fill=black!10] (0,0) rectangle (1,0.55); \node at (0.5,0.275) {\small $1$}; \draw[fill=black!10] (1,0) rectangle (2,0.55); \node at (1.5,0.275) {\small $1$}; \draw[dashed,thin] (5,-0.1) -- (5,2.05); \node at (2.5,-0.55) {\small $\mathrm{LS}=5$}; \begin{scope}[xshift=4.2cm] \draw[fill=black!25] (0,1.5) rectangle (3,2.05); \node at (1.5,1.775) {\small $3$}; \foreach \x in {0,1,2} { \draw[fill=black!10] (\x,0.75) rectangle (\x+1,1.3); \node at (\x+0.5,1.025) {\small $1$}; \draw[fill=black!10] (\x,0) rectangle (\x+1,0.55); \node at (\x+0.5,0.275) {\small $1$};} \draw[dashed,thin] (3,-0.1) -- (3,2.05); \node at (1.5,-0.55) {\small $\mathrm{OPT}=3$}; \end{scope} \end{tikzpicture} \end{center} \hfill$\square$ \newpage % ================================================================== \katkopf{$\Delta$TSP1 anwenden}{Klausur SS24-N, A1, 6+2+2 P.} Gegeben ein vollständiger Graph auf $\{A, B, C, D, E\}$ mit symmetrischen Distanzen $d(A,E) = 1$, $d(B,C) = 1$, $d(A,C) = 2$, $d(C,D) = 2$, $d(B,E) = 2$, übrige Distanzen 3 (metrisch). \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\small}] \node[knoten] (A) at ( 90:2.1) {$A$}; \node[knoten] (B) at ( 18:2.1) {$B$}; \node[knoten] (C) at ( -54:2.1) {$C$}; \node[knoten] (D) at (-126:2.1) {$D$}; \node[knoten] (E) at ( 162:2.1) {$E$}; \draw (A) -- (B) node[gw,midway] {3}; \draw (B) -- (C) node[gw,midway] {1}; \draw (C) -- (D) node[gw,midway] {2}; \draw (D) -- (E) node[gw,midway] {3}; \draw (E) -- (A) node[gw,midway] {1}; \draw (A) -- (C) node[gw,pos=0.25] {2}; \draw (A) -- (D) node[gw,pos=0.25] {3}; \draw (B) -- (D) node[gw,pos=0.25] {3}; \draw (B) -- (E) node[gw,pos=0.25] {2}; \draw (C) -- (E) node[gw,pos=0.25] {3}; \end{tikzpicture} \end{center} \begin{enumerate} \item[a)] Wenden Sie $\Delta$TSP1 ab Startknoten $C$ an; geben Sie alle Zwischenschritte an. \item[b)] Was berechnet $\Delta$TSP1, und welche Bedingungen muss der Graph erfüllen? \item[c)] Begründen Sie die approximative Güte 2. \end{enumerate} \emph{Hinweis ($\Delta$TSP1):} (1) MST $T$ berechnen; (2) alle MST-Kanten verdoppeln; (3) Eulerkreis ab Startknoten; (4) Abkürzen: bereits besuchte Knoten überspringen. \lsg \textbf{a)} \begin{itemize} \item[(1)] MST: $A$--$E$ (1), $B$--$C$ (1), $A$--$C$ (2), $C$--$D$ (2); Gewicht 6. \item[(2)] Kanten verdoppeln: Multigraph mit Gewicht 12, alle Grade gerade. \item[(3)] Eulerkreis ab $C$: $[C, A, E, A, C, B, C, D, C]$, Länge 12. \item[(4)] Abkürzen (besuchte Knoten überspringen): Tour $[C, A, E, B, D, C]$, Länge 10. \end{itemize} \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \foreach \u/\v in {A/B,A/D,B/D,B/E,C/E,D/E} \draw[hell] (\u) -- (\v); \draw[very thick] (A) -- (E) node[gw,midway] {1}; \draw[very thick] (B) -- (C) node[gw,midway] {1}; \draw[very thick] (A) -- (C) node[gw,midway] {2}; \draw[very thick] (C) -- (D) node[gw,midway] {2}; \node at (0,-1.9) {\scriptsize (1) MST, Gewicht 6}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \foreach \u/\v in {A/E,B/C,A/C,C/D}{ \draw[thick] (\u) to[bend left=12] (\v); \draw[thick] (\u) to[bend right=12] (\v);} \node at (0,-1.9) {\scriptsize (2) verdoppelt, Gewicht 12}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[nr/.style={fill=white,inner sep=1pt,font=\scriptsize}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \draw[->] (C) to[bend left=18] node[nr] {1} (A); \draw[->] (A) to[bend left=18] node[nr] {2} (E); \draw[->] (E) to[bend left=18] node[nr] {3} (A); \draw[->] (A) to[bend left=18] node[nr] {4} (C); \draw[->] (C) to[bend left=18] node[nr] {5} (B); \draw[->] (B) to[bend left=18] node[nr] {6} (C); \draw[->] (C) to[bend left=18] node[nr] {7} (D); \draw[->] (D) to[bend left=18] node[nr] {8} (C); \node at (0,-1.9) {\scriptsize (3) Eulerkreis ab $C$}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \foreach \u/\v in {A/B,A/D,B/C,C/E,D/E} \draw[hell] (\u) -- (\v); \draw[very thick,->] (C) -- (A) node[gw,midway] {2}; \draw[very thick,->] (A) -- (E) node[gw,midway] {1}; \draw[very thick,->] (E) -- (B) node[gw,midway] {2}; \draw[very thick,->] (B) -- (D) node[gw,midway] {3}; \draw[very thick,->] (D) -- (C) node[gw,midway] {2}; \node at (0,-1.9) {\scriptsize (4) Tour, L\"ange 10}; \end{tikzpicture} \end{center} \textbf{b)} $\Delta$TSP1 berechnet eine Rundreise (TSP-Tour) mit Güte 2. Der Graph muss vollständig sein, die Distanzen symmetrisch und die Dreiecksungleichung $d(i,j) \le d(i,k) + d(k,j)$ erfüllen -- sonst kann das Abkürzen die Tour verlängern. \textbf{c)} Drei Schritte: (1) $w(T) \le \mathrm{OPT}$, denn eine optimale Tour ohne eine Kante ist ein Spannbaum und $T$ ist minimal. (2) Der Eulerkreis hat Länge $2\,w(T) \le 2\,\mathrm{OPT}$. (3) Abkürzen verlängert wegen der Dreiecksungleichung nicht. Also $d(R) \le 2\,\mathrm{OPT}$. \hfill$\square$ \newpage % ================================================================== \katkopf{Christofides anwenden}{Klausur SS23-N, A1, 3+7 P.} Vollständiger Graph mit Knoten $a, b, c, d$ und symmetrischen Distanzen $d(a,b) = 1$, $d(b,c) = 2$, $d(a,d) = 2$, $d(a,c) = 3$, $d(c,d) = 3$, $d(b,d) = 3$. \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\small}] \node[knoten] (a) at (0,2.4) {$a$}; \node[knoten] (b) at (2.4,2.4) {$b$}; \node[knoten] (c) at (2.4,0) {$c$}; \node[knoten] (d) at (0,0) {$d$}; \draw (a) -- (b) node[gw,midway] {1}; \draw (b) -- (c) node[gw,midway] {2}; \draw (c) -- (d) node[gw,midway] {3}; \draw (d) -- (a) node[gw,midway] {2}; \draw (a) -- (c) node[gw,pos=0.3] {3}; \draw (b) -- (d) node[gw,pos=0.3] {3}; \end{tikzpicture} \end{center} \begin{enumerate} \item[a)] Was berechnet Christofides' Algorithmus, welche Güte hat er, und welche Eigenschaft müssen die Distanzen neben der Symmetrie erfüllen? \item[b)] Wenden Sie den Algorithmus mit Startknoten $a$ an; geben Sie alle Zwischengraphen an -- auch Schritte, die nichts ändern. \end{enumerate} \emph{Hinweis (Christofides):} (1) MST $T$ berechnen; (2) $X$ = Knoten mit ungeradem Grad in $T$; (3) minimales perfektes Matching $K$ auf $X$; (4) Eulerkreis im Multigraphen $T + K$; (5) Abkürzen. \lsg \textbf{a)} Christofides berechnet eine TSP-Rundreise mit Güte $\frac32$. Die Distanzen müssen zusätzlich die Dreiecksungleichung erfüllen. \textbf{b)} \begin{itemize} \item[(1)] MST (Kruskal): $\{a,b\}$ (1), $\{b,c\}$ (2), $\{a,d\}$ (2); Gewicht 5. \item[(2)] Ungerade Grade im MST: $a{:}\,2$, $b{:}\,2$, $c{:}\,1$, $d{:}\,1$ $\Rightarrow X = \{c, d\}$. \item[(3)] Minimales perfektes Matching auf $X$: einzige Möglichkeit $K = \{\{c,d\}\}$, Kosten 3. \item[(4)] Multigraph $T + K$: alle Grade gerade. Eulerkreis ab $a$: $[a, b, c, d, a]$, Kosten $1 + 2 + 3 + 2 = 8$. \item[(5)] Abkürzen: kein Knoten kommt doppelt vor -- dieser Schritt ändert nichts, wird aber geprüft. Tour $R = [a, b, c, d, a]$, Länge 8 (hier sogar optimal). \end{itemize} \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[knoten] (c) at (1.7,0) {$c$}; \node[knoten] (d) at (0,0) {$d$}; \foreach \u/\v in {c/d,a/c,b/d} \draw[hell] (\u) -- (\v); \draw[very thick] (a) -- (b) node[gw,midway] {1}; \draw[very thick] (b) -- (c) node[gw,midway] {2}; \draw[very thick] (a) -- (d) node[gw,midway] {2}; \node at (0.85,-0.75) {\scriptsize (1) MST, Gewicht 5}; \end{tikzpicture}\hspace{3mm}% \begin{tikzpicture}[hell/.style={draw=black!20}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[kndick] (c) at (1.7,0) {$c$}; \node[kndick] (d) at (0,0) {$d$}; \foreach \u/\v in {c/d,a/c,b/d} \draw[hell] (\u) -- (\v); \draw[very thick] (a) -- (b); \draw[very thick] (b) -- (c); \draw[very thick] (a) -- (d); \node at (0.85,-0.75) {\scriptsize (2) $X=\{c,d\}$}; \end{tikzpicture}\hspace{3mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[kndick] (c) at (1.7,0) {$c$}; \node[kndick] (d) at (0,0) {$d$}; \draw[very thick] (a) -- (b); \draw[very thick] (b) -- (c); \draw[very thick] (a) -- (d); \draw[very thick,dashed] (c) -- (d) node[gw,midway] {3}; \node at (0.85,-0.75) {\scriptsize (3) Matching $\{c,d\}$}; \end{tikzpicture}\hspace{3mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[knoten] (c) at (1.7,0) {$c$}; \node[knoten] (d) at (0,0) {$d$}; \foreach \u/\v in {a/c,b/d} \draw[hell] (\u) -- (\v); \draw[very thick,->] (a) -- (b) node[gw,midway] {1}; \draw[very thick,->] (b) -- (c) node[gw,midway] {2}; \draw[very thick,->] (c) -- (d) node[gw,midway] {3}; \draw[very thick,->] (d) -- (a) node[gw,midway] {2}; \node at (0.85,-0.75) {\scriptsize (4) Tour, L\"ange 8}; \end{tikzpicture} \end{center} \hfill$\square$ \newpage % ================================================================== \katkopf{2ApproxVC hat Güte 2}{Präsenz 13.1} Algorithmus \textbf{2ApproxCV}: Gehe alle Kanten durch; sind beide Endpunkte noch nicht in $C$, füge beide zu $C$ hinzu. Beweisen Sie die Güte 2. \lsg Sei $A$ die Menge der Kanten, für die beide Endpunkte aufgenommen wurden. Dann gilt $|C| = 2|A|$. Die Kanten in $A$ sind paarweise knotendisjunkt: Hätten zwei Kanten aus $A$ einen gemeinsamen Endpunkt, wäre bei der später betrachteten dieser Endpunkt schon in $C$ gewesen -- sie wäre nicht aufgenommen worden. $A$ ist also ein Matching. \begin{center} \begin{tikzpicture} \node[kndick] (a) at (0,1.5) {$a$}; \node[kndick] (b) at (2,1.5) {$b$}; \node[kndick] (c) at (4,1.5) {$c$}; \node[kndick] (d) at (6,1.5) {$d$}; \node[knoten] (e) at (1,0) {$e$}; \node[knoten] (f) at (5,0) {$f$}; \draw[very thick] (a) -- (b); \draw (b) -- (c); \draw[very thick] (c) -- (d); \draw (b) -- (e); \draw (d) -- (f); \node at (3,-0.9) {\small dick $= A$, gef\"ullt $= C$:\quad $|C| = 2|A| = 4$}; \end{tikzpicture} \end{center} Sei $C^*$ ein minimales Vertex Cover. $C^*$ enthält von jeder Kante aus $A$ mindestens einen Endpunkt, und da die Kanten aus $A$ knotendisjunkt sind, braucht es für jede einen \emph{eigenen} Knoten: $|C^*| \ge |A|$. Zusammen: $|C| = 2|A| \le 2|C^*|$. \hfill$\square$ \newpage % ================================================================== \katkopf{MAX-3-SAT: Güte 2 + scharfe Instanz}{HA 13.1 / Klausur SS23-H A3, 6+4 P.} \problem{MAX-3-SAT}: Gegeben eine Formel $\varphi$ in KNF mit drei Literalen pro Klausel; gesucht eine Belegung $\beta$, die die Anzahl $v(\beta)$ der erfüllten Klauseln maximiert. Algorithmus $A$: Werte $\beta_0$ (alle false) und $\beta_1$ (alle true) aus, gib die bessere Belegung zurück. \begin{enumerate} \item[a)] Zeigen Sie $v(A(\varphi)) \ge \frac12 v(\mathrm{OPT}(\varphi))$ für alle $\varphi$. \item[b)] Geben Sie eine Formel an, bei der $A$ genau die Hälfte der maximal erfüllbaren Klauseln erfüllt (Begründung). \end{enumerate} \lsg \textbf{a)} Jede Klausel enthält ein positives oder ein negatives Literal, wird also von $\beta_1$ oder $\beta_0$ erfüllt. Angenommen $v(A(\varphi)) < \frac12 v(\mathrm{OPT}(\varphi))$ für ein $\varphi$ mit $m$ Klauseln. Wegen $v(\mathrm{OPT}) \le m$ folgt $v(\beta_0) < \frac m2$ \emph{und} $v(\beta_1) < \frac m2$. Da aber jede Klausel von mindestens einer der beiden erfüllt wird, gilt $v(\beta_0) + v(\beta_1) \ge m$ -- also erfüllt eine der beiden $\ge \frac m2$ Klauseln. Widerspruch. Somit hat $A$ Güte 2. \textbf{b)} $\varphi = (x_1 \vee x_2 \vee x_3) \wedge (\neg x_0 \vee \neg x_2 \vee \neg x_3)$. Mit $x_0 = \false$, $x_1 = x_2 = x_3 = \true$ sind beide Klauseln erfüllt: $\mathrm{OPT} = 2$. Aber $\beta_0$ erfüllt nur die zweite Klausel, $\beta_1$ nur die erste: $v(A(\varphi)) = 1 = \frac12 \cdot \mathrm{OPT}$. \hfill$\square$ \newpage % ================================================================== \katkopf{ApproximateSubsetSum: Worst Case + Güte 2}{Klausur SS24-H, A4, 3+7 P.} \problem{ApproximateSubsetSum}: Zahlen $a_1, \dots, a_n \le T$ mit $\sum a_i > T$; maximiere $\sum_{j\in S} a_j \le T$. Algorithmus GA: sortiere absteigend, nimm der Reihe nach, \emph{stoppe} beim ersten nicht mehr passenden Element. \begin{enumerate} \item[a)] Konstruktionsvorschrift für Instanzen, mit denen GA beliebig nah an Güte 2 kommt. \item[b)] Zeigen Sie $\mathrm{GA}(I) \ge \mathrm{OPT}(I)/2$. \end{enumerate} \lsg \textbf{a)} Für gerades $T$: $a_1 = \frac T2 + 1$, $a_2 = a_3 = \frac T2$. GA nimmt $a_1$ und stoppt, denn $a_1 + a_2 > T$: $\mathrm{GA} = \frac T2 + 1$. Optimal ist $a_2 + a_3 = T$. Rate $\frac{T}{T/2+1} \to 2$ für $T \to \infty$. \begin{center} \begin{tikzpicture}[x=0.85cm,y=1cm] \node[left,font=\small] at (-0.3,1.5) {GA}; \draw[fill=black!25] (0,1.2) rectangle (4.5,1.8); \node at (2.25,1.5) {\small $a_1 = \tfrac T2 + 1$}; \draw (4.5,1.2) rectangle (8,1.8); \node[font=\scriptsize,black!60] at (6.25,1.5) {$a_2$ passt nicht mehr}; \node[left,font=\small] at (-0.3,0.3) {OPT}; \draw[fill=black!10] (0,0) rectangle (4,0.6); \node at (2,0.3) {\small $a_2 = \tfrac T2$}; \draw[fill=black!10] (4,0) rectangle (8,0.6); \node at (6,0.3) {\small $a_3 = \tfrac T2$}; \draw[thin] (0,-0.35) -- (8,-0.35); \draw[thin] (0,-0.42) -- (0,-0.28); \draw[thin] (8,-0.42) -- (8,-0.28); \node[below,font=\small] at (0,-0.42) {$0$}; \node[below,font=\small] at (8,-0.42) {$T$}; \end{tikzpicture} \end{center} \textbf{b)} Sei $a_\ell$ das erste Element, das nicht mehr passte (existiert wegen $\sum a_i > T$). Dann gilt \[ \mathrm{GA}(I) + a_\ell > T \ge \mathrm{OPT}(I). \] Wegen der absteigenden Sortierung enthält die GA-Auswahl ein Element $a_j \ge a_\ell$, also $\mathrm{GA}(I) \ge a_\ell$. Einsetzen: $2\,\mathrm{GA}(I) \ge \mathrm{GA}(I) + a_\ell > T \ge \mathrm{OPT}(I)$, somit $\mathrm{GA}(I) \ge \mathrm{OPT}(I)/2$. \hfill$\square$ \newpage % ================================================================== \katkopf{RoundRobin: Güte 2 + Worst Case}{Klausur SS24-N, A4, 10+(10) P.} RoundRobin sortiert die Jobs absteigend und verteilt sie reihum ($J_j$ auf Maschine $((j-1) \bmod m) + 1$). \begin{enumerate} \item[a)] Zeigen Sie per Widerspruch, dass RoundRobin Güte 2 hat. \item[b)] \textbf{Bonus:} Konstruktionsvorschrift für Instanzen mit Rate $\to 2 - \frac1m$ bei beliebigem festen $m$ (mit OPT- und RR-Wert). \end{enumerate} \lsg \textbf{a)} Angenommen $\mathrm{RR}(I) > 2\,\mathrm{OPT}(I)$. Sei $M_i$ die Maschine mit maximaler Last; sie trägt die Jobs $J_i, J_{i+m}, J_{i+2m}, \dots$ Wegen der absteigenden Sortierung gilt für $l \ge 1$: $p_{i+lm} \le p_j$ für alle $j \le lm$, insbesondere \[ p_{i+lm} \;\le\; \frac1m \sum_{j=(l-1)m+1}^{lm} p_j . \] Summieren über $l \ge 1$ ergibt $\mathrm{RR}(I) - p_i \le \frac1m \sum_j p_j \le \mathrm{OPT}(I)$. Mit $p_i \le p_1 \le \mathrm{OPT}(I)$ folgt $\mathrm{RR}(I) \le 2\,\mathrm{OPT}(I)$ -- Widerspruch zur Annahme. \textbf{b)} Ein Job der Größe $m$ und $m(m-1)$ Jobs der Größe 1 (absteigend sortiert steht der große zuerst). RoundRobin gibt Maschine 1 den großen Job und danach reihum jede $m$-te Eins -- $m-1$ weitere: $\mathrm{RR} = m + (m-1) = 2m - 1$. Optimal: großer Job allein, die $m(m-1)$ Einsen auf die übrigen $m-1$ Maschinen (je $m$): $\mathrm{OPT} = m$. Rate $\frac{2m-1}{m} = 2 - \frac1m$. (Für $m = 3$: $\mathrm{RR} = 5$, $\mathrm{OPT} = 3$, Rate $\frac53$.) \begin{center} \begin{tikzpicture}[x=0.7cm,y=1cm] \node[left] at (-0.2,1.775) {\small $M_1$}; \draw[fill=black!25] (0,1.5) rectangle (3,2.05); \node at (1.5,1.775) {\small $3$}; \draw[fill=black!10] (3,1.5) rectangle (4,2.05); \node at (3.5,1.775) {\small $1$}; \draw[fill=black!10] (4,1.5) rectangle (5,2.05); \node at (4.5,1.775) {\small $1$}; \node[left] at (-0.2,1.025) {\small $M_2$}; \draw[fill=black!10] (0,0.75) rectangle (1,1.3); \node at (0.5,1.025) {\small $1$}; \draw[fill=black!10] (1,0.75) rectangle (2,1.3); \node at (1.5,1.025) {\small $1$}; \node[left] at (-0.2,0.275) {\small $M_3$}; \draw[fill=black!10] (0,0) rectangle (1,0.55); \node at (0.5,0.275) {\small $1$}; \draw[fill=black!10] (1,0) rectangle (2,0.55); \node at (1.5,0.275) {\small $1$}; \draw[dashed,thin] (5,-0.1) -- (5,2.05); \node at (2.5,-0.55) {\small RoundRobin: $\mathrm{RR}=5$}; \begin{scope}[xshift=6.5cm] \node[left] at (-0.2,1.775) {\small $M_1$}; \draw[fill=black!25] (0,1.5) rectangle (3,2.05); \node at (1.5,1.775) {\small $3$}; \node[left] at (-0.2,1.025) {\small $M_2$}; \node[left] at (-0.2,0.275) {\small $M_3$}; \foreach \x in {0,1,2} { \draw[fill=black!10] (\x,0.75) rectangle (\x+1,1.3); \node at (\x+0.5,1.025) {\small $1$}; \draw[fill=black!10] (\x,0) rectangle (\x+1,0.55); \node at (\x+0.5,0.275) {\small $1$};} \draw[dashed,thin] (3,-0.1) -- (3,2.05); \node at (1.5,-0.55) {\small Optimum: $\mathrm{OPT}=3$}; \end{scope} \end{tikzpicture} \end{center} \hfill$\square$ \newpage % ================================================================== \katkopf{Min-Edge-Cover: Güte 2 + Worst Case im Kreis}{Klausur SS23-N, A3, 6+4 P.} \problem{Min-Edge-Cover}: Finde eine kleinste Kantenmenge $C$, sodass jeder Knoten zu einer Kante aus $C$ inzident ist ($G$ zusammenhängend). Algorithmus $A$: Gehe die Knoten in beliebiger Reihenfolge durch; ist der aktuelle Knoten $v$ unbedeckt, füge eine beliebige zu $v$ inzidente Kante hinzu. \begin{enumerate} \item[a)] Zeigen Sie $A(G) \le 2\,\mathrm{OPT}(G)$. \item[b)] Kreisgraph $G_n$ ($n \ge 4$ gerade): Größe eines Min-Edge-Covers? Schlechteste Approximationsrate von $A$? Geben Sie Reihenfolge und Kantenwahl an. \end{enumerate} \lsg \textbf{a)} Der Algorithmus fügt höchstens eine Kante pro Knoten hinzu, also $A(G) \le |V|$. Jede Kante deckt höchstens zwei Knoten, also braucht jedes Edge Cover mindestens $|V|/2$ Kanten: $\mathrm{OPT}(G) \ge |V|/2$. Zusammen: $A(G) \le |V| \le 2\,\mathrm{OPT}(G)$. \textbf{b)} Im Kreis $G_n$ bilden $n/2$ paarweise disjunkte Kanten (jede zweite Kreiskante) ein Edge Cover -- weniger geht nicht, also $\mathrm{OPT} = n/2$. Schlechteste Ausführung: Reihenfolge $1, 3, 4, 5, \dots, n$. Knoten 1 wählt $\{1,2\}$; Knoten 3 wählt $\{3,2\}$ (2 ist schon gedeckt -- die Kante deckt nur einen neuen Knoten); Knoten 4 wählt $\{4,3\}$, Knoten 5 wählt $\{5,4\}$, \dots, Knoten $n$ wählt $\{n, n-1\}$. Nach der ersten Kante deckt jede weitere nur einen neuen Knoten: insgesamt $1 + (n-2) = n - 1$ Kanten. Rate \[ \frac{n-1}{n/2} = 2 - \frac2n \;\longrightarrow\; 2 . \] \begin{center} \begin{tikzpicture}[scale=1] \foreach \i in {1,...,8} \node[knoten] (l\i) at ({90-(\i-1)*45}:1.7) {\small $\i$}; \draw[black!50] (l8) -- (l1); \foreach \i/\j in {1/2,2/3,3/4,4/5,5/6,6/7,7/8} \draw[very thick] (l\i) -- (l\j); \node at (0,-2.7) {\small $A$: $n-1 = 7$ Kanten}; \begin{scope}[xshift=7cm] \foreach \i in {1,...,8} \node[knoten] (r\i) at ({90-(\i-1)*45}:1.7) {\small $\i$}; \foreach \i/\j in {2/3,4/5,6/7,8/1} \draw[black!50] (r\i) -- (r\j); \foreach \i/\j in {1/2,3/4,5/6,7/8} \draw[very thick] (r\i) -- (r\j); \node at (0,-2.7) {\small $\mathrm{OPT}$: $n/2 = 4$ Kanten}; \end{scope} \end{tikzpicture} \end{center} \hfill$\square$ \newpage % ================================================================== \katkopf{Christofides-Rate $3/2$ ist scharf}{Präsenz 13.2} Leitergraph: $K_n$ ($n \bmod 4 = 2$), Kanten $E_2 = \{\{i, i+2\}\} \cup \{\{2i+1, 2i+2\}\}$ mit Gewicht 1; alle übrigen Distanzen $=$ kürzester Weg. Zeigen Sie: (a) $\mathrm{OPT} = n$; (b) es gibt eine Ausführung von $\Delta$TSP2 mit Tourlänge $(n-1) + n/2$. \emph{Hinweis ($\Delta$TSP2, Christofides):} (1) MST $T$; (2) $X$ = Knoten mit ungeradem Grad in $T$; (3) minimales perfektes Matching $K$ auf $X$; (4) Eulerkreis in $T + K$; (5) Abkürzen. Bei Gleichständen (mehrere MSTs, mehrere Eulerkreise) darf die Ausführung beliebig -- auch ungünstigst -- gewählt werden. \lsg \textbf{a)} Die Tour \glqq oben hin, unten zurück\grqq{} -- $1, 3, 5, \dots, n-1, n, n-2, \dots, 2, 1$ -- benutzt $n$ Kanten vom Gewicht 1, also $\mathrm{OPT} \le n$. Weniger geht nicht ($n$ Knoten brauchen $n$ Tourkanten vom Gewicht $\ge 1$): $\mathrm{OPT} = n$. \textbf{b)} Bei Gleichständen darf die Ausführung (MST-Wahl, Knotenreihenfolge) adversariell gewählt werden. Wähle den Zickzack-MST \[ 1\text{--}2,\ 2\text{--}4,\ 4\text{--}3,\ 3\text{--}5,\ 5\text{--}6,\ 6\text{--}8,\ 8\text{--}7,\ \dots,\ \{n-1, n\} \] mit $n-1$ Kanten vom Gewicht 1: $d(T) = n - 1$. In diesem Baum haben nur die Knoten 1 und $n$ ungeraden Grad, also ist das Matching $K = \{\{1, n\}\}$ -- Kosten $= $ kürzester Weg von 1 nach $n$ $= n/2$. Die Tour aus Eulerkreis und Abkürzen hat damit Länge $d(T) + d(K) = (n-1) + n/2$. \begin{center} \begin{tikzpicture}[hell/.style={draw=black!20}] \node[knoten] (1) at (0,1.4) {$1$}; \node[knoten] (3) at (1.3,1.4) {$3$}; \node[knoten] (5) at (2.6,1.4) {$5$}; \node[knoten] (2) at (0,0) {$2$}; \node[knoten] (4) at (1.3,0) {$4$}; \node[knoten] (6) at (2.6,0) {$6$}; \draw[hell] (3) -- (4); \draw[very thick] (1) -- (3) -- (5) -- (6) -- (4) -- (2) -- (1); \node[align=center] at (1.3,-0.85) {\scriptsize opt.\ Tour (alle Kanten Gew.\ 1)\\[-2pt] \scriptsize $\mathrm{OPT}=n=6$}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[hell/.style={draw=black!20}] \node[kndick] (1) at (0,1.4) {$1$}; \node[knoten] (3) at (1.3,1.4) {$3$}; \node[knoten] (5) at (2.6,1.4) {$5$}; \node[knoten] (2) at (0,0) {$2$}; \node[knoten] (4) at (1.3,0) {$4$}; \node[kndick] (6) at (2.6,0) {$6$}; \foreach \u/\v in {1/3,3/5,2/4,4/6,3/4} \draw[hell] (\u) -- (\v); \draw[very thick] (1) -- (2) -- (4) -- (3) -- (5) -- (6); \node[align=center] at (1.3,-0.85) {\scriptsize Zickzack-MST, $d(T)=n{-}1=5$\\[-2pt] \scriptsize ungerade Grade nur bei $1$ und $n$}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[kndick] (1) at (0,1.4) {$1$}; \node[knoten] (3) at (1.3,1.4) {$3$}; \node[knoten] (5) at (2.6,1.4) {$5$}; \node[knoten] (2) at (0,0) {$2$}; \node[knoten] (4) at (1.3,0) {$4$}; \node[kndick] (6) at (2.6,0) {$6$}; \foreach \u/\v in {1/3,3/5,2/4,4/6,3/4} \draw[hell] (\u) -- (\v); \draw[very thick] (1) -- (2) -- (4) -- (3) -- (5) -- (6); \draw[very thick,dashed] (1) .. controls (0.3,2.9) and (4.4,2.5) .. node[gw,pos=0.35,above] {$d(K)=n/2=3$} (6); \node[align=center] at (1.3,-0.85) {\scriptsize Matching $K=\{\{1,n\}\}$\\[-2pt] \scriptsize Tour: $(n{-}1)+n/2=8$}; \end{tikzpicture} \end{center} Rate: $\frac{n - 1 + n/2}{n} = \frac32 - \frac1n \to \frac32$. \hfill$\square$ \newpage % ================================================================== \katkopf{Christofides anwenden ($K_4$)}{Klausur SS25-H, A1, 6+4 P.} Vollständiger Graph auf $\{a,b,c,d\}$ mit $d(a,b) = 1$, $d(a,c) = 2$, $d(b,c) = 3$, $d(b,d) = 3$, $d(a,d) = 4$, $d(c,d) = 4$. \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\small}] \node[knoten] (a) at (0,2.4) {$a$}; \node[knoten] (b) at (2.4,2.4) {$b$}; \node[knoten] (d) at (2.4,0) {$d$}; \node[knoten] (c) at (0,0) {$c$}; \draw (a) -- (b) node[gw,midway] {1}; \draw (b) -- (d) node[gw,midway] {3}; \draw (d) -- (c) node[gw,midway] {4}; \draw (c) -- (a) node[gw,midway] {2}; \draw (a) -- (d) node[gw,pos=0.3] {4}; \draw (b) -- (c) node[gw,pos=0.3] {3}; \end{tikzpicture} \end{center} \begin{enumerate} \item[a)] Wenden Sie Christofides ($\Delta$TSP2) mit Startknoten $a$ an; alle Zwischengraphen angeben, auch Schritte ohne Änderung. \item[b)] Nennen Sie die zwei Zusatzeigenschaften der Eingabe, die Christofides braucht, mit je einer verletzenden Eingabe. Geben Sie die Güte an. \end{enumerate} \emph{Hinweis (Christofides):} (1) MST $T$ berechnen; (2) $X$ = Knoten mit ungeradem Grad in $T$; (3) minimales perfektes Matching $K$ auf $X$; (4) Eulerkreis im Multigraphen $T + K$; (5) Abkürzen. \lsg \textbf{a)} \begin{itemize} \item[(1)] MST (Kruskal): $\{a,b\}$ (1), $\{a,c\}$ (2), $\{b,d\}$ (3); Gewicht 6. \item[(2)] Ungerade Grade im MST: $a{:}\,2$, $b{:}\,2$, $c{:}\,1$, $d{:}\,1$ $\Rightarrow X = \{c,d\}$. \item[(3)] Minimales perfektes Matching auf $X$: einzige Möglichkeit $K = \{\{c,d\}\}$, Kosten 4. \item[(4)] Multigraph $T + K$: alle Grade gerade. Eulerkreis ab $a$: $[a, b, d, c, a]$, Kosten $1 + 3 + 4 + 2 = 10$. \item[(5)] Abkürzen: kein Knoten doppelt -- keine Änderung (wird aber geprüft). Tour $R = [a, b, d, c, a]$, Länge 10 (hier optimal: die Alternativen $[a,b,c,d,a]$ und $[a,c,b,d,a]$ kosten je 12). \end{itemize} \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[knoten] (d) at (1.7,0) {$d$}; \node[knoten] (c) at (0,0) {$c$}; \foreach \u/\v in {c/d,a/d,b/c} \draw[hell] (\u) -- (\v); \draw[very thick] (a) -- (b) node[gw,midway] {1}; \draw[very thick] (a) -- (c) node[gw,midway] {2}; \draw[very thick] (b) -- (d) node[gw,midway] {3}; \node at (0.85,-0.75) {\scriptsize (1) MST, Gewicht 6}; \end{tikzpicture}\hspace{3mm}% \begin{tikzpicture}[hell/.style={draw=black!20}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[kndick] (d) at (1.7,0) {$d$}; \node[kndick] (c) at (0,0) {$c$}; \foreach \u/\v in {c/d,a/d,b/c} \draw[hell] (\u) -- (\v); \draw[very thick] (a) -- (b); \draw[very thick] (a) -- (c); \draw[very thick] (b) -- (d); \node at (0.85,-0.75) {\scriptsize (2) $X=\{c,d\}$}; \end{tikzpicture}\hspace{3mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[kndick] (d) at (1.7,0) {$d$}; \node[kndick] (c) at (0,0) {$c$}; \draw[very thick] (a) -- (b); \draw[very thick] (a) -- (c); \draw[very thick] (b) -- (d); \draw[very thick,dashed] (c) -- (d) node[gw,midway] {4}; \node at (0.85,-0.75) {\scriptsize (3) Matching $\{c,d\}$}; \end{tikzpicture}\hspace{3mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (a) at (0,1.7) {$a$}; \node[knoten] (b) at (1.7,1.7) {$b$}; \node[knoten] (d) at (1.7,0) {$d$}; \node[knoten] (c) at (0,0) {$c$}; \foreach \u/\v in {a/d,b/c} \draw[hell] (\u) -- (\v); \draw[very thick,->] (a) -- (b) node[gw,midway] {1}; \draw[very thick,->] (b) -- (d) node[gw,midway] {3}; \draw[very thick,->] (d) -- (c) node[gw,midway] {4}; \draw[very thick,->] (c) -- (a) node[gw,midway] {2}; \node at (0.85,-0.75) {\scriptsize (4) Tour, L\"ange 10}; \end{tikzpicture} \end{center} \textbf{b)} Benötigt werden \emph{Symmetrie} ($d(u,v) = d(v,u)$) und die \emph{Dreiecksungleichung} ($d(u,v) \le d(u,w) + d(w,v)$). Verletzende Eingaben: $d(a,b) = 1$, $d(b,a) = 5$ (asymmetrisch); bzw.\ $d(a,b) = 10$, $d(a,c) = d(c,b) = 1$ ($\Delta$-Ungleichung verletzt). Güte: $\frac32$. \hfill$\square$ \newpage % ================================================================== \katkopf{$\Delta$TSP1 anwenden + Verständnisfragen}{Klausur SS25-N, A1, 5+1+2+2 P.} Vollständiger Graph auf $\{A,B,C,D,E\}$ mit $d(A,B) = 1$, $d(C,D) = 1$, $d(A,C) = 2$, $d(B,C) = 2$, $d(A,E) = 2$, $d(D,E) = 2$, übrige Distanzen 3 (metrisch). \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\small}] \node[knoten] (A) at ( 90:2.1) {$A$}; \node[knoten] (B) at ( 18:2.1) {$B$}; \node[knoten] (C) at ( -54:2.1) {$C$}; \node[knoten] (D) at (-126:2.1) {$D$}; \node[knoten] (E) at ( 162:2.1) {$E$}; \draw (A) -- (B) node[gw,midway] {1}; \draw (B) -- (C) node[gw,midway] {2}; \draw (C) -- (D) node[gw,midway] {1}; \draw (D) -- (E) node[gw,midway] {2}; \draw (E) -- (A) node[gw,midway] {2}; \draw (A) -- (C) node[gw,pos=0.25] {2}; \draw (A) -- (D) node[gw,pos=0.25] {3}; \draw (B) -- (D) node[gw,pos=0.25] {3}; \draw (B) -- (E) node[gw,pos=0.25] {3}; \draw (C) -- (E) node[gw,pos=0.25] {3}; \end{tikzpicture} \end{center} \begin{enumerate} \item[a)] Wenden Sie $\Delta$TSP1 ab Startknoten $C$ an (alle Zwischengraphen, Länge der Rundreise). \item[b)] Welche Güte hat $\Delta$TSP1? \item[c)] Ist das Entscheidungsproblem zum TSP in $P$? Kurze Begründung. \item[d)] Wahr oder falsch: \glqq Güte $1{,}5$ bedeutet $\frac{d(R)}{\mathrm{OPT}(I)} \ge 1{,}5$ für eine Instanz $I$.\grqq{} Kurze Begründung. \end{enumerate} \emph{Hinweis ($\Delta$TSP1):} (1) MST $T$ berechnen; (2) alle MST-Kanten verdoppeln; (3) Eulerkreis ab Startknoten; (4) Abkürzen: bereits besuchte Knoten überspringen. \lsg \textbf{a)} \begin{itemize} \item[(1)] MST: $A$--$B$ (1), $C$--$D$ (1), $B$--$C$ (2), $A$--$E$ (2); Gewicht 6. \item[(2)] Verdoppeln: Multigraph, Gewicht 12. \item[(3)] Eulerkreis ab $C$: $[C,B,A,E,A,B,C,D,C]$. \item[(4)] Abkürzen: Tour $[C,B,A,E,D,C]$, Länge \textbf{8}. (Hier sogar optimal: Es gibt nur zwei Distanz-1-Paare, also kostet jede Rundreise mindestens $1+1+2+2+2 = 8$.) \end{itemize} \begin{center} \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \foreach \u/\v in {A/C,A/D,B/D,B/E,C/E,D/E} \draw[hell] (\u) -- (\v); \draw[very thick] (A) -- (B) node[gw,midway] {1}; \draw[very thick] (C) -- (D) node[gw,midway] {1}; \draw[very thick] (B) -- (C) node[gw,midway] {2}; \draw[very thick] (A) -- (E) node[gw,midway] {2}; \node at (0,-1.9) {\scriptsize (1) MST, Gewicht 6}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture} \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \foreach \u/\v in {A/B,C/D,B/C,A/E}{ \draw[thick] (\u) to[bend left=12] (\v); \draw[thick] (\u) to[bend right=12] (\v);} \node at (0,-1.9) {\scriptsize (2) verdoppelt, Gewicht 12}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[nr/.style={fill=white,inner sep=1pt,font=\scriptsize}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \draw[->] (C) to[bend left=18] node[nr] {1} (B); \draw[->] (B) to[bend left=18] node[nr] {2} (A); \draw[->] (A) to[bend left=18] node[nr] {3} (E); \draw[->] (E) to[bend left=18] node[nr] {4} (A); \draw[->] (A) to[bend left=18] node[nr] {5} (B); \draw[->] (B) to[bend left=18] node[nr] {6} (C); \draw[->] (C) to[bend left=18] node[nr] {7} (D); \draw[->] (D) to[bend left=18] node[nr] {8} (C); \node at (0,-1.9) {\scriptsize (3) Eulerkreis ab $C$}; \end{tikzpicture}\hspace{2mm}% \begin{tikzpicture}[gw/.style={fill=white,inner sep=1pt,font=\scriptsize}, hell/.style={draw=black!20}] \node[knoten] (A) at ( 90:1.2) {$A$}; \node[knoten] (B) at ( 18:1.2) {$B$}; \node[knoten] (C) at ( -54:1.2) {$C$}; \node[knoten] (D) at (-126:1.2) {$D$}; \node[knoten] (E) at ( 162:1.2) {$E$}; \foreach \u/\v in {A/C,A/D,B/D,B/E,C/E} \draw[hell] (\u) -- (\v); \draw[very thick,->] (C) -- (B) node[gw,midway] {2}; \draw[very thick,->] (B) -- (A) node[gw,midway] {1}; \draw[very thick,->] (A) -- (E) node[gw,midway] {2}; \draw[very thick,->] (E) -- (D) node[gw,midway] {2}; \draw[very thick,->] (D) -- (C) node[gw,midway] {1}; \node at (0,-1.9) {\scriptsize (4) Tour, L\"ange 8}; \end{tikzpicture} \end{center} \textbf{b)} Güte 2. \textbf{c)} Nein (außer $P = NP$): Das TSP-Entscheidungsproblem ist NP-vollständig -- \problem{HamiltonianCycle} reduziert darauf (Kanten Distanz 1, Nicht-Kanten $|V|{+}1$, $L = |V|$). Läge es in $P$, folgte $P = NP$. \textbf{d)} Falsch. Multiplikative Güte $\alpha$ ist eine \emph{obere} Schranke für alle Instanzen: $d(R) \le \alpha \cdot \mathrm{OPT}(I)$ für \emph{jede} Instanz $I$ -- nicht eine untere Schranke $\ge$ für eine Instanz. \hfill$\square$ \newpage % ================================================================== \katkopf{Parallel-Task-Scheduling}{Klausur SS25-H, A5, 1+1+8+(10) P.} Jobs belegen $q_j \in [m]$ Maschinen gleichzeitig für Zeit $p_j$. ListScheduling platziert die Jobs der Reihe nach zum frühestmöglichen Zeitpunkt auf den $q_j$ am wenigsten belasteten Maschinen. \begin{enumerate} \item[a)] Anwendung: $m = 3$; Jobs $(p, q)$: $(1,1), (1,3), (2,2), (3,1)$. Geben Sie den Schedule an. \item[b)] Worst-Case-Güte für $q_j = 1$? \item[c)] Zeigen Sie $\mathrm{LS}(I) \le \mathrm{OPT}(I) + \frac12 p_{\max}$ für alle $I$ mit $\frac m3 < q_j \le \frac m2$. \item[d)] \textbf{Bonus:} Güte für $\frac{m}{k+1} < q_j \le \frac mk$ ($k \ge 2$)? Beweis. \end{enumerate} \lsg \textbf{a)} Start mit Lasten $C = (0,0,0)$: \begin{itemize} \item Job 1 $(1,1)$: startet bei 0 auf einer Maschine -- $C = (1,0,0)$. \item Job 2 $(1,3)$: braucht alle 3 Maschinen, frühester Start $\max C = 1$, läuft $[1,2]$ -- $C = (2,2,2)$. \item Job 3 $(2,2)$: Start 2 auf zwei Maschinen, läuft $[2,4]$ -- $C = (4,4,2)$. \item Job 4 $(3,1)$: leerste Maschine hat Last 2, Start 2, läuft $[2,5]$ -- $C = (5,4,4)$. \end{itemize} \textbf{Makespan 5.} \begin{center} \begin{tikzpicture}[x=1.3cm,y=1cm] \node[left] at (-0.15,2.0) {\small $M_1$}; \node[left] at (-0.15,1.2) {\small $M_2$}; \node[left] at (-0.15,0.4) {\small $M_3$}; \draw[black!40,thin] (0,0.8) rectangle (1,1.6); \draw[black!40,thin] (0,0) rectangle (1,0.8); \draw[black!40,thin] (4,1.6) rectangle (5,2.4); \draw[black!40,thin] (4,0.8) rectangle (5,1.6); \draw[fill=black!10] (0,1.6) rectangle (1,2.4); \node at (0.5,2.0) {\small $J_1$}; \draw[fill=black!25] (1,0) rectangle (2,2.4); \node at (1.5,1.2) {\small $J_2$}; \draw[fill=black!10] (2,0.8) rectangle (4,2.4); \node at (3,1.6) {\small $J_3$}; \draw[fill=black!25] (2,0) rectangle (5,0.8); \node at (3.5,0.4) {\small $J_4$}; \draw[dashed,thin] (5,-0.35) -- (5,2.6); \node[above] at (5,2.6) {\small $C_{\max}=5$}; \draw[->,thin] (0,-0.35) -- (5.6,-0.35) node[below] {\small $t$}; \foreach \x in {0,1,2,3,4,5} { \draw[thin] (\x,-0.42) -- (\x,-0.28); \node[below] at (\x,-0.45) {\small $\x$};} \end{tikzpicture} \end{center} \textbf{b)} Für $q_j = 1$ ist es das klassische ListScheduling: Güte $2 - \frac1m$. \textbf{c)} Sei $j$ ein Job, der den Makespan bestimmt, mit Startzeit $s = \mathrm{LS} - p_j$. Zu jedem Zeitpunkt $t < s$ sind weniger als $q_j \le \frac m2$ Maschinen frei (sonst wäre $j$ früher platziert worden), also mehr als $\frac m2$ belegt. Da jeder Job höchstens $\frac m2$ Maschinen belegt, laufen dann mindestens zwei Jobs; da jeder \emph{mehr} als $\frac m3$ belegt, laufen höchstens zwei. Also laufen in $[0, s)$ stets \emph{genau zwei} Jobs. Damit ist \[ 2s = \int_0^s \#\text{laufende Jobs}\, dt \;\le\; \sum_i p_i - p_j . \] Im Optimum laufen ebenfalls nie drei Jobs gleichzeitig (drei Jobs belegen zusammen mehr als $3 \cdot \frac m3 = m$ Maschinen -- mehr als vorhanden), also $\sum_i p_i \le 2\,\mathrm{OPT}$. Einsetzen: $s \le \frac12(\sum_i p_i - p_j) \le \mathrm{OPT} - \frac12 p_j$, folglich \[ \mathrm{LS} = s + p_j \;\le\; \mathrm{OPT} + \tfrac12 p_j \;\le\; \mathrm{OPT} + \tfrac12 p_{\max}. \] \textbf{d)} Güte $2 - \frac1k$. Analog: Vor dem Start von $j$ sind mehr als $m - \frac mk = \frac{(k-1)m}{k}$ Maschinen belegt; jeder Job belegt $\le \frac mk$, also laufen $\ge k$ Jobs -- und $\le k$, da jeder $> \frac{m}{k+1}$ belegt. Genau $k$ Jobs: $k s \le \sum_i p_i - p_j$. Im Optimum laufen $\le k$ Jobs parallel, also $\sum_i p_i \le k\,\mathrm{OPT}$. Daraus $s \le \mathrm{OPT} - \frac1k p_j$ und $\mathrm{LS} \le \mathrm{OPT} + (1 - \frac1k) p_j \le \mathrm{OPT} + (1 - \frac1k) p_{\max} \le (2 - \frac1k)\,\mathrm{OPT}$ (mit $p_{\max} \le \mathrm{OPT}$). \hfill$\square$ \newpage % ================================================================== \katkopf{Strip Packing: NFDH}{Klausur SS25-N, A5, 2+3+5+(10) P.} \problem{StripPacking}: Rechtecke (nach Höhe absteigend sortiert) in einen Streifen der Breite 1 packen, Höhe minimieren. NFDH packt stufenweise von links; passt ein Rechteck nicht mehr, beginnt eine neue Stufe. \begin{enumerate} \item[a)] Instanz: fünf Rechtecke der Höhe 1 mit Breiten $\frac12, \frac14, \frac12, \frac14, \frac12$; NFDH braucht Höhe 3. Geben Sie eine optimale Packung und die Approximationsrate an. \item[b)] Zeigen Sie: Es gibt $L_n$ mit $\lim_{n\to\infty} \mathrm{NFDH}(L_n)/\mathrm{OPT}(L_n) = 2$. \item[c)] Zeigen Sie für Instanzen mit $h(r_i) = 1$: $\mathrm{NFDH}(L) \le 2\,\mathrm{OPT}(L) + 1$. \item[d)] \textbf{Bonus:} Zeigen Sie dieselbe Schranke für $h(r_i) \le 1$. \end{enumerate} \lsg \textbf{a)} Optimal: Stufe 1 mit $\frac12 + \frac12 = 1$ (Rechtecke 1 und 3), Stufe 2 mit $\frac12 + \frac14 + \frac14 = 1$ (Rechtecke 5, 2, 4) -- Höhe $\mathrm{OPT} = 2$. Rate: $\frac{3}{2}$. \begin{center} \begin{tikzpicture}[x=3.4cm,y=0.50cm] \draw[thin] (0,3.35) -- (0,0) -- (1,0) -- (1,3.35); \draw[fill=black!25] (0,0) rectangle (0.5,1); \node at (0.25,0.5) {\small $r_1\,(\tfrac12)$}; \draw[fill=black!10] (0.5,0) rectangle (0.75,1); \node at (0.625,0.5) {\scriptsize $r_2\,(\tfrac14)$}; \draw[fill=black!25] (0,1) rectangle (0.5,2); \node at (0.25,1.5) {\small $r_3\,(\tfrac12)$}; \draw[fill=black!10] (0.5,1) rectangle (0.75,2); \node at (0.625,1.5) {\scriptsize $r_4\,(\tfrac14)$}; \draw[fill=black!25] (0,2) rectangle (0.5,3); \node at (0.25,2.5) {\small $r_5\,(\tfrac12)$}; \draw[dashed,thin] (0,3) -- (1,3); \node[right] at (1.03,3) {\small $\mathrm{NFDH}=3$}; \node at (0.5,-0.55) {\small Breite $1$}; \begin{scope}[xshift=7.6cm] \draw[thin] (0,3.35) -- (0,0) -- (1,0) -- (1,3.35); \draw[fill=black!25] (0,0) rectangle (0.5,1); \node at (0.25,0.5) {\small $r_1\,(\tfrac12)$}; \draw[fill=black!25] (0.5,0) rectangle (1,1); \node at (0.75,0.5) {\small $r_3\,(\tfrac12)$}; \draw[fill=black!25] (0,1) rectangle (0.5,2); \node at (0.25,1.5) {\small $r_5\,(\tfrac12)$}; \draw[fill=black!10] (0.5,1) rectangle (0.75,2); \node at (0.625,1.5) {\scriptsize $r_2\,(\tfrac14)$}; \draw[fill=black!10] (0.75,1) rectangle (1,2); \node at (0.875,1.5) {\scriptsize $r_4\,(\tfrac14)$}; \draw[dashed,thin] (0,2) -- (1,2); \node[right] at (1.03,2) {\small $\mathrm{OPT}=2$}; \node at (0.5,-0.55) {\small Breite $1$}; \end{scope} \end{tikzpicture} \end{center} \textbf{b)} $L_n$ ($n = 2t$): alle Höhen 1; Breiten abwechselnd $1$ und $\varepsilon$. NFDH: Jedes Breite-1-Rechteck füllt seine Stufe komplett, jedes $\varepsilon$-Rechteck eröffnet eine neue Stufe, auf die das nächste Breite-1-Rechteck nicht mehr passt -- $2t$ Stufen, $\mathrm{NFDH} = 2t$. Optimal: die $t$ Breite-1-Rechtecke je eigene Stufe, alle $t$ $\varepsilon$-Rechtecke zusammen auf eine Stufe -- $\mathrm{OPT} \le t + 1$. Rate $\frac{2t}{t+1} \to 2$. \begin{center} \begin{tikzpicture}[x=3.2cm,y=0.26cm] \draw[thin] (0,6.5) -- (0,0) -- (1,0) -- (1,6.5); \foreach \y in {0,2,4} { \draw[fill=black!25] (0,\y) rectangle (1,\y+1); \node at (0.5,\y+0.5) {\small $1$}; \draw[fill=black!10] (0,\y+1) rectangle (0.06,\y+2); \node[right] at (0.09,\y+1.5) {\small $\varepsilon$};} \draw[dashed,thin] (0,6) -- (1,6); \node[right] at (1.03,6) {\small $\mathrm{NFDH}=2t$}; \node at (0.5,-1.0) {\small NFDH: jede Stufe ein Rechteck}; \begin{scope}[xshift=7.7cm] \draw[thin] (0,6.5) -- (0,0) -- (1,0) -- (1,6.5); \foreach \y in {0,1,2} { \draw[fill=black!25] (0,\y) rectangle (1,\y+1); \node at (0.5,\y+0.5) {\small $1$};} \foreach \x in {0,0.09,0.18} \draw[fill=black!10] (\x,3) rectangle (\x+0.06,4); \node[right] at (0.28,3.5) {\small $t$ mal $\varepsilon$}; \draw[dashed,thin] (0,4) -- (1,4); \node[right] at (1.03,4) {\small $\mathrm{OPT}\le t+1$}; \node at (0.5,-1.0) {\small OPT: alle $\varepsilon$ auf eine Stufe}; \end{scope} \end{tikzpicture} \end{center} \textbf{c)} Seien $W_1, \dots, W_S$ die Gesamtbreiten der NFDH-Stufen; $\mathrm{NFDH} = S$. Für $i < S$ gilt $W_i + W_{i+1} > 1$: Das erste Rechteck der Stufe $i{+}1$ (Breite $\le W_{i+1}$) passte nicht mehr auf Stufe $i$. Summieren über $i = 1, \dots, S-1$: \[ 2 \sum_i W_i \;\ge\; \sum_{i=1}^{S-1} (W_i + W_{i+1}) \;>\; S - 1 . \] Die Gesamtfläche ist $\sum_i W_i$ (Höhen 1) und passt in einen Streifen der Breite 1: $\mathrm{OPT} \ge \sum_i W_i$. Also $2\,\mathrm{OPT} > S - 1$, d.\,h.\ $\mathrm{NFDH} = S \le 2\,\mathrm{OPT} + 1$. \textbf{d)} Sei $H_i$ die Höhe der Stufe $i$ ($=$ Höhe ihres ersten Rechtecks), $A_i$ ihre Rechteck-Gesamtfläche. Erstens: Jedes Rechteck der Stufe $i$ hat Höhe $\ge H_{i+1}$ (Sortierung), also $A_i \ge W_i \cdot H_{i+1}$. Zweitens: Das \emph{erste} Rechteck der Stufe $i{+}1$ passte nicht mehr auf Stufe $i$ -- Breite $> 1 - W_i$, Höhe $H_{i+1}$, Fläche $> (1 - W_i)\, H_{i+1}$. Zusammen: \[ H_{i+1} \;=\; W_i H_{i+1} + (1 - W_i) H_{i+1} \;<\; A_i + \bigl(\text{Fläche des ersten Rechtecks von Stufe } i{+}1\bigr). \] Summiert über $i \ge 1$ zählt jede Stufe höchstens zweimal (als $A_i$ und über ihr erstes Rechteck): $\sum_{i \ge 2} H_i < 2 \cdot \text{Gesamtfläche} \le 2\,\mathrm{OPT}$; mit $H_1 \le 1$ folgt $\mathrm{NFDH} = \sum_i H_i \le 2\,\mathrm{OPT} + 1$. \hfill$\square$ \newpage % ################################################################## \section{Wahr oder falsch?} % ################################################################## % ================================================================== \katkopf{Fragen über Fragen I}{Präsenz 10.1} Diskutieren Sie: \begin{enumerate} \item[(i)] Für jede Sprache, die eine NDTM in polynomieller Zeit akzeptiert, existiert eine DTM, die sie in polynomieller Zeit akzeptiert. \item[(ii)] $A$ ist NP-schwer $\implies A \in P$. \end{enumerate} \lsg \textbf{(i)} Gilt genau dann, wenn $P = NP$: Dann liegen alle NDTM-polynomiell lösbaren Probleme ($= \NP$) auch in $P$. Falls $P \ne NP$, gilt sie nicht -- ein Problem aus $\NP \setminus P$ wäre sonst per DTM-Simulation in $P$. \textbf{(ii)} Falsch. Es gibt NP-schwere Probleme, die nicht einmal in $\NP$ liegen, z.\,B.\ das Halteproblem -- diese liegen erst recht nicht in $P$. (NP-schwer ist eine untere Schranke, $\in \NP$ eine obere; beides zusammen ist NP-vollständig.) \hfill$\square$ \newpage % ================================================================== \katkopf{Fragen über Fragen II}{Präsenz 11.1} Wahr oder falsch? \begin{enumerate} \item[a)] Für $L \in \NP$ gilt: aus $L \redp \problem{3-SAT}$ folgt, dass $L$ NP-vollständig ist. \item[b)] Gilt $L \redp \problem{3-SAT}$ und $\problem{3-SAT} \redp L$, dann ist $L$ NP-vollständig. \item[c)] Sei $L$ NP-vollständig. Dann gilt $L \in P \iff P = NP$. \item[d)] Es ist möglich, dass $\problem{3-SAT} \in P$ und $\problem{Clique} \notin P$. \end{enumerate} \lsg \textbf{a)} Falsch. Gegenbeispiel $L = \emptyset \in \NP$: $L \redp \problem{3-SAT}$ sagt nur, dass sich $L$ \emph{auf} 3-SAT reduzieren lässt -- nicht umgekehrt, also keine Schwere. \textbf{b)} Wahr. $\problem{3-SAT} \redp L$ gibt die NP-Schwere (3-SAT ist NP-vollständig, Transitivität); $L \redp \problem{3-SAT}$ gibt $L \in \NP$. Das ist die Definition von NP-vollständig. \textbf{c)} Wahr. Jedes $L' \in \NP$ reduziert auf $L$; liegt $L$ in $P$, dann auch jedes $L'$ -- also $P = NP$. Umgekehrt folgt aus $P = NP$ sofort $L \in P$, da $L \in \NP$. \textbf{d)} Falsch. \problem{Clique} $\in \NP$ reduziert auf das NP-vollständige \problem{3-SAT}; aus $\problem{3-SAT} \in P$ folgt also $\problem{Clique} \in P$. \hfill$\square$ \newpage % ================================================================== \katkopf{Wenn die ETH fehlschlägt, gilt $P = NP$?}{Klausur SS24-H, A6 (Bonus), 10 P.} Die \emph{Exponentialzeithypothese} (ETH) besagt: \problem{3-SAT} mit $n$ Variablen ist nicht in Zeit $2^{o(n)} \cdot |I|^{O(1)}$ lösbar. Beweisen oder widerlegen Sie: Wenn die ETH fehlschlägt, gilt $P = NP$. \lsg \textbf{Die Aussage ist falsch} (nicht beweisbar; die Implikation gilt nicht). \glqq ETH fehlschlägt\grqq{} bedeutet nur: \problem{3-SAT} ist in $2^{o(n)} \cdot \poly$ lösbar -- also subexponentiell. Subexponentiell ist nicht polynomiell: Eine Laufzeit wie $2^{\sqrt{n}}$ erfüllt $2^{o(n)}$, ist aber superpolynomiell. Ein Fehlschlagen der ETH wäre also damit verträglich, dass \problem{3-SAT} (und damit alle NP-Probleme) zwar in $2^{\sqrt n}$, aber nicht in Polynomialzeit lösbar sind -- $P \ne NP$ bliebe möglich. \begin{center} \begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}] \draw[->] (0,0) -- (12.2,0) node[below right,plab] {Wachstum}; \foreach \x/\l in {1.6/{$n^c$ (polynomiell)}, 6.0/{$2^{\sqrt n}$}, 10.4/{$2^n$ (exponentiell)}} { \draw (\x,-0.08) -- (\x,0.08); \node[above,font=\small] at (\x,0.15) {\l}; } \node[font=\small] at (3.8,0.4) {$\ll$}; \node[font=\small] at (8.2,0.4) {$\ll$}; \draw (0.2,-0.5) -- (0.2,-0.7) -- (3.0,-0.7) -- (3.0,-0.5); \node[below,plab] at (1.6,-0.75) {$P$}; \draw (0.2,-1.5) -- (0.2,-1.7) -- (7.4,-1.7) -- (7.4,-1.5); \node[below,plab] at (3.8,-1.75) {$2^{o(n)}\cdot\mathrm{poly}$ --- hier landet 3-SAT, wenn die ETH fehlschl\"agt}; \draw[->] (6.0,1.6) -- (6.0,0.75); \node[above,plab] at (6.0,1.65) {subexponentiell, aber NICHT polynomiell\\ $\Rightarrow$ ETH kann fehlschlagen, ohne dass $P=NP$ gilt}; \end{tikzpicture} \end{center} Die Umkehrung gilt dagegen: Aus $P = NP$ folgt \problem{3-SAT} $\in P \subseteq 2^{o(n)}$, also wäre die ETH falsch. Die behauptete Richtung folgt daraus nicht. \hfill$\square$ \newpage % ################################################################## \section{Turingmaschinen} % ################################################################## % ================================================================== \katkopf{TM für Palindrome}{Hausaufgabe 10.2, 5 P.} Entwerfen Sie eine Turingmaschine (Einband-TM) für $L = \{w \in \Sigma^* \mid w \text{ ist ein Palindrom}\}$ und geben Sie die Laufzeit an (mit Begründung von Korrektheit und Laufzeit). \lsg \textbf{Die Maschine:} \begin{enumerate} \item[(1)] Falls kein Wort auf dem Band steht, akzeptiere. \item[(2)] Falls nur ein Buchstabe auf dem Band steht, akzeptiere. \item[(3)] Lies den ersten Buchstaben, bewege den Kopf zum letzten. Sind beide verschieden, verwirf. Sonst ersetze beide durch ein neues Symbol $x$ (erst den letzten, dann zurück zum ersten). \item[(4)] Gehe zu Schritt (1). \end{enumerate} \textbf{Korrektheit:} Die Maschine vergleicht wiederholt den ersten und den letzten (unmarkierten) Buchstaben und streicht beide. Bei Ungleichheit ist das Wort kein Palindrom -- verwerfen. Sonst endet sie in der Mitte mit einem oder keinem Buchstaben -- in beiden Fällen ein Palindrom, akzeptieren. \textbf{Laufzeit:} Die Schritte (1)--(3) kosten je $O(n)$. Pro Durchlauf werden zwei Buchstaben gestrichen, also gibt es höchstens $\lfloor n/2 \rfloor$ Durchläufe. Insgesamt $O(n^2)$. \hfill$\square$ \bspkopf{A61 -- TM für Palindrome} \textbf{Eingabe $w=\mathtt{abba}$ (Palindrom).} Die Maschine vergleicht die äußersten unmarkierten Buchstaben und ersetzt gleiche Paare durch $x$; der Bandinhalt entwickelt sich: \begin{center} \begin{tabular}{@{}l@{\qquad}l@{}} \texttt{a\,b\,b\,a} & erstes \texttt{a} $=$ letztes \texttt{a} $\Rightarrow$ beide $\to x$\\ \texttt{x\,b\,b\,x} & \texttt{b} $=$ \texttt{b} $\Rightarrow$ beide $\to x$\\ \texttt{x\,x\,x\,x} & keine unmarkierten Buchstaben $\Rightarrow$ \textbf{akzeptiert}\\ \end{tabular} \end{center} \textbf{Nicht-Palindrom $w=\mathtt{ab}$.} Erster Buchstabe \texttt{a}, letzter \texttt{b}: verschieden $\Rightarrow$ \textbf{verworfen} (Band bleibt \texttt{a\,b}). \textbf{Ungerades Palindrom $w=\mathtt{aba}$.} \begin{center} \begin{tabular}{@{}l@{\qquad}l@{}} \texttt{a\,b\,a} & \texttt{a} $=$ \texttt{a} $\Rightarrow$ beide $\to x$\\ \texttt{x\,b\,x} & ein einzelner Buchstabe (\texttt{b}) in der Mitte $\Rightarrow$ \textbf{akzeptiert}\\ \end{tabular} \end{center} \newpage % ================================================================== \katkopf{TM für $L = \{0^{2^n}\}$ + RAM-Vergleich}{Präsenz 10.3} Entwerfen Sie eine Turingmaschine (Einband-TM) für $L = \{0^{2^n} \mid n \in \mathbb{N}\}$ über $\Sigma = \{0\}$; begründen Sie Korrektheit und Laufzeit. Diskutieren Sie die Laufzeit im Vergleich zu einem RAM-Algorithmus. \lsg \textbf{Die Maschine:} \begin{enumerate} \item[(1)] Falls genau eine 0 auf dem Band steht, akzeptiere. \item[(2)] Laufe über das Band und ersetze jede zweite 0 durch $x$. \item[(3)] Falls das letzte Symbol eine 0 war (ungerade Anzahl), verwirf. \item[(4)] Gehe zu Schritt (1). \end{enumerate} \textbf{Korrektheit:} Eine Zahl ist genau dann eine Zweierpotenz, wenn wiederholtes Halbieren bei 1 endet, ohne je auf eine ungerade Zahl $> 1$ zu treffen. Genau das prüft die Maschine: Jeder Durchlauf halbiert die Anzahl der Nullen; eine ungerade Anzahl $> 1$ führt zum Verwerfen. \textbf{Laufzeit:} Jeder Durchlauf kostet $O(n)$; die Anzahl halbiert sich pro Durchlauf, also $O(\log n)$ Durchläufe. Insgesamt $O(n \log n)$. \textbf{RAM-Vergleich:} Ein RAM-Algorithmus zählt die Nullen ($O(n)$) und prüft, ob die Anzahl eine Zweierpotenz ist ($O(\log n)$) -- Laufzeit $O(n)$. Der wahlfreie Speicherzugriff erlaubt es, die Aufgabe schneller zu lösen als die kopfbewegungsgebundene Turingmaschine. \hfill$\square$ \bspkopf{A62 -- TM für $L=\{0^{2^n}\}$} \textbf{Eingabe $\mathtt{0000}$ ($=2^2$, in $L$).} Jeder Durchlauf ersetzt jede zweite 0 durch $x$, halbiert also die Anzahl der Nullen: \begin{center} \begin{tabular}{@{}l@{\qquad}l@{}} \texttt{0\,0\,0\,0} & 4 Nullen (gerade): jede zweite $\to x$, weiter\\ \texttt{0\,x\,0\,x} & 2 Nullen (gerade): jede zweite $\to x$, weiter\\ \texttt{0\,x\,x\,x} & genau eine 0 $\Rightarrow$ \textbf{akzeptiert}\\ \end{tabular} \end{center} \textbf{Eingabe $\mathtt{000}$ ($=3$, nicht in $L$).} \begin{center} \begin{tabular}{@{}l@{\qquad}l@{}} \texttt{0\,0\,0} & 3 Nullen (ungerade): jede zweite $\to x$\\ \texttt{0\,x\,0} & letztes Symbol ist eine 0 (ungerade Anzahl) $\Rightarrow$ \textbf{verworfen}\\ \end{tabular} \end{center} Genau das prüft die Maschine: fortgesetztes Halbieren; trifft sie auf eine ungerade Anzahl $>1$, verwirft sie, sonst endet sie bei einer einzigen 0. \end{document}