\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}
