\documentclass[11pt]{article} \input{style.tex} \title{\textbf{AAK -- Übung}\\[0.4em] \large Beweistechniken und Klausurtraining\\[0.2em] \normalsize Aufgabentypen, Musterbeweise und Selbsttests zu Serie 9--13} \author{Klausurvorbereitung \glqq Analyse von Algorithmen und Komplexität\grqq{} (CAU Kiel)} \date{Sommersemester 2026} \begin{document} \maketitle \noindent\textbf{Wie du dieses Dokument benutzt.} Voraussetzung ist \textbf{Fundament.pdf} -- alle Begriffe und Problemdefinitionen werden hier als bekannt vorausgesetzt. Dieses PDF trainiert die \emph{Aufgabentypen der Klausur}: Pro Kapitel bekommst du ein Rezept, komplett ausformulierte Musterbeweise (aus Musterlösungen der Serien und dem Skript) und 1--2 \emph{Selbsttest-Aufgaben} aus echten Altklausuren. Löse die Selbsttests schriftlich unter Zeitdruck, bevor du die Lösungen im Anhang~\ref{sec:loesungen} liest. \medskip \noindent\textbf{Der Klausur-Bauplan.} Alle vier Altklausuren (SS23/SS24, je Haupt- und Nachklausur) folgen demselben Skelett -- 5--6 Aufgaben, 120 Minuten, ein handbeschriebenes Blatt erlaubt: \begin{center} \small \begin{tabular}{clcc} \toprule \# & Aufgabentyp & Punkte & Kapitel hier \\ \midrule 1 & Approx-Algorithmus \emph{anwenden} (LPT, Christofides, Greedy, $\Delta$TSP$_1$) & $\sim$10 & \ref{sec:anwenden} \\ 2 & \emph{Vorlesungsbeweis} reproduzieren & 10 & \ref{sec:vlbeweise} \\ 3 & \emph{NP-Schwere per Reduktion} (Variantenprobleme, 2 Stück) & 5+5 & \ref{sec:reduktion} \\ 4 & \emph{Güte-Beweis} + Worst-Case-Instanz konstruieren & $\sim$10 & \ref{sec:gute} \\ 5 & \emph{ETH-Lower-Bounds} aus vorgegebener Reduktion & 5+5 & \ref{sec:eth} \\ (6) & NP-Zugehörigkeit (Zertifikat/Verifizierer/NTM) -- nur SS23 & 10 & \ref{sec:npzug} \\ \bottomrule \end{tabular} \end{center} \tableofcontents \newpage % ================================================================== \section{NP-Zugehörigkeit zeigen}\label{sec:npzug} % ================================================================== Aufgabenformat (Klausur SS23, beide Male identisch): \glqq Zeigen Sie auf verschiedene Weisen, dass das Problem in NP liegt: (a) Zertifikat angeben, (b) Verifizierer beschreiben + Laufzeit konkret, (c) NTM in Worten + Laufzeit.\grqq \begin{rezept}{Der NP-Dreischritt} \textbf{(a) Zertifikat:} Die \glqq Lösung\grqq{} des Problems als Objekt -- Teilmenge, Belegung, Permutation. Angeben, wie es kodiert ist (z.\,B. ein Bit pro Element) und dass es polynomiell lang ist.\\[0.4em] \textbf{(b) Verifizierer:} Deterministischer Algorithmus, der (Instanz, Zertifikat) bekommt und \emph{alle} geforderten Eigenschaften prüft. Danach drei Punkte abhaken: \begin{enumerate} \item \emph{Beschreibung}: Welche Checks laufen in welcher Reihenfolge? \item \emph{Korrektheit}: Ja-Instanz $\Rightarrow$ es existiert ein Zertifikat, das akzeptiert wird; Nein-Instanz $\Rightarrow$ kein Zertifikat wird akzeptiert. \item \emph{Laufzeit}: pro Check abschätzen, Summe polynomiell (in der Klausur: konkret in $O$-Notation!). \end{enumerate} \textbf{(c) NTM:} \glqq Rate und prüfe\grqq{} -- für jedes Element nichtdeterministisch entscheiden, ob es zur Lösung gehört; danach deterministisch dieselben Checks wie in (b). Korrektheit und Laufzeit wie oben (polynomiell viele Rateschritte + polynomielle Prüfung). \end{rezept} \begin{merke} Zusammenhang (a)--(c): Die Folge der Rateschritte der NTM \emph{ist} das Zertifikat. Beide Wege nutzen die Extra-Ressource, um eine Lösungskandidatin zu bestimmen und dann nur noch zu \emph{prüfen}. \end{merke} \subsection{Musterlösung: \problem{Knapsack} $\in$ NP (Präsenz 9.1)} \textbf{NTM:} Für jeden Gegenstand entscheide nichtdeterministisch, ob er in den Rucksack kommt. Prüfe anschließend $\sum_{i \in S} w_i \le K$ und $\sum_{i \in S} p_i \ge P$; akzeptiere genau dann. \emph{Korrektheit:} Existiert eine zulässige Füllung mit genügend Profit, gibt es eine Folge von Entscheidungen, die sie findet -- diese wird akzeptiert. Existiert keine, lehnt jeder Rechenweg ab. \emph{Laufzeit:} $n$ Rateschritte, Summation und Vergleich in $O(n)$ Arithmetikschritten -- polynomiell. \medskip \textbf{Verifizierer:} Zertifikat ist $S \subseteq [n]$ (ein Bit pro Gegenstand). Berechne $\sum_{i \in S} w_i$ und $\sum_{i \in S} p_i$, vergleiche mit $K$ und $P$, akzeptiere entsprechend. \emph{Korrektheit und Laufzeit:} analog. \subsection{Musterlösung: \problem{FVS} $\in$ NP per Verifizierer (HA 9.2)} Zertifikat: $X \subseteq V$ (ein Bit pro Knoten). Prüfe (1) $|X| \le k$, (2) $G \setminus X$ ist azyklisch -- dafür den Algorithmus zur \emph{topologischen Sortierung} aus der Vorlesung nutzen: Er findet genau dann eine topologische Sortierung, wenn der Graph kreisfrei ist. Beide Checks polynomiell $\Rightarrow$ polynomieller Verifizierer. \begin{merke} Nutze bekannte polynomielle Algorithmen als Bausteine des Verifizierers (topologische Sortierung, DFS/BFS, Sortieren) -- mit Namen zitieren statt neu erfinden. \end{merke} \subsection{Klausurniveau durchgerechnet: \problem{Longest Path} (SS23 A2)} \emph{Gegeben $G = (V,E)$ und $k$; gibt es einen einfachen Pfad der Länge $\ge k$?} \medskip \textbf{(a) Zertifikat:} Eine Folge von $k+1$ paarweise verschiedenen Knoten $(v_0, v_1, \dots, v_k)$ -- der behauptete Pfad. Länge: $O(k \log |V|)$ Bits, polynomiell. \medskip \textbf{(b) Verifizierer:} Prüfe (1) alle $v_i$ paarweise verschieden -- $O(k^2)$ Vergleiche (oder Sortieren), (2) $\{v_i, v_{i+1}\} \in E$ für alle $i = 0, \dots, k-1$ -- $k$ Lookups in der Adjazenzmatrix, je $O(1)$, also $O(k)$. Gesamt: $O(k^2) \subseteq O(|V|^2)$, polynomiell in der Eingabegröße. \emph{Korrektheit:} Hat $G$ einen Pfad der Länge $\ge k$, so bilden seine ersten $k+1$ Knoten ein akzeptiertes Zertifikat; wird umgekehrt ein Zertifikat akzeptiert, ist es ein einfacher Pfad der Länge $k$. \medskip \textbf{(c) NTM:} Rate nacheinander $k+1$ Knoten auf ein Arbeitsband ($O(k \log |V|)$ nichtdeterministische Schritte). Prüfe dann deterministisch Verschiedenheit und Kantenbedingung wie in (b). Laufzeit: Raten $O(k \log |V|)$ plus Prüfung $\mathrm{poly}(|V|)$ -- insgesamt polynomiell. \begin{warnung} Häufige Fehlerquellen bei diesem Aufgabentyp: \begin{itemize} \item \emph{Korrektheit nur halb}: Es gehören \textbf{beide} Richtungen dazu (Ja-Instanz $\Rightarrow$ akzeptierendes Zertifikat existiert; akzeptiert $\Rightarrow$ Ja-Instanz). \item \emph{Laufzeit vergessen oder nur \glqq polynomiell\grqq{} sagen}, wenn konkrete $O$-Notation verlangt ist. \item Beim Verifizierer die \emph{Kardinalitätsprüfung} ($|C| \le k$ bzw. $\ge k$) unterschlagen. \end{itemize} Punkteschema der Serien: Beschreibung 2\,P., Korrektheit 1\,P., Laufzeit 1\,P. \end{warnung} \begin{aufgabe}{1 -- \problem{Dominating Set} (Klausur SS23-N, A2; 3+3+4\,P.)} $G = (V,E)$ ungerichtet, $k \in \mathbb{N}_0$. Gibt es $D \subseteq V$, $|D| \le k$, sodass jeder Knoten in $D$ liegt oder zu einem Knoten in $D$ benachbart ist? \begin{enumerate} \item[(a)] Geben Sie ein Zertifikat an. \item[(b)] Beschreiben Sie einen polynomiellen Verifizierer; Laufzeit konkret in $O$-Notation. \item[(c)] Beschreiben Sie in Worten eine polynomielle NTM; Laufzeit konkret in $O$-Notation. \end{enumerate} Lösung: Anhang~\ref{sol:domset}. \end{aufgabe} % ================================================================== \section{Die vier Vorlesungsbeweise (der 10-Punkte-Block)}\label{sec:vlbeweise} % ================================================================== In \textbf{jeder} Altklausur gibt es genau eine Aufgabe \glqq Beweis zur Vorlesung\grqq{} für 10 Punkte. Bisher kamen dran: $\problem{SAT} \redp k\text{-}\problem{Clique}$ (SS24-H), $\problem{SAT} \redp \problem{3-SAT}$ (SS24-N), $k$-\problem{Clique} NP-vollständig (SS23-H), List-Scheduling-Güte $2 - 1/m$ (SS23-N). Diese vier Beweise musst du \emph{reproduzieren} können -- sie gehören auf dein erlaubtes handschriftliches Blatt. \subsection{Beweis 1: \problem{SAT} $\redp$ \problem{3-SAT} (Skript Satz 6.25)} \textbf{Aussage:} \problem{3-SAT} ist NP-vollständig. (In der Klausur SS24 durfte $\problem{3-SAT} \in \NP$ angenommen werden; sonst: Belegung raten und prüfen.) \begin{proof} Zu zeigen: $\problem{SAT} \redp \problem{3-SAT}$. Gesucht ist eine polynomzeitberechenbare Transformation $\alpha \mapsto \bar{\alpha}$ mit $\alpha \in \problem{SAT} \iff \bar{\alpha} \in \problem{3-SAT}$. \emph{Idee:} Eine lange Klausel wird mit Hilfsvariablen in eine Kette von 3er-Klauseln aufgespalten: \[ (y_1 \vee \dots \vee y_n) \text{ erfüllbar} \iff (y_1 \vee y_2 \vee x_1) \wedge (\neg x_1 \vee y_3 \vee x_2) \wedge \dots \wedge (\neg x_{n-3} \vee y_{n-1} \vee y_n) \text{ erfüllbar}, \] wobei $x_1, \dots, x_{n-3}$ neue Hilfsvariablen sind (pro Klausel eigene). \emph{$\Rightarrow$:} Sei $(y_1 \vee \dots \vee y_n)$ wahr, etwa $y_i$ wahr. Setze $x_1 = \dots = x_{i-2} = \mathit{true}$ und $x_{i-1} = \dots = x_{n-3} = \mathit{false}$. Dann ist jede Kettenklausel erfüllt: Die ersten $i-2$ durch ihr $x$-Literal, die Klausel mit $y_i$ durch $y_i$, die restlichen durch ihr $\neg x$-Literal. \emph{$\Leftarrow$:} Sei die rechte Seite erfüllt und angenommen, alle $y_i$ wären falsch. Dann erzwingt die erste Klausel $x_1 = \mathit{true}$, damit die zweite $x_2 = \mathit{true}$, induktiv $x_{n-3} = \mathit{true}$ -- aber die letzte Klausel $(\neg x_{n-3} \vee y_{n-1} \vee y_n)$ ist dann falsch, Widerspruch. Also ist ein $y_i$ wahr und die Originalklausel erfüllt. Wende dies klauselweise an. Es gilt $|\bar{\alpha}| \le c\,|\alpha|$ mit $c = O(1)$, und die Transformation ist in Polynomialzeit berechenbar. Da \problem{SAT} NP-vollständig und $\problem{3-SAT} \in \NP$ ist, ist \problem{3-SAT} NP-vollständig. \end{proof} \subsection{Beweis 2: $k$-\problem{Clique} $\in$ NP (Skript Lemma 6.13)} Dieser kleine Beweis ist Teil des Vorlesungsbeweises \glqq $k$-\problem{Clique} ist NP-vollständig\grqq. \begin{proof} Polynomieller Verifizierer: Neben der Eingabe ($G = (V,E)$, $k$) erhält der Algorithmus ein Zertifikat $C \subseteq V$. Er prüft: (1) für alle zweielementigen Teilmengen $\{u,v\} \subseteq C$, ob $\{u,v\} \in E$ -- Zeit $O(|C|^2) = O(|V|^2)$; (2) ob $|C| \ge k$ -- Zeit $O(|V|)$. Ausgabe Ja genau dann, wenn beide Tests positiv sind. Da die Eingabelänge $\Omega(|V| + |E|)$ ist, ist die Laufzeit polynomiell. \end{proof} \subsection{Beweis 3: \problem{SAT} $\redp$ $k$-\problem{Clique} (Skript Satz 6.26)} \begin{warnung} Die Klausur SS24 verlangte ausdrücklich die Reduktion vom \emph{allgemeinen} SAT (beliebig lange Klauseln) -- \textbf{nicht} von 3-SAT! Die Konstruktion unten funktioniert für beide. \end{warnung} \textbf{Aussage:} $k$-\problem{Clique} ist NP-vollständig. \begin{proof} (a) $k$-\problem{Clique} $\in \NP$: siehe Beweis 2. (b) $\problem{SAT} \redp k\text{-}\problem{Clique}$: Sei $F = F_1 \wedge \dots \wedge F_m$ in KNF mit Klauseln $F_i = (y_{i1} \vee \dots \vee y_{i\ell_i})$. \emph{Konstruktion} von $G = (V,E)$ in polynomieller Zeit: \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' \text{ und } y_{ij} \ne \neg y_{i'j'} \,\} && \text{(verschiedene Klausel, nicht widersprüchlich)} \end{align*} Setze $k = m$. \emph{Behauptung:} $F$ erfüllbar $\iff$ $G$ enthält eine Clique mit $m$ Knoten. \emph{$\Rightarrow$:} Sei $\psi$ erfüllende Belegung. Dann gibt es für jedes $i$ ein $r_i$ mit $\psi(y_{ir_i}) = \mathit{true}$. Setze $C = \{\, [i, r_i] \mid 1 \le i \le m \,\}$. Wäre $\{[i,r_i],[j,r_j]\} \notin E$ für $i \ne j$, dann müsste (nach Definition von $E$) $y_{ir_i} = \neg y_{jr_j}$ gelten -- aber beide sind unter $\psi$ wahr, Widerspruch. Also ist $C$ eine $m$-Clique. \emph{$\Leftarrow$:} Sei $C$ eine $m$-Clique. Da Knoten derselben Klausel nie verbunden sind, hat $C$ die Form $C = \{[1,r_1], \dots, [m,r_m]\}$. Definiere $\psi$ mit $\psi(y_{1r_1}) = \dots = \psi(y_{mr_m}) = \mathit{true}$. Das ist widerspruchsfrei, da $y_{ir_i} \ne \neg y_{jr_j}$ für alle $i \ne j$ (sonst keine Kante). Dann ist jede Klausel $F_i$ erfüllt, also $\psi(F) = \mathit{true}$. Da \problem{SAT} NP-vollständig ist, $\problem{SAT} \redp k\text{-}\problem{Clique}$ gilt und $k$-\problem{Clique} $\in \NP$, ist $k$-\problem{Clique} NP-vollständig. \end{proof} \begin{bsp}{Konstruktion konkret (Skript Beispiel 6.27)} $F = (x_1 \vee x_2 \vee x_3) \wedge (\neg x_1 \vee \neg x_2) \wedge (x_1 \vee \neg x_2 \vee \neg x_3)$, also $m = 3$. Knoten: $[1,1], [1,2], [1,3]$ (Klausel 1), $[2,1], [2,2]$ (Klausel 2), $[3,1], [3,2], [3,3]$ (Klausel 3). Kanten zwischen allen Paaren aus verschiedenen Klauseln \emph{außer} z.\,B. $\{[1,1],[2,1]\}$ ($x_1$ vs. $\neg x_1$) oder $\{[2,2],[3,2]\}$ (beide $\neg x_2$: kein Widerspruch, Kante existiert!). Nur \emph{komplementäre} Literalpaare bekommen keine Kante. Die Clique $\{[1,1], [2,2], [3,1]\}$ ($x_1$, $\neg x_2$, $x_1$) liefert $\psi(x_1) = \mathit{true}$, $\psi(x_2) = \mathit{false}$ ($x_3$ frei). \end{bsp} \subsection{Beweis 4: List Scheduling hat Güte $2 - \frac{1}{m}$ (Skript Satz 7.24a)} \textbf{Aussage:} Für alle Eingaben $I = (L, m)$ gilt $\mathrm{LS}(I)/\OPT(I) \le 2 - 1/m$. \begin{proof} O.B.d.A. habe Maschine $M_1$ nach der Zuordnung die höchste Last $L = \sum_{j \in B_1} p_j$, d.\,h. $\mathrm{LS}(I) = L$. Sei $J_k$ der letzte Job, der $M_1$ zugeordnet wurde. \emph{Kernbeobachtung:} Zum Zeitpunkt der Zuordnung von $J_k$ hatte $M_1$ die \emph{kleinste} Last $L - p_k$ -- also haben \emph{alle} Maschinen mindestens Last $L - p_k$. Daraus folgt \[ \sum_{i=1}^{n} p_i \;\ge\; m\,(L - p_k) + p_k. \] Außerdem gelten die beiden Standard-Schranken für das Optimum: \[ \OPT(I) \;\ge\; \frac{1}{m} \sum_{i=1}^n p_i \qquad\text{und}\qquad \OPT(I) \;\ge\; p_k . \] (Die Gesamtlast verteilt sich auf $m$ Maschinen; und jeder einzelne Job muss irgendwo laufen.) Kombinieren: \[ \OPT(I) \;\ge\; \frac{1}{m}\sum_{i=1}^n p_i \;\ge\; \frac{m(L - p_k) + p_k}{m} \;=\; L - \Big(1 - \frac{1}{m}\Big) p_k \;=\; \mathrm{LS}(I) - \Big(1 - \frac{1}{m}\Big) p_k . \] Mit $p_k \le \OPT(I)$ folgt $\OPT(I) \ge \mathrm{LS}(I) - (1 - \frac{1}{m})\,\OPT(I)$, also $\mathrm{LS}(I) \le (2 - \frac{1}{m})\,\OPT(I)$. \end{proof} \begin{merke} Die zwei $\OPT$-Schranken $\OPT \ge \frac{1}{m}\sum p_i$ (Durchschnittslast) und $\OPT \ge p_{\max}$ (größter Job) sind das Universalwerkzeug \emph{aller} Scheduling-Güte-Beweise -- auch für RoundRobin (Kapitel~\ref{sec:gute}) und LPT. \end{merke} \begin{aufgabe}{Selbstkontrolle ohne Lösung im Anhang} Reproduziere jeden der vier Beweise handschriftlich, ohne in dieses Dokument zu schauen. Kontrolliere gegen die jeweilige Stelle hier. Wiederhole jeden Beweis, bei dem du einen Schritt ausgelassen hast -- besonders gern vergessen: die Polynomialität der Transformation und die Rückrichtung. \end{aufgabe} % ================================================================== \section{NP-Schwere per Reduktion: das Handwerk}\label{sec:reduktion} % ================================================================== Der häufigste Klausur-Aufgabentyp: Ein \emph{Variantenproblem} (bekanntes Problem mit Zusatzeigenschaft) soll als NP-schwer oder NP-vollständig bewiesen werden. \begin{rezept}{NP-Vollständigkeits-Boilerplate (6 Schritte)} \begin{enumerate} \item \textbf{$\in$ NP:} Verifizierer angeben (oft: \glqq wie beim Originalproblem, da nur die Instanzen eingeschränkt sind\grqq). Bei reiner NP-\emph{Schwere}-Frage entfällt dieser Schritt. \item \textbf{Quellproblem wählen:} ein bekanntes NP-vollständiges Problem $X$, das dem Zielproblem $Y$ möglichst ähnlich ist. Richtung: $X \redp Y$! \item \textbf{Konstruktion angeben:} Wie wird aus einer $X$-Instanz eine $Y$-Instanz? Präzise, mit allen Parametern (auch $k$ anpassen!). \item \textbf{Polynomialität:} Konstruktion läuft in Polynomialzeit (meist 1 Satz: \glqq naiv in $O(\cdot)$\grqq). \item \textbf{Korrektheit, beide Richtungen:} $\Rightarrow$ Ja-Instanz von $X$ liefert Ja-Instanz von $Y$; $\Leftarrow$ Ja-Instanz von $Y$ liefert Ja-Instanz von $X$. \item \textbf{Schlusssatz:} \glqq Also existiert eine polynomielle Reduktion von $X$ auf $Y$. Da $X$ NP-vollständig ist und $Y \in \NP$ gilt, ist $Y$ NP-vollständig.\grqq \end{enumerate} Punkteschema (HA 11.1): Verifizierer 1+0{,}5+0{,}5\,P.; Angabe Reduktion 1\,P.; Korrektheit 3\,P. (\textbf{1{,}5 pro Richtung}); Laufzeit 1\,P.; Beweisführung 1\,P. \end{rezept} \begin{warnung} Die drei Klassiker-Fehler: \begin{itemize} \item \textbf{Falsche Richtung}: Es muss das \emph{bekannte} Problem auf das \emph{neue} reduziert werden ($X_{\text{bekannt}} \redp Y_{\text{neu}}$). \item \textbf{Rückrichtung vergessen} -- kostet 1{,}5 von 5 Punkten. \item Die konstruierte Instanz erfüllt die \emph{Zusatzeigenschaft} des Zielproblems nicht (z.\,B. universeller Knoten fehlt, Grad-Bedingung verletzt). \end{itemize} \end{warnung} \subsection{Muster 1: Zusatzeigenschaft erzwingen -- $k$-\problem{Clique Universal} (HA 10.2)} \emph{Das} Musterbeispiel; im Aufgabentext wörtlich als \glqq klassische Klausuraufgabe\grqq{} bezeichnet. Gegeben: $k$-\problem{Clique}, aber die Instanz enthält garantiert einen \emph{universellen Knoten} (mit allen verbunden). \begin{proof} \emph{$\in$ NP:} Jeder Verifizierer für $k$-\problem{Clique} eignet sich, da lediglich eine Zusatzeigenschaft der \emph{Instanz} hinzukam. \emph{Reduktion} $k\text{-}\problem{Clique} \redp k\text{-}\problem{Clique Universal}$: Gegeben $(G = (V,E), k)$. Definiere $\bar{k} = k + 1$ und $\bar{G} = (\bar{V}, \bar{E})$ mit $\bar{V} = V \cup \{u\}$ für einen neuen Knoten $u \notin V$ und $\bar{E} = E \cup \{\, \{u,v\} \mid v \in V \,\}$. Der Knoten $u$ ist universell, also ist $(\bar{G}, \bar{k})$ eine gültige Instanz; berechenbar in $O(|V|)$. \emph{$\Rightarrow$:} Sei $C$ eine Clique in $G$ mit $|C| \ge k$. Da $u$ mit allen Knoten verbunden ist, ist $\bar{C} = C \cup \{u\}$ eine Clique in $\bar{G}$ mit $|\bar{C}| \ge k + 1 = \bar{k}$. \emph{$\Leftarrow$:} Sei $\bar{C}$ eine Clique in $\bar{G}$ mit $|\bar{C}| \ge \bar{k}$. Dann ist $C = \bar{C} \setminus \{u\} \subseteq V$ eine Clique in $G$ (Teilmenge einer Clique; $u$ ist der einzige neue Knoten) mit $|C| \ge \bar{k} - 1 = k$. Also ist $k$-\problem{Clique Universal} NP-vollständig. \end{proof} \begin{merke} \textbf{Schema \glqq bekanntes Problem + Zusatzeigenschaft\grqq:} Verifizierer erben; die Reduktion muss nur die Zusatzstruktur \emph{herstellen} (Knoten/Item hinzufügen, skalieren) und den Parameter $k$ nachziehen. Prüfe immer: Erfüllt \emph{jede} konstruierte Instanz die Zusatzeigenschaft? \end{merke} \subsection{Muster 2: Komplement-Dualität -- \problem{Clique} $\redp$ \problem{VC} (Präsenz 10.2)} \begin{proof} $\problem{VC} \in \NP$: bekannt (HA 9.1). \emph{Reduktion:} Gegeben $(G = (V,E), k)$ mit $n = |V|$ (o.B.d.A. $k \le n$). Invertiere den Graphen zu $G'$ (Komplementgraph: genau die Nicht-Kanten von $G$). Gib $(G', n - k)$ als \problem{VC}-Instanz aus. \emph{$\Rightarrow$:} $G$ enthalte eine Clique $C$, $|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 zwischen Knoten aus $C$ (in $G$ waren alle da), also hat jede Kante von $G'$ einen Endpunkt außerhalb von $C$, d.\,h. in $V'$. \emph{$\Leftarrow$:} $G'$ enthalte ein VC $V'$ 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$. \emph{Laufzeit:} Invertieren naiv in $O(|V|^2)$, polynomiell. Mit dem Schlusssatz folgt: \problem{VC} ist NP-vollständig. \end{proof} \subsection{Muster 3: Antiparallele Bögen -- \problem{VC} $\redp$ \problem{FVS} (HA 10.1)} \begin{proof} $\problem{FVS} \in \NP$: bekannt (HA 9.2, topologische Sortierung). \emph{Reduktion:} Für eine \problem{VC}-Instanz $(G = (V,E), k)$ erzeuge den gerichteten Graphen $G' = (V, E')$ mit $E' := \{\, (u,v), (v,u) \mid \{u,v\} \in E \,\}$ -- jede ungerichtete Kante wird zu \emph{zwei antiparallelen Bögen}. Gib $(G', k)$ aus. \emph{$\Rightarrow$:} Sei $C$ ein VC mit $|C| \le k$. Dann enthält $G \setminus C$ keine Kanten, also enthält $G' \setminus C$ keine Bögen und damit keine Kreise. \emph{$\Leftarrow$:} Sei $X$ ein FVS mit $|X| \le k$. Dann ist $X$ ein VC in $G$: Gäbe es eine Kante $\{u,v\} \in E$ mit $u \notin X$ und $v \notin X$, so wäre $(u, v, u)$ ein Kreis in $G' \setminus X$ -- Widerspruch. \emph{Laufzeit:} $O(|E|)$. Schlusssatz $\Rightarrow$ \problem{FVS} NP-vollständig. \end{proof} \subsection{Muster 4: Gadget + o.B.d.A.-Bereinigung -- \problem{VC} $\redp$ $\Delta$\problem{-Cover} (HA 11.1)} \begin{proof} \emph{$\in$ NP:} Zertifikat $C_\Delta \subseteq V$; prüfe $|C_\Delta| \le k$ und für alle $\le |V|^3$ Knotentripel, ob sie ein Dreieck bilden und dann getroffen werden; $O(|V|^4)$, polynomiell. \emph{Reduktion:} Für eine \problem{VC}-Instanz $(G = (V,E), k)$ bilde $G' = (V', E')$ mit $V' = V \cup \{\, v_e \mid e \in E \,\}$ und $E' = E \cup \{\, \{v_e, e_1\}, \{v_e, e_2\} \mid e = \{e_1, e_2\} \in E \,\}$ -- \textbf{jede Kante wird zu einem Dreieck} $\{v_e, e_1, e_2\}$ aufgeblasen. Gib $(G', k)$ aus. \emph{$\Rightarrow$:} Sei $C$ ein VC von $G$, $|C| \le k$. Jedes Dreieck in $G'$ ist entweder ein Dreieck aus $G$ (drei paarweise verbundene Knoten, deren Kanten alle von $C$ überdeckt sind, also ein Eckknoten in $C$) oder ein Gadget-Dreieck $\{v_e, e_1, e_2\}$ -- und $e_1 \in C$ oder $e_2 \in C$, da $C$ die Kante $e$ überdeckt. Also ist $C$ eine Dreiecksüberdeckung. \emph{$\Leftarrow$:} Sei $C_\Delta$ eine Dreiecksüberdeckung von $G'$, $|C_\Delta| \le k$. \textbf{O.B.d.A. gilt $C_\Delta \subseteq V$}: Enthält $C_\Delta$ einen Gadget-Knoten $v_e$, ersetze ihn durch $e_1$ -- die Überdeckung bleibt erhalten (alle Dreiecke durch $v_e$ enthalten $e_1$ oder $e_2$; das einzige Dreieck mit $v_e$ ist $\{v_e,e_1,e_2\}$) und die Menge wird nicht größer. Nun trifft $C_\Delta$ jedes Gadget-Dreieck $\{v_e, e_1, e_2\}$ in $e_1$ oder $e_2$ -- also ist für jede Kante $e = \{e_1, e_2\} \in E$ ein Endpunkt in $C_\Delta$: ein Vertex Cover. \emph{Laufzeit:} $O(|E|)$. Schlusssatz $\Rightarrow$ $\Delta$\problem{-Cover} NP-vollständig. \end{proof} \begin{merke} Die \textbf{o.B.d.A.-Bereinigung} (Gadget-Knoten in der Rückrichtung durch Original-Knoten ersetzen) ist ein wiederkehrender Trick: Sie macht die Rückrichtung sauber, ohne Fallunterscheidungen zu multiplizieren. Immer begründen, warum die Ersetzung (i) die Lösungseigenschaft erhält und (ii) die Menge nicht vergrößert. \end{merke} \subsection{Muster 5: Padding und Shift -- \problem{SubSet Sum} $\redp$ \problem{SubSet Sum Cardinality} (Präsenz 11.3)} Zielproblem: wie SubSet Sum, aber zusätzlich $|S| = n/2$ gefordert. \begin{proof} \emph{Reduktion:} Für $I = (c_1, \dots, c_n, K)$ definiere $c_i' := c_i + 1$ für $i \le n$ (\glqq Shift\grqq) und $c_i' := 1$ für $i \in \{n+1, \dots, 2n\}$ ($n$ \glqq Padding-Items\grqq). Ausgabe: $I' = (c_1', \dots, c_{2n}', K + n)$ mit Kardinalitätsforderung $n$ (von $2n$ Items). \emph{$\Rightarrow$:} Sei $S$ mit $\sum_{i \in S} c_i = K$. Dann $\sum_{i \in S} c_i' = K + |S|$. Fülle mit Padding-Items $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$. \emph{$\Leftarrow$:} 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$. \emph{Laufzeit:} $O(n)$. Schlusssatz. \end{proof} \begin{merke} \textbf{Der SubSet-Sum-Werkzeugkasten} (für die Klausur-Varianten): \begin{itemize} \item \emph{Skalieren}: $c_i' = \lambda c_i$, $K' = \lambda K$ ändert die Lösbarkeit nicht -- erzwingt Teilbarkeitseigenschaften (z.\,B. $\lambda = 3$: alle Größen durch 3 teilbar / keine Größe ist Zweierpotenz). \item \emph{Shift + Padding}: $c_i' = c_i + 1$ plus Einsen-Items -- erzwingt Kardinalitäten (Muster 5). \item \emph{Skalieren + Sonder-Item}: $c_i' = 2 c_i$, neues Item der Größe 1, $K' = 2K + 1$ -- erzwingt, dass das Sonder-Item in jeder Lösung liegt (Parität!). \end{itemize} In jeder Altklausur kam genau eine solche SubSet-Sum-Variante dran. \end{merke} \subsection{Muster 6: Dummy-Knoten -- \problem{Clique-Nomember} (Präsenz 11.2)} Kurzfassung: Gegeben \problem{Clique}-Instanz $(G, k)$; füge einen neuen \emph{isolierten} Knoten $v$ hinzu und frage nach einer $k$-Clique ohne $v$ in $G' = (V \cup \{v\}, E)$. $\Rightarrow$: Eine $k$-Clique in $G$ enthält $v$ nicht (v ist neu) -- fertig. $\Leftarrow$: Eine $k$-Clique ohne $v$ in $G'$ liegt komplett in $G$. Laufzeit $O(1)$ zusätzlich. Der isolierte Knoten ist das einfachste Gadget überhaupt. \subsection{Gadget-Katalog} \begin{center} \small \begin{tabular}{p{4.6cm}p{5.2cm}p{4.2cm}} \toprule Zusatzeigenschaft / Ziel & Trick & Beispiel \\ \midrule Verbotener/erzwungener Knoten & isolierten bzw. universellen Knoten hinzufügen, $k$ anpassen & Clique-Nomember; Clique Universal \\ ungerichtet $\to$ gerichtet & Kante $\to$ zwei antiparallele Bögen (2-Kreise) & VC $\redp$ FVS \\ Kanten- $\to$ Dreiecksstruktur & Kante zu Dreieck aufblasen (neuer Knoten pro Kante) & VC $\redp$ $\Delta$-Cover \\ Komplement-Sicht & Graph invertieren; Clique $\leftrightarrow$ IS $\leftrightarrow$ VC & Clique $\redp$ VC \\ Kardinalität erzwingen & $+1$-Shift + Padding-Einsen & SubSetSum Cardinality \\ Zahleneigenschaften & skalieren ($\times \lambda$), Sonder-Item, Parität & SubsetSum-Klausurvarianten \\ Grad-Bedingungen ($\deg \ge d$) & Gadget an jeden Knoten hängen, das Grad erhöht, ohne Lösungen zu ändern & Hitchhiker's-HK (SS24-N) \\ \bottomrule \end{tabular} \end{center} \begin{aufgabe}{2 -- \problem{CliqueAndIndependentSet} (Klausur SS24-H, A3a; 5\,P.)} Gegeben $G = (V,E)$ und $k \ge 1$. Entscheide: Gibt es in $G$ \emph{sowohl} ein Independent Set der Größe $k$ \emph{als auch} eine Clique der Größe $k$? Zeigen Sie die NP-Schwere durch Reduktion eines bekannten NP-schweren Problems. Lösung: Anhang~\ref{sol:cis}. \end{aufgabe} \begin{aufgabe}{3 -- \problem{SubSet Sum} mit Teilbarkeit (Klausur SS23-H, A5a; 4\,P.)} Beweisen Sie die NP-Vollständigkeit von \problem{SubSet Sum}, bei dem jede Itemgröße durch 3 oder durch 7 teilbar ist. Lösung: Anhang~\ref{sol:teilbar}. \end{aufgabe} \begin{aufgabe}{4 -- \problem{HamiltonianPath} $\leftrightarrow$ \problem{HamiltonianCycle} (Klausur SS23-N, A5b/c; 5+6\,P.)} Geben Sie polynomielle Reduktionen an: (b) $\problem{HamiltonianPath} \redp \problem{HamiltonianCycle}$; (c) $\problem{HamiltonianCycle} \redp \problem{HamiltonianPath}$. Lösung: Anhang~\ref{sol:hamilton}. \end{aufgabe} % ================================================================== \section{Approximation: anwenden, beweisen, Worst Case bauen}\label{sec:anwenden} % ================================================================== Dieser Aufgabenkomplex besteht in der Klausur aus zwei Aufgaben: einer \emph{Anwendungsaufgabe} (Algorithmus auf konkrete Instanz, Aufgabe 1) und einem \emph{Güte-Beweis mit Worst-Case-Konstruktion} (Aufgabe 4). \subsection{Anwenden: die Rechenaufgabe} \begin{rezept}{Was du flüssig rechnen können musst} \begin{itemize} \item \textbf{LPT/List Scheduling:} Jobs (ggf. sortieren), der Reihe nach auf die Maschine mit kleinster Last; Schedule \emph{grafisch} zeichnen (Maschinen-Balken mit Zeitachse); Güte nennen ($2 - \frac1m$ bzw. $\frac43 - \frac{1}{3m}$). \item \textbf{$\Delta$TSP$_1$:} MST $\to$ Kanten verdoppeln $\to$ Eulerkreis (Startknoten beachten!) $\to$ Abkürzen; erklären, warum Güte 2 und wozu die $\Delta$-Ungleichung. \item \textbf{Christofides:} MST $\to$ ungerad-gradige Knoten $X$ $\to$ min. perfektes Matching auf $X$ $\to$ Eulerkreis $\to$ Abkürzen. Alle Zwischengraphen angeben -- auch Schritte nennen, die nichts ändern! \item \textbf{Knapsack-Greedy/MGA:} nach Profitdichte $p_i/w_i$ sortieren, einpacken was passt; MGA: Vergleich mit bestem Einzel-Item; Güte 2 nennen; Verbesserungsidee: $k$-Enumeration (Sahni) $\to$ $3/2$ bei $k = 2$, $4/3$ bei $k = 3$. \end{itemize} \end{rezept} \begin{bsp}{Knapsack-Greedy durchgerechnet (Klausur SS23-H, A1)} Instanz (Items als $(p_i, w_i)$, Kapazität $B = 16$): $(1,4), (1,1), (1,3), (11,13), (3,3), (5,6), (1,5)$.\\[0.3em] \textbf{GA:} Profitdichten: $1/4, 1/1, 1/3, 11/13, 3/3, 5/6, 1/5$ $= 0{,}25;\ 1;\ 0{,}33;\ 0{,}85;\ 1;\ 0{,}83;\ 0{,}2$. Sortierung: $(1,1), (3,3), (11,13), (5,6), (1,3), (1,4), (1,5)$. Einpacken: $(1,1)$ [Last 1], $(3,3)$ [4], $(11,13)$ passt nicht ($17 > 16$), $(5,6)$ [10], $(1,3)$ [13], $(1,4)$ passt nicht, $(1,5)$ passt nicht. $\mathrm{GA} = 1 + 3 + 5 + 1 = 10$.\\[0.3em] \textbf{MGA:} bestes Einzel-Item $(11,13)$ mit Profit 11 $> 10$ $\Rightarrow$ $\mathrm{MGA} = 11$.\\[0.3em] \textbf{Vergleich:} Optimal ist $\{(11,13), (3,3)\}$: Gewicht 16, Profit $\OPT = 14$. GA verfehlt wegen des Dichte-Fokus das schwere profitable Item; MGA repariert das teilweise (Güte 2 garantiert). \end{bsp} \begin{bsp}{Christofides durchgerechnet (Klausur SS23-N, A1)} Graph: Knoten $a, b, c, d$; Distanzen $d(a,b) = 1$, $d(b,c) = 2$, $d(a,d) = 2$, $d(a,c) = 3$, $d(c,d) = 3$ (fehlende Paare über kürzeste Wege, z.\,B. $d(b,d) = 3$).\\[0.3em] (1) \textbf{MST} (Kruskal): $\{a,b\}$ (1), $\{b,c\}$ (2), $\{a,d\}$ (2); Gewicht 5.\\ (2) \textbf{Ungerade Grade im MST}: $a$: Grad 2, $b$: Grad 2, $c$: Grad 1, $d$: Grad 1 $\Rightarrow X = \{c, d\}$.\\ (3) \textbf{Min. perfektes Matching auf $X$}: einzige Möglichkeit $K = \{\{c,d\}\}$, Kosten 3.\\ (4) \textbf{Multigraph} $T + K$: alle Grade gerade. \textbf{Eulerkreis} ab $a$: $[a, b, c, d, a]$, Kosten $1 + 2 + 3 + 2 = 8$.\\ (5) \textbf{Abkürzen}: kein Knoten doppelt -- dieser Schritt ändert hier nichts (in der Klausur trotzdem erwähnen!). Tour $R = [a,b,c,d,a]$, Länge 8.\\ Hier gilt sogar $R = \OPT$. Güte-Garantie: $1{,}5$; benötigt Symmetrie \emph{und} Dreiecksungleichung. \end{bsp} \subsection{Güte-Beweise: die drei Beweismuster}\label{sec:gute} \begin{rezept}{Muster A: OPT von unten durch Struktur abschätzen (Matching)} Für Minimierungsprobleme: Finde eine Struktur in der Algorithmus-Lösung, die \emph{jede} Optimallösung zwingt, groß zu sein.\\[0.3em] \textbf{Musterbeweis 2ApproxVC (Präsenz 12.1):} Der Algorithmus nimmt für jede noch unüberdeckte Kante \emph{beide} Endpunkte. Sei $A$ die Menge dieser Kanten; dann $|C| = 2|A|$. Die Kanten in $A$ sind paarweise knotendisjunkt (ein \emph{Matching}) -- sonst wäre eine schon überdeckt gewesen. Jedes VC $C^*$ braucht pro Kante aus $A$ einen \emph{eigenen} Knoten, also $|C^*| \ge |A|$. Zusammen: $|C| = 2|A| \le 2|C^*|$. \qedhere \end{rezept} \begin{rezept}{Muster B: Widerspruch + Zählen (MAX-3-SAT, HA 12.1 = Klausur SoSe23)} Algorithmus $A$: werte $\beta_0$ (alles false) und $\beta_1$ (alles true) aus, gib die bessere zurück. \textbf{Zu zeigen:} $v(A(\varphi)) \ge \frac12 v(\OPT(\varphi))$.\\[0.3em] \emph{Beweis (Widerspruch):} Angenommen $v(A(\varphi)) < \frac12 v(\OPT(\varphi))$ für ein $\varphi$ mit $m$ Klauseln. Wegen $v(\OPT(\varphi)) \le m$ folgt $v(\beta_0) < \frac{m}{2}$ \emph{und} $v(\beta_1) < \frac{m}{2}$. Aber jede Klausel enthält mindestens ein positives oder ein negatives Literal und wird daher von $\beta_0$ \emph{oder} $\beta_1$ erfüllt; also $v(\beta_0) + v(\beta_1) \ge m$, d.\,h. eine der beiden erfüllt $\ge \frac{m}{2}$ Klauseln -- Widerspruch.\\[0.3em] \emph{Scharfe Instanz (Teil b):} $\varphi = (x_1 \vee x_2 \vee x_3) \wedge (\neg x_0 \vee \neg x_2 \vee \neg x_3)$. Mit $\beta = \{x_0 \mapsto \mathit{false},\ x_1, x_2, x_3 \mapsto \mathit{true}\}$ sind beide Klauseln erfüllt: $\OPT = 2$. Aber $\beta_0$ erfüllt nur Klausel 2, $\beta_1$ nur Klausel 1: $v(A(\varphi)) = 1 = \frac12 \OPT$. \emph{Bauprinzip: komplementäre Klauseln.} \end{rezept} \begin{rezept}{Muster C: Scheduling-Schranken (RoundRobin, Klausur SS24-N A4)} RoundRobin: Jobs absteigend sortiert, reihum verteilt ($J_j$ auf Maschine $((j-1) \bmod m) + 1$). \textbf{Zu zeigen (per Widerspruch): Güte 2.}\\[0.3em] Angenommen $\mathrm{RR}(I) > 2 \cdot \OPT(I)$. Sei $M_i$ die Maschine mit maximaler Last; sie trägt die Jobs $J_i, J_{i+m}, J_{i+2m}, \dots$ Für $l \ge 1$ gilt wegen der Sortierung $p_{i+lm} \le p_j$ für alle $j \le (l-1)m + m = lm$, insbesondere \[ p_{i+lm} \;\le\; \frac{1}{m} \sum_{j=(l-1)m+1}^{lm} p_j . \] Summieren über $l \ge 1$: $\mathrm{RR}(I) - p_i \le \frac1m \sum_{j} p_j \le \OPT(I)$. Mit $p_i \le p_1 \le \OPT(I)$ folgt $\mathrm{RR}(I) \le 2\,\OPT(I)$ -- Widerspruch zur Annahme.\\[0.3em] Kern: dieselben zwei $\OPT$-Schranken wie bei List Scheduling (Durchschnittslast, größter Job). \end{rezept} \subsection{Worst-Case-Instanzen konstruieren} Der zweite Teil der Klausuraufgabe: \glqq Geben Sie eine Konstruktionsvorschrift für eine Instanz an, mit der der Algorithmus beliebig nah an die Güte kommt.\grqq \begin{rezept}{Bauprinzip} \begin{enumerate} \item Zwinge den Algorithmus zu einer lokal guten, global schlechten Entscheidung (Greedy-Falle) -- oder nutze adversarielles Tie-Breaking (bei Gleichständen die schlechteste Wahl unterstellen). \item Parametrisiere die Instanz ($n$, $m$, $T$, \dots) und berechne $A(I)$ und $\OPT(I)$ \emph{explizit}. \item Zeige $A(I)/\OPT(I) \to$ Schranke (Grenzwert angeben). \end{enumerate} \end{rezept} \begin{bsp}{List Scheduling erreicht $2 - \frac1m$} $m(m-1)$ Jobs der Größe 1, danach \emph{ein} Job der Größe $m$ (Liste in dieser Reihenfolge). List Scheduling verteilt die Einsen gleichmäßig (jede Maschine $m-1$), der große Job kommt obendrauf: $\mathrm{LS} = (m-1) + m = 2m - 1$. Optimal: großer Job allein auf eine Maschine, die $m(m-1)$ Einsen auf die übrigen $m-1$ Maschinen ($m$ pro Maschine): $\OPT = m$. Rate: $(2m-1)/m = 2 - \frac1m$ -- exakt die Schranke. \end{bsp} \begin{bsp}{RoundRobin erreicht $2 - \frac1m$ (Klausur SS24-N A4b, Bonus)} Ein Job der Größe $m$ und $m(m-1)$ Jobs der Größe 1 (absteigend sortiert: der große zuerst). RoundRobin gibt Maschine 1 den großen Job \emph{und} (da reihum verteilt wird) $m - 1$ weitere Einser-Jobs: $\mathrm{RR} = m + (m-1) = 2m - 1$; $\OPT = m$ wie eben. Für $m = 3$ (7 Jobs: $3,1,1,1,1,1,1$): $\mathrm{RR} = 5$, $\OPT = 3$, Rate $5/3$ -- genau die in der Klausur gestufte Teilpunkt-Konstruktion. \end{bsp} \begin{bsp}{Christofides erreicht $3/2$ asymptotisch (Präsenz 12.2, Skizze)} Leiter-Graph mit $n$ Knoten ($n \bmod 4 = 2$): Sprossen und Holme mit Distanz 1, Rest über kürzeste Wege. Adversariell gewählter Zickzack-MST (Kosten $n-1$) lässt nur die Knoten $1$ und $n$ mit ungeradem Grad; das Matching ist die einzelne Kante $\{1, n\}$ mit Kosten $n/2$ (kürzester Weg). Tour: $n - 1 + n/2$, $\OPT = n$ (außen herum). Rate $\frac{n - 1 + n/2}{n} = \frac32 - \frac1n \to \frac32$. Merke: Bei MST-/Matching-Gleichständen darf der Prüfling die \emph{schlechte} Wahl unterstellen -- das ist der Sinn von \glqq eine mögliche Ausführung\grqq. \end{bsp} \begin{aufgabe}{5 -- \problem{ApproximateSubsetSum} (Klausur SS24-H, A4; 3+7\,P.)} Maximiere $\sum_{j \in S} a_j \le T$ (alle $a_i \le T$, $\sum a_i > T$). Algorithmus GA: sortiere absteigend, nimm Zahlen der Reihe nach, \emph{stoppe} beim ersten Element, das nicht mehr passt. (a) Konstruktionsvorschrift für Instanzen, mit denen GA beliebig nah an Güte 2 kommt. (b) Zeigen Sie $\mathrm{GA}(I) \ge \OPT(I)/2$. Lösung: Anhang~\ref{sol:apxss}. \end{aufgabe} \begin{aufgabe}{6 -- \problem{Min-Edge-Cover} (Klausur SS23-N, A3; 6+4\,P.)} Gesucht: kardinalitätsminimale Kantenmenge $C$, sodass jeder Knoten inzident zu einer Kante aus $C$ ist ($G$ zusammenhängend). Algorithmus $A$: gehe die Knoten in beliebiger Reihenfolge durch; ist der aktuelle Knoten $v$ noch nicht abgedeckt, füge eine beliebige zu $v$ inzidente Kante zu $C$ hinzu. (a) Zeigen Sie $A(G) \le 2 \cdot \OPT(G)$. (b) Kreisgraph $G_n$ ($n \ge 4$ gerade): Wie groß ist ein Min-Edge-Cover? Geben Sie Reihenfolge und Kantenwahl an, die zur schlechtesten Rate führen. Lösung: Anhang~\ref{sol:edgecover}. \end{aufgabe} % ================================================================== \section{ETH-Lower-Bounds: das Schema}\label{sec:eth} % ================================================================== Immer die letzte Klausuraufgabe: Eine Reduktion ist \emph{vorgegeben}; du sollst untere Schranken bzgl. zweier Parameter herleiten. Das ist ein Schema-Spiel -- wer das Muster kennt, sammelt hier die sichersten 10 Punkte der Klausur. \begin{rezept}{ETH-Aufgabe in drei Schritten} \textbf{Schritt 1 -- Parameter abschätzen:} Drücke jeden gefragten Parameter der konstruierten Instanz durch $n$ (Variablen) und $m$ (Klauseln) der 3-SAT-Quellinstanz aus. Nutze $n \le 3m$ (jede Variable kommt in einer Klausel vor, jede Klausel hat $\le 3$ Literale).\\[0.4em] \textbf{Schritt 2 -- Textbaustein (Kontraposition):} \begin{quote} \glqq Angenommen, es gäbe einen Algorithmus, der [Zielproblem] in $2^{o(p)} \cdot |I|^{O(1)}$ löst. Da $p = O(f(m))$ nach Schritt 1, existiert durch Kombination der Reduktion mit diesem Algorithmus ein Algorithmus, der 3-SAT in $2^{o(m)} \cdot |I|^{O(1)}$ löst. Nach dem Sparsification-Lemma geht das nur, wenn die ETH nicht gilt. Also existiert ein solcher Algorithmus nur, wenn die ETH falsch ist.\grqq \end{quote} \textbf{Schritt 3 -- Exponent justieren (Wurzel-Regel):} Wächst der Parameter polynomiell, $p = O(m^c)$, dann ist die Schranke $2^{o(\sqrt[c]{p})}$: aus $q = o(\sqrt[c]{p})$ und $p = O(m^c)$ folgt $q = o(m)$. Beispiele: $|E| = O(m^2) \Rightarrow 2^{o(\sqrt{|E|})}$; $|T| = O(m^4) \Rightarrow 2^{o(\sqrt[4]{|T|})}$. \end{rezept} \begin{warnung} \begin{itemize} \item \textbf{$n$ oder $m$?} Hängt dein Parameter (auch) an $m$, brauchst du das \emph{Sparsification-Lemma} und schreibst $2^{o(m)}$. Hängt er nur an $n$, reicht die ETH direkt ($2^{o(n)}$). Im Zweifel: Lemma zitieren schadet nicht. \item \textbf{Reduktionsketten:} Bei $X \redp Y \redp Z$ die Schranken schrittweise durchreichen und auf den vorigen Teil verweisen (\glqq nach Aufgabenteil 1 gibt es diesen nur, wenn die ETH nicht gilt\grqq). \item Die Schlussformel \glqq \dots{} nur, wenn die ETH falsch ist\grqq{} in \emph{jedem} Teilpunkt wiederholen -- sie ist Teil der erwarteten Lösung. \end{itemize} \end{warnung} \subsection{Die Vorlesungs-Reduktionskette mit allen Schranken (Präsenz 13.1)} \begin{center} \footnotesize \begin{tabular}{lll} \toprule Reduktion & Parameter der Zielinstanz & ergibt Lower Bounds \\ \midrule $\problem{3-SAT} \redp k\text{-}\problem{Clique}$ & $|V| = O(m)$, $|E| = O(m^2)$, $k = m$ & $2^{o(|V|)}$, $2^{o(\sqrt{|E|})}$, $2^{o(k)}$ \\ $k\text{-}\problem{Clique} \redp k\text{-}\problem{IS}$ & $|V'| = |V|$, $|E'| \le |V|^2$ & $2^{o(|V|)}$, $2^{o(\sqrt{|E|})}$ \\ $\problem{SAT} \redp \problem{3-DM}$ & $|U| = |V| = |W| = O(mn) \subseteq O(m^2)$, $|T| = O(m^2 n^2) \subseteq O(m^4)$ & $2^{o(\sqrt{|V|})}$, $2^{o(\sqrt[4]{|T|})}$ \\ $\problem{3-DM} \redp \problem{3-EC}$ & Spezialfall: $|U| = O(|V|)$, $|F| = |T|$ & $2^{o(\sqrt{|U|})}$, $2^{o(\sqrt[4]{|F|})}$ \\ $\problem{3-EC} \redp \problem{SubSet Sum}$ & $n_{\text{Items}} = |F|$ & $2^{o(\sqrt[4]{n})}$ \\ \bottomrule \end{tabular} \end{center} (Über die \emph{strenge} Wegener-Reduktion $\problem{3-SAT} \redp \problem{SubSet Sum}$ mit $|A| = O(m)$ Items gilt sogar: kein $2^{o(n)} \cdot \poly$ für SubSet Sum und Partition; Skript Satz 6.40.) \subsection{Musterlösung 1: Lower Bounds für \problem{Vertex Cover} (HA 13.1)} Reduktion: $\problem{Clique} \redp \problem{VC}$ aus Präsenz 10 (Komplementgraph, $k' = n - k$). \medskip \textbf{Teil 1 -- Parameter:} $|V'| = |V|$;\quad $|E'| = \binom{|V|}{2} - |E| \le |V|^2$;\quad $k' = |V| - k \le |V|$. \medskip \textbf{Teil 2 -- Schranken} (jeweils mit dem Textbaustein): \begin{itemize} \item Kein $2^{o(|V'|)} \cdot |I|^{O(1)}$: Sonst gäbe es (Reduktion + Algorithmus, $|V'| = |V|$) einen $2^{o(|V|)}$-Algorithmus für \problem{Clique} -- nach Präsenz 13 nur möglich, wenn die ETH falsch ist. \item Kein $2^{o(\sqrt{|E'|})} \cdot |I|^{O(1)}$: Wegen $|E'| \le |V|^2$ ist $\sqrt{|E'|} \le |V|$, also ergäbe sich ein $2^{o(|V|)}$-Algorithmus für \problem{Clique} -- ETH falsch. \item Kein $2^{o(k')} \cdot |I|^{O(1)}$: Wegen $k' \le |V|$ analog. \end{itemize} Punkteschema: Teil 1: 1\,P.; Teil 2: 1{,}5 + 1{,}5 + 1\,P. \subsection{Musterlösung 2: Lower Bounds für \problem{Hitting Set} (HA 13.2)} Gegebene Reduktion $\problem{3-SAT} \redp \problem{Hitting Set}$: $U = \{x_1, \bar{x}_1, \dots, x_n, \bar{x}_n\}$; pro Variable $F_i = \{x_i, \bar{x}_i\}$; pro Klausel $F_{n+j} = C_j$; $k = n$. \medskip \textbf{Teil 1 -- Parameter:} $|U| = 2n$;\quad $r = n + m$;\quad $k = n$. \medskip \textbf{Teil 2 -- Schranken:} \begin{itemize} \item Kein $2^{o(|U|)}$: $|U| = 2n$, also ergäbe sich ein $2^{o(n)}$-Algorithmus für 3-SAT -- direkt ein Widerspruch zur ETH (nur $n$ beteiligt, Lemma nicht nötig). \item Kein $2^{o(r)}$: $r = n + m \le 3m + m = 4m = O(m)$, also ergäbe sich ein $2^{o(m)}$-Algorithmus für 3-SAT -- \textbf{hier} braucht es das Sparsification-Lemma. \item Kein $2^{o(k)}$: $k = n$, analog zum ersten Punkt. \end{itemize} \begin{aufgabe}{7 -- Lower Bounds für $k$-\problem{Color} (Klausur SS24-H, A5a; 5\,P.)} Gegeben ist die Vorlesungsreduktion $\problem{3-SAT} \redp k\text{-}\problem{Color}$ (Knoten $x_i, \bar{x}_i, v_i$ für jede Variable, $C_j$ für jede Klausel, Zentrum $z$; Kanten wie im Skript). Welche Lower Bounds ergeben sich unter der ETH bzgl. (i) $|V|$ und (ii) $|E|$? Lösung: Anhang~\ref{sol:kcolor}. \end{aufgabe} \begin{aufgabe}{8 -- Lower Bounds für \problem{Set Cover} (Klausur SS23-N, A6a; 5\,P.)} Bekannt: \problem{Hitting Set} ist unter der ETH weder in $2^{o(r')}\langle I \rangle^{O(1)}$ noch in $2^{o(|U'|)}\langle I \rangle^{O(1)}$ lösbar. Gegeben ist die Dualitäts-Reduktion $\problem{Set Cover} \redp \problem{Hitting Set}$: $U' := \{1, \dots, r\}$ (Mengen-Indizes werden Elemente), für jedes $w \in U$ die Menge $F_w' := \{\, v \in \{1,\dots,r\} \mid w \in F_v \,\}$, $k' = k$. Welche Schranken folgen für \problem{Set Cover} bzgl. (i) $|U|$ und (ii) $r$? Lösung: Anhang~\ref{sol:setcover}. \end{aufgabe} % ================================================================== \section{Kurz: NP-Schwere via Unentscheidbarkeit (Halteproblem)}\label{sec:halt} % ================================================================== Serienstoff (HA 11.2), in den vier Altklausuren nie geprüft -- der Beweis ist kurz, nimm ihn mit. \begin{proof}[Beweis ($\problem{HALT}_{\mathrm{TM}}$ ist NP-schwer)] Wir zeigen $\problem{SAT} \redp \problem{HALT}_{\mathrm{TM}}$. Aus einer KNF-Formel $\varphi$ konstruiere eine DTM $M_\varphi$: (1) ignoriere die Eingabe, (2) enumeriere systematisch alle Belegungen der Variablen von $\varphi$, (3) prüfe jede, (4) \emph{halte}, sobald eine erfüllende gefunden ist, (5) sonst laufe für immer. Setze $f(\varphi) = \langle M_\varphi, \varepsilon \rangle$. \emph{Pointe:} $M_\varphi$ läuft nicht polynomiell -- aber sie lässt sich in Polynomialzeit \emph{konstruieren}; nur das zählt für $f$. $\Rightarrow$: Ist $\varphi$ erfüllbar, findet $M_\varphi$ eine erfüllende Belegung und hält. $\Leftarrow$: Hält $M_\varphi$, so nur, weil eine erfüllende Belegung gefunden wurde; also $\varphi \in \problem{SAT}$. \end{proof} \begin{merke} $\problem{HALT}_{\mathrm{TM}}$ ist NP-schwer, aber nicht NP-vollständig: Es liegt nicht in NP (nicht einmal entscheidbar). Typische Transferfrage im Stil von Präsenz 10.1 (ii). \end{merke} % ================================================================== \section{Klausur-Fahrplan und Checklisten} % ================================================================== \begin{rezept}{Zeitbudget (120 Minuten, $\sim$55 Punkte)} Grob 2 Minuten pro Punkt: Anwendungsaufgabe $\sim$20\,min, Vorlesungsbeweis $\sim$20\,min, Reduktionen $2 \times 12$\,min, Güte-Beweis $\sim$20\,min, ETH $\sim$15\,min, Puffer $\sim$20\,min. Beginne mit deinen sichersten Typen -- ETH und Vorlesungsbeweis sind am besten vorhersagbar. Notenschlüssel der Altklausuren: 4{,}0 ab $\sim$17{,}5\,P., 1{,}0 ab $\sim$35\,P. -- du musst nicht alles schaffen. \end{rezept} \begin{rezept}{Was auf das handbeschriebene Blatt gehört} \begin{itemize} \item Die vier Vorlesungsbeweise (Kapitel~\ref{sec:vlbeweise}), mindestens als Stichpunkt-Gerüst. \item Boilerplate: 6-Schritte-Reduktionsschema + Schlusssatz (Kapitel~\ref{sec:reduktion}). \item ETH-Textbaustein + Wurzel-Regel + $n \le 3m$ (Kapitel~\ref{sec:eth}). \item Gadget-Katalog und SubSet-Sum-Werkzeugkasten. \item Die zwei $\OPT$-Schranken fürs Scheduling; MAX-3-SAT-Formel; LS-Worst-Case-Instanz. \item Dualitätsdreieck Clique/IS/VC; NP-Dreischritt. \end{itemize} \end{rezept} \begin{rezept}{Letzte Kontrolle bei jeder Beweisaufgabe} \begin{itemize} \item Reduktionsrichtung richtig? ($X_{\text{bekannt}} \redp Y_{\text{neu}}$) \item Beide Korrektheitsrichtungen da? \item Polynomialität (Reduktion bzw. Verifizierer) explizit erwähnt? \item Parameter ($k$, $T$, \dots) in der Konstruktion angepasst? \item Schlusssatz geschrieben? \end{itemize} \end{rezept} % ================================================================== \appendix \section{Lösungen zu den Selbsttests}\label{sec:loesungen} % ================================================================== \subsection{Lösung zu Selbsttest 1: \problem{Dominating Set}}\label{sol:domset} \textbf{(a) Zertifikat:} Eine Teilmenge $D \subseteq V$ (ein Bit pro Knoten, Länge $O(|V|)$) -- die behauptete dominierende Menge. \medskip \textbf{(b) Verifizierer:} Prüfe (1) $|D| \le k$: Bits zählen, $O(|V|)$. (2) Dominanz: Für jeden Knoten $v \in V$ teste, ob $v \in D$ oder ein Nachbar von $v$ in $D$ liegt -- pro Knoten Durchlauf seiner Zeile in der Adjazenzmatrix, $O(|V|)$; gesamt $O(|V|^2)$. Akzeptiere genau dann, wenn beides gilt. Laufzeit insgesamt $O(|V|^2)$, polynomiell. \emph{Korrektheit:} Existiert ein Dominating Set der Größe $\le k$, so wird das zugehörige Zertifikat akzeptiert; akzeptiert der Verifizierer ein $D$, erfüllt $D$ per Konstruktion beide definierenden Eigenschaften. \medskip \textbf{(c) NTM:} Rate für jeden Knoten nichtdeterministisch, ob er in $D$ liegt ($O(|V|)$ Rateschritte). Prüfe danach deterministisch $|D| \le k$ und die Dominanzbedingung wie in (b). Laufzeit: $O(|V|)$ Raten + $O(|V|^2)$ Prüfen $= O(|V|^2)$, polynomiell. \emph{Korrektheit:} Ja-Instanz $\Rightarrow$ es existiert ein Rechenweg, der ein gültiges $D$ rät und akzeptiert; Nein-Instanz $\Rightarrow$ jeder Rechenweg verwirft in der Prüfphase. \subsection{Lösung zu Selbsttest 2: \problem{CliqueAndIndependentSet}}\label{sol:cis} Reduktion von \problem{Clique}. Sei $(G = (V,E), k)$ gegeben (o.B.d.A. $k \ge 1$). Konstruiere $G'$, indem zu $G$ genau $k$ \emph{neue isolierte Knoten} $u_1, \dots, u_k$ hinzugefügt werden; Ausgabe $(G', k)$. Laufzeit $O(k) \subseteq O(|V|)$, polynomiell. \emph{$\Rightarrow$:} Hat $G$ eine Clique $C$ mit $|C| \ge k$, so hat $G'$ dieselbe Clique; außerdem ist $\{u_1, \dots, u_k\}$ ein Independent Set der Größe $k$ (isolierte Knoten). Also Ja-Instanz. \emph{$\Leftarrow$:} Hat $G'$ eine Clique $C'$ der Größe $k$, so gilt für $k \ge 2$: $C'$ enthält keinen der isolierten Knoten (die haben keine Kanten), also $C' \subseteq V$ und $C'$ ist eine $k$-Clique in $G$. (Für $k = 1$ ist jede Instanz mit $V \neq \emptyset$ trivial eine Ja-Instanz beider Probleme.) Da \problem{Clique} NP-schwer ist, ist \problem{CliqueAndIndependentSet} NP-schwer. \emph{Trick: Das Independent Set wird \glqq gratis\grqq{} mitgeliefert, ohne die Clique-Frage zu beeinflussen.} \subsection{Lösung zu Selbsttest 3: \problem{SubSet Sum} mit Teilbarkeit}\label{sol:teilbar} $\in \NP$: Verifizierer wie bei \problem{SubSet Sum} (Teilmenge als Zertifikat, Summe prüfen) -- nur die Instanzmenge ist eingeschränkt. \emph{Reduktion von \problem{SubSet Sum}:} Gegeben $(c_1, \dots, c_n, K)$. Setze $c_i' := 3 c_i$ und $K' := 3K$. Jede Itemgröße ist durch 3 teilbar, also ist die konstruierte Instanz gültig; Laufzeit $O(n)$. \emph{Korrektheit:} Für jede Teilmenge $S$ gilt $\sum_{i \in S} c_i' = 3 \sum_{i \in S} c_i$, also $\sum_{i \in S} c_i' = K' \iff \sum_{i \in S} c_i = K$ -- beide Richtungen in einem Schritt. Mit dem Schlusssatz folgt die NP-Vollständigkeit. \subsection{Lösung zu Selbsttest 4: \problem{HamiltonianPath} $\leftrightarrow$ \problem{HamiltonianCycle}}\label{sol:hamilton} \textbf{(b) HP $\redp$ HC:} Gegeben $G = (V,E)$. Füge einen neuen \emph{universellen} Knoten $u$ hinzu: $G' = (V \cup \{u\},\; E \cup \{\,\{u,v\} \mid v \in V\,\})$. Laufzeit $O(|V|)$. \emph{$\Rightarrow$:} Ein Hamiltonpfad $v_1, \dots, v_n$ in $G$ wird durch $u$ zum Kreis $v_1, \dots, v_n, u, v_1$ geschlossen. \emph{$\Leftarrow$:} Ein Hamiltonkreis in $G'$ besucht $u$ genau einmal; Entfernen von $u$ (und seiner zwei Kreiskanten) liefert einen Hamiltonpfad in $G$. \medskip \textbf{(c) HC $\redp$ HP:} Gegeben $G = (V,E)$, o.B.d.A. $|V| \ge 3$. Wähle einen beliebigen Knoten $v$. Konstruiere $G'$: füge eine Kopie $v^*$ mit derselben Nachbarschaft wie $v$ hinzu sowie zwei neue Grad-1-Knoten $s$ (nur mit $v$ verbunden) und $t$ (nur mit $v^*$ verbunden). Laufzeit $O(|V| + |E|)$. \emph{$\Rightarrow$:} Ein Hamiltonkreis $v, w_1, w_2, \dots, w_{n-1}, v$ in $G$ liefert den Hamiltonpfad $s, v, w_1, \dots, w_{n-1}, v^*, t$ in $G'$ (die letzte Kreiskante $\{w_{n-1}, v\}$ existiert auch zu $v^*$). \emph{$\Leftarrow$:} Ein Hamiltonpfad in $G'$ muss in den Grad-1-Knoten $s$ und $t$ enden, hat also die Form $s, v, \dots, v^*, t$. Der Mittelteil $v, \dots, v^*$ besucht alle Knoten von $G$ (plus $v^*$); Ersetzen von $v^*$ durch $v$ am Ende schließt einen Hamiltonkreis in $G$ (Nachbarschaften identisch). \subsection{Lösung zu Selbsttest 5: \problem{ApproximateSubsetSum}}\label{sol:apxss} \textbf{(a) Konstruktionsvorschrift:} Für gerades $T$ nimm $a_1 = T/2 + 1$, $a_2 = a_3 = T/2$. GA sortiert absteigend, nimmt $a_1$, und stoppt: $a_2$ passt nicht mehr ($T/2 + 1 + T/2 > T$). $\mathrm{GA}(I) = T/2 + 1$, aber $\OPT(I) = T$ (Items 2 und 3). Rate: $\frac{T}{T/2 + 1} \to 2$ für $T \to \infty$. \medskip \textbf{(b) Güte 2:} Sei $S$ die von GA gewählte Menge und $a_\ell$ das erste Element, das nicht mehr passte (existiert wegen $\sum_i a_i > T$; falls GA alle Elemente bis zum Abbruch einpackt, betrachte den Abbruchmoment). Dann gilt \[ \mathrm{GA}(I) + a_\ell \;>\; T \;\ge\; \OPT(I). \] Wegen der absteigenden Sortierung wurde $a_\ell$ erst nach allen gewählten Elementen betrachtet. Ist $S = \emptyset$, wäre schon $a_1 = a_\ell > T$ -- ausgeschlossen, da $a_i \le T$. Also enthält $S$ ein Element $a_j \ge a_\ell$ (Sortierung), somit $\mathrm{GA}(I) \ge a_\ell$. Einsetzen: \[ 2\,\mathrm{GA}(I) \;\ge\; \mathrm{GA}(I) + a_\ell \;>\; T \;\ge\; \OPT(I), \] also $\mathrm{GA}(I) \ge \OPT(I)/2$. \qed \subsection{Lösung zu Selbsttest 6: \problem{Min-Edge-Cover}}\label{sol:edgecover} \textbf{(a) Güte 2:} Jede von $A$ gewählte Kante wird für einen zu diesem Zeitpunkt \emph{unabgedeckten} Knoten $v$ gewählt; danach ist $v$ abgedeckt. Verschiedene Auswahlschritte gehören also zu verschiedenen Knoten: $A(G) = |C| \le |V|$... genauer: $|C| \le$ Anzahl der Auswahlschritte $\le |V|$. Andererseits deckt jede Kante höchstens 2 Knoten ab, also braucht jede Lösung $\OPT(G) \ge |V|/2$ Kanten. Zusammen: $A(G) \le |V| \le 2 \cdot \OPT(G)$. \qed \medskip \textbf{(b) Kreisgraph $G_n$:} Ein minimales Edge Cover ist ein perfektes Matching des Kreises: $\OPT(G_n) = n/2$ (jede Kante deckt 2 Knoten, $n$ Knoten). \emph{Schlechteste Ausführung:} Besuche die Knoten in der Reihenfolge $1, 3, 4, 5, \dots, n$ und wähle: für 1 die Kante $\{1,2\}$, für 3 die Kante $\{2,3\}$, für 4 die Kante $\{3,4\}$, \dots, für $n$ die Kante $\{n-1,n\}$ -- jede neue Kante deckt nur \emph{einen} neuen Knoten ab (der andere Endpunkt war schon abgedeckt). Das ergibt $|C| = n - 1$ Kanten. Rate: \[ \frac{n-1}{n/2} \;=\; 2 - \frac{2}{n} \;\longrightarrow\; 2 . \] \subsection{Lösung zu Selbsttest 7: Lower Bounds für $k$-\problem{Color}}\label{sol:kcolor} \textbf{Parameter abschätzen:} Die Konstruktion erzeugt \[ |V| = \underbrace{3n}_{x_i,\, \bar{x}_i,\, v_i} + \underbrace{m}_{C_j} + \underbrace{1}_{z} = O(n + m) \subseteq O(m) \quad (\text{da } n \le 3m). \] Kanten: $\{v_i, v_j\}$: $O(n^2)$; $\{v_i, x_j\}, \{v_i, \bar{x}_j\}$: $O(n^2)$; $\{x_i, \bar{x}_i\}$: $n$; $\{x_i, C_j\}, \{\bar{x}_i, C_j\}$: $O(nm)$; $\{v_i, z\}$, $\{C_j, z\}$: $O(n + m)$. Gesamt $|E| = O(n^2 + nm + m) \subseteq O(m^2)$. \medskip \textbf{(i)} Kein $2^{o(|V|)} \cdot |I|^{O(1)}$ für $k$-\problem{Color}: Sonst lieferte die Reduktion (mit $|V| = O(m)$) einen $2^{o(m)}$-Algorithmus für 3-SAT -- nach dem Sparsification-Lemma nur möglich, wenn die ETH falsch ist. \medskip \textbf{(ii)} Kein $2^{o(\sqrt{|E|})} \cdot |I|^{O(1)}$: Wegen $|E| = O(m^2)$ gilt $\sqrt{|E|} = O(m)$; ein solcher Algorithmus ergäbe wieder $2^{o(m)}$ für 3-SAT -- ETH falsch (Wurzel-Regel). \subsection{Lösung zu Selbsttest 8: Lower Bounds für \problem{Set Cover}}\label{sol:setcover} \textbf{Parameter der konstruierten \problem{Hitting-Set}-Instanz:} $|U'| = r$ (die Mengen-Indizes) und $r' = |U|$ (eine Menge $F_w'$ pro Element $w \in U$); $k' = k$. Die Reduktion vertauscht also die Rollen von Elementen und Mengen (Dualität über den bipartiten Inzidenzgraphen) und ist in polynomieller Zeit berechenbar. Entscheidend: Sie ist eine \emph{Reduktion von Set Cover auf Hitting Set} -- ein schneller Set-Cover-Algorithmus hilft so nicht direkt. Die Schranken erhält man über die \emph{umgekehrte} Anwendung: Dieselbe Konstruktion, auf eine \problem{Hitting-Set}-Instanz angewandt, liefert eine \problem{Set-Cover}-Instanz (die Dualisierung ist involutorisch: zweimal anwenden ergibt die Ausgangsinstanz). Also gilt $\problem{Hitting Set} \redp \problem{Set Cover}$ mit $|U| = r'$ und $r = |U'|$. \medskip \textbf{(i)} Kein $2^{o(|U|)} \cdot \langle I \rangle^{O(1)}$ für \problem{Set Cover}: Sonst könnte man eine \problem{Hitting-Set}-Instanz dualisieren ($|U| = r'$) und erhielte einen $2^{o(r')}$-Algorithmus für \problem{Hitting Set} -- nach Voraussetzung nur möglich, wenn die ETH falsch ist. \medskip \textbf{(ii)} Kein $2^{o(r)} \cdot \langle I \rangle^{O(1)}$: analog mit $r = |U'|$ -- ein solcher Algorithmus ergäbe $2^{o(|U'|)}$ für \problem{Hitting Set}, also ETH falsch. \end{document}