6343 lines
270 KiB
Plaintext
6343 lines
270 KiB
Plaintext
\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]{\par\bigskip%
|
|
\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}}
|
|
|
|
% ungerichtete Variante desselben Graphen (fuer VertexCover)
|
|
\newcommand{\hanetzu}[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?
|
|
|
|
\bspkopf{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\}$ -- die Entscheidungsfolge
|
|
$(\text{ja}, \text{ja}, \text{nein})$ der NTM wählt genau diese Menge.
|
|
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}
|
|
|
|
|
|
\lsg
|
|
\textbf{(1) NTM.} Eingabe: Gewichte $w_1,\dots,w_n$, Profite
|
|
$p_1,\dots,p_n$, Kapazität $K$ und Zielprofit $P$.
|
|
|
|
Die NTM arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Entscheide für jeden Gegenstand $i \in [n]$ nichtdeterministisch, ob er
|
|
in die Menge $S$ aufgenommen wird.
|
|
\item Prüfe $\sum_{i\in S} w_i \le K$; lehne sonst ab.
|
|
\item Prüfe $\sum_{i\in S} p_i \ge P$; lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Existiert eine Füllung mit Gewicht $\le K$ und Profit
|
|
$\ge P$, dann gibt es eine Folge von Entscheidungen, die genau sie auswählt.
|
|
Dieser Rechenweg akzeptiert. Existiert keine, dann scheitert auf jedem
|
|
Rechenweg eine Prüfung -- die NTM lehnt ab.
|
|
|
|
\textbf{Laufzeit:} $n$ Rateschritte plus Summation und Vergleiche in $O(n)$ --
|
|
also eine polynomielle NTM.
|
|
|
|
\textbf{(2) Verifizierer.} Eingabe: Gewichte $w_1,\dots,w_n$, Profite
|
|
$p_1,\dots,p_n$, Kapazität $K$, Zielprofit $P$ und Zertifikat
|
|
$S \subseteq [n]$.
|
|
|
|
Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe $\sum_{i\in S} w_i \le K$; lehne sonst ab.
|
|
\item Prüfe $\sum_{i\in S} p_i \ge P$; lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Existiert eine Füllung mit Gewicht $\le K$ und Profit
|
|
$\ge P$, dann ist genau diese Menge $S$ ein Zertifikat, das akzeptiert wird.
|
|
Existiert keine, dann verletzt jedes Zertifikat eine der beiden Prüfungen --
|
|
der Verifizierer lehnt ab.
|
|
|
|
\textbf{Laufzeit:} Summen bilden und vergleichen -- $O(n)$, also 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.
|
|
|
|
Also gilt $\problem{Knapsack} \in \NP$. \hfill$\square$
|
|
|
|
\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 ungerichtete Graph:
|
|
\begin{center}
|
|
\hanetzu{}
|
|
\end{center}
|
|
\begin{enumerate}
|
|
\item Finden Sie ein minimales Vertex Cover.
|
|
\item Zeigen Sie $\problem{VertexCover} \in \NP$ durch einen
|
|
nichtdeterministischen Polynomialzeit-Algorithmus (Korrektheit + Laufzeit).
|
|
\end{enumerate}
|
|
|
|
\bspkopf{VertexCover $\in$ NP}
|
|
\textbf{Instanz.} Das folgende Viereck mit 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) -- die
|
|
Entscheidungsfolge $(\text{ja},\text{nein},\text{ja},\text{nein})$ des
|
|
nichtdeterministischen Algorithmus wählt genau diese Menge. 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}
|
|
|
|
|
|
\lsg
|
|
\textbf{1.} Ein minimales Vertex Cover ist $C = \{3,4,5,6\}$ (Größe 4).
|
|
\begin{center}
|
|
\hanetzu{\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 Entscheide für jeden Knoten $v \in V$ nichtdeterministisch, 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$.
|
|
\item Lehne ab, falls für eine Kante keiner der beiden Endpunkte in $C$ liegt.
|
|
\item Sonst akzeptiere.
|
|
\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$
|
|
|
|
\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}
|
|
|
|
\bspkopf{FeedbackVertexSet $\in$ NP}
|
|
\textbf{Instanz.} Der folgende gerichtete Graph mit Schranke $k=1$. Sein
|
|
einziger Kreis ist $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}
|
|
|
|
|
|
\lsg
|
|
\textbf{1.} Ein minimales FVS ist $X = \{5\}$ (Größe 1): ohne Knoten 5
|
|
bleibt kein Kreis übrig.
|
|
\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.} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat
|
|
$X \subseteq V$.
|
|
|
|
Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe $|X| \le k$; lehne sonst ab.
|
|
\item Konstruiere $G' = G \setminus X$.
|
|
\item Prüfe mit topologischer Sortierung, ob $G'$ kreisfrei ist: Sie
|
|
existiert genau dann, wenn kein Kreis existiert. Akzeptiere entsprechend.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Existiert ein FVS der Größe $\le k$, dann gibt es ein
|
|
Zertifikat, das genau dieses beschreibt. $G'$ ist dann kreisfrei und der
|
|
Verifizierer akzeptiert. Existiert keines, dann verletzt jedes Zertifikat
|
|
eine der beiden Prüfungen -- der Verifizierer lehnt ab.
|
|
|
|
\textbf{Laufzeit:} Größentest $O(|V|)$, Konstruktion und topologische
|
|
Sortierung $O(|V|+|E|)$ -- polynomiell. Damit
|
|
$\problem{FeedbackVertexSet} \in \NP$. \hfill$\square$
|
|
|
|
\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 für \problem{Longest Path} an.
|
|
\item[b)] Beschreiben Sie einen Verifizierer für \problem{Longest Path} und
|
|
geben Sie dessen Laufzeit konkret an.
|
|
\item[c)] Beschreiben Sie eine nichtdeterministische Turing-Maschine (in
|
|
Worten), die \problem{Longest Path} löst. Geben Sie auch hier die Laufzeit
|
|
konkret an.
|
|
\end{enumerate}
|
|
|
|
\bspkopf{Longest Path $\in$ NP}
|
|
\textbf{Instanz.} Das folgende Viereck mit Schranke $k=3$ (gesucht: ein
|
|
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}
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} Eine Folge von $k+1$ paarweise verschiedenen Knoten
|
|
$(v_0, \dots, v_k)$ -- der behauptete Pfad.
|
|
|
|
\textbf{b)} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat
|
|
$(v_0, \dots, v_k)$.
|
|
|
|
Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe, ob alle $v_i$ paarweise verschieden sind; lehne sonst ab.
|
|
\item Prüfe für jedes $i < k$, ob $\{v_i, v_{i+1}\} \in E$ gilt; lehne sonst
|
|
ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Hat $G$ einen einfachen Pfad der Länge $\ge k$, dann
|
|
bilden dessen erste $k+1$ Knoten ein Zertifikat. Dieses besteht beide
|
|
Prüfungen und wird akzeptiert. Wird umgekehrt ein Zertifikat akzeptiert, dann
|
|
beschreibt es einen einfachen Pfad der Länge $k$. Also hat $G$ einen einfachen
|
|
Pfad der Länge $\ge k$.
|
|
|
|
\textbf{Laufzeit:} Die Verschiedenheit kostet $O(k^2)$ paarweise Vergleiche.
|
|
Jede der $k$ Kanten wird mit einem Adjazenzmatrix-Lookup in $O(1)$ geprüft.
|
|
Gesamt $O(k^2) \subseteq O(|V|^2)$, polynomiell.
|
|
|
|
\textbf{c)} Die NTM arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Rate nacheinander $k+1$ Knoten $v_0, \dots, v_k$ auf ein Arbeitsband.
|
|
\item Prüfe, ob alle geratenen Knoten paarweise verschieden sind; lehne sonst
|
|
ab.
|
|
\item Prüfe für jedes $i < k$, ob $\{v_i, v_{i+1}\} \in E$ gilt; lehne sonst
|
|
ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Hat $G$ einen einfachen Pfad der Länge $\ge k$, dann rät
|
|
ein Rechenweg genau dessen erste $k+1$ Knoten und akzeptiert. Sonst scheitert
|
|
auf jedem Rechenweg eine Prüfung -- die NTM lehnt ab.
|
|
|
|
\textbf{Laufzeit:} $k+1$ Rateschritte plus $O(|V|^2)$ für die Prüfungen --
|
|
insgesamt polynomiell.
|
|
|
|
Also gilt $\problem{Longest Path} \in \NP$. \hfill$\square$
|
|
|
|
\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 auf verschiedene Weisen, dass das Problem in NP liegt:
|
|
\begin{enumerate}
|
|
\item[a)] Geben Sie ein Zertifikat für \problem{Dominating Set} an.
|
|
\item[b)] Beschreiben Sie einen polynomiellen Verifizierer für
|
|
\problem{Dominating Set} und schätzen Sie die Laufzeit in $O$-Notation konkret
|
|
ab.
|
|
\item[c)] Beschreiben Sie (in Worten) eine polynomielle, nichtdeterministische
|
|
Turing-Maschine, die \problem{Dominating Set} löst. Schätzen Sie auch hier die
|
|
Laufzeit in $O$-Notation konkret ab.
|
|
\end{enumerate}
|
|
|
|
\bspkopf{Dominating Set $\in$ NP}
|
|
\textbf{Instanz.} Der folgende Stern mit Zentrum 1 und 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) -- die
|
|
Entscheidungsfolge $(\text{ja}, \text{nein}, \text{nein}, \text{nein})$ der NTM
|
|
wählt genau diese Menge. 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}
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} Die Knotenmenge $D \subseteq V$.
|
|
|
|
\textbf{b)} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat
|
|
$D \subseteq V$.
|
|
|
|
Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe $|D| \le k$; lehne sonst ab.
|
|
\item Prüfe für jeden Knoten $v \in V$, ob $v \in D$ gilt oder ein Nachbar von
|
|
$v$ in $D$ liegt. Durchlaufe dazu die Zeile von $v$ in der Adjazenzmatrix.
|
|
\item Lehne ab, falls ein Knoten weder in $D$ liegt noch einen Nachbarn in $D$
|
|
hat.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Existiert ein Dominating Set der Größe $\le k$, dann
|
|
ist genau dieses ein Zertifikat, das akzeptiert wird. Existiert keines, dann
|
|
verletzt jedes Zertifikat eine der beiden Prüfungen -- der Verifizierer lehnt
|
|
ab.
|
|
|
|
\textbf{Laufzeit:} Der Größentest läuft in $O(|V|)$, der Dominanztest in
|
|
$O(|V|)$ pro Knoten. Gesamt $O(|V|^2)$, polynomiell.
|
|
|
|
\textbf{c)} Die NTM arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Entscheide für jeden Knoten $v \in V$ nichtdeterministisch, ob er in $D$
|
|
aufgenommen wird.
|
|
\item Prüfe $|D| \le k$; lehne sonst ab.
|
|
\item Prüfe für jeden Knoten $v \in V$, ob $v \in D$ gilt oder ein Nachbar von
|
|
$v$ in $D$ liegt; lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Existiert ein Dominating Set der Größe $\le k$, dann
|
|
wählt eine Folge von Entscheidungen genau dieses aus. Dieser Rechenweg
|
|
akzeptiert. Existiert keines, dann lehnt jeder Rechenweg ab.
|
|
|
|
\textbf{Laufzeit:} $O(|V|)$ Rateschritte plus $O(|V|^2)$ für die Prüfungen,
|
|
also $O(|V|^2)$, polynomiell.
|
|
|
|
Also gilt $\problem{Dominating Set} \in \NP$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ##################################################################
|
|
\section{Vorlesungsbeweise}
|
|
% ##################################################################
|
|
|
|
% ==================================================================
|
|
\katkopf{$P \subseteq NP$}{Vorlesung (Skript)}
|
|
Zeigen Sie: $\Pclass \subseteq \NP$.
|
|
|
|
\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 beliebiges anderes Zertifikat. 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.
|
|
|
|
|
|
\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$, also polynomiell. Damit ist
|
|
$V$ ein polynomieller Verifizierer und $L \in \NP$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{NDTM-Definition $\subseteq$ Verifizierer-Definition}{Klausur SS25-H, A2, 2+8 P.}
|
|
Sei $L \subseteq \Sigma^*$ eine Sprache, für die eine NDTM $M$ über einem
|
|
Alphabet $\Gamma \supset \Sigma$ und ein Polynom $T$ existieren, sodass $L$
|
|
von $M$ in nicht-deterministischer Zeit $T$ entschieden wird. Beweisen Sie:
|
|
Es existiert ein polynomieller Verifizierer für $L$.
|
|
\begin{enumerate}
|
|
\item[a)] Geben Sie dafür zunächst für die Sprache $L$, die durch die
|
|
folgende NDTM $M$ akzeptiert wird, einen polynomiellen Verifizierer an, der
|
|
in analoger Weise arbeitet. Die NDTM $M$ erhält als Eingabe einen
|
|
ungerichteten Graphen $G = (V,E)$ und eine Zahl $k \in \mathbb{N}_0$.
|
|
|
|
\smallskip
|
|
$M(G = (V,E),\ k)$
|
|
\begin{itemize}
|
|
\item[1.] Rate nicht-deterministisch eine Menge von Knoten $C \subseteq V$.
|
|
\item[2.] Für alle $\{u,v\} \in E$: Falls $u \notin C$ und $v \notin C$,
|
|
verwerfe.
|
|
\item[3.] Falls $|C| > k$, verwerfe.
|
|
\item[4.] Akzeptiere.
|
|
\end{itemize}
|
|
\item[b)] Führen Sie nun einen allgemeingültigen Beweis.
|
|
\end{enumerate}
|
|
|
|
\bspkopf{NDTM $\subseteq$ Verifizierer: VC am Dreieck, $k=2$}
|
|
\textbf{Instanz.} Das folgende Dreieck $G$ mit $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: Knotenmenge $C=\{1,2\}$\\ (Knoten $1,2$ hervorgehoben)};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
Die NDTM rät die Knotenmenge $C \subseteq V$. Der Verifizierer erhält $C$
|
|
als Zertifikat und prüft mit denselben Schritten -- das Raten ist durch das
|
|
Zertifikat ersetzt.
|
|
|
|
\textbf{Gültiges Zertifikat} $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 Zertifikat} $C=\{1\}$: Kante $\{2,3\}$ ist ungedeckt
|
|
($2\notin C,\ 3\notin C$) $\Rightarrow$ \textbf{verworfen}.
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat $c$.
|
|
|
|
Der Verifizierer $V(G, k;\ c)$ arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item[1.] Interpretiere das Zertifikat $c$ als Knotenmenge $C \subseteq V$.
|
|
\item[2.] Für alle $\{u,v\} \in E$: Falls $u \notin C$ und $v \notin C$,
|
|
verwerfe.
|
|
\item[3.] Falls $|C| > k$, verwerfe.
|
|
\item[4.] Akzeptiere.
|
|
\end{itemize}
|
|
Das Raten ist durch das Zertifikat ersetzt. Die Prüfschritte 2--4 sind
|
|
identisch zur NDTM. \textbf{Laufzeit:} Jede Kante prüfen und $|C|$ zählen --
|
|
$O(|V| + |E|)$, polynomiell.
|
|
|
|
\textbf{b)} Sei $L$ von der NDTM $M$ in nicht-deterministischer Zeit $T$
|
|
akzeptiert.
|
|
|
|
Eingabe: Wort $x$ und als Zertifikat eine Folge $c$ von höchstens $T(|x|)$
|
|
nichtdeterministischen Entscheidungen.
|
|
|
|
Der Verifizierer $V(x, c)$ arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Simuliere $M$ auf $x$ deterministisch, höchstens $T(|x|)$ Schritte.
|
|
\item Bei jedem Schritt mit mehreren möglichen Übergängen wähle den Übergang,
|
|
den die Entscheidungsfolge $c$ vorgibt.
|
|
\item Falls die Simulation akzeptierend endet, akzeptiere.
|
|
\item Sonst lehne ab.
|
|
\end{itemize}
|
|
|
|
\textbf{Korrektheit:} Ist $x \in L$, dann hat $M$ einen akzeptierenden
|
|
Rechenweg mit höchstens $T(|x|)$ Schritten. Seine Entscheidungsfolge ist ein
|
|
Zertifikat, das $V$ akzeptiert.
|
|
|
|
Ist $x \notin L$, dann akzeptiert kein Rechenweg von $M$. Jede
|
|
Entscheidungsfolge steuert die Simulation einen Rechenweg von $M$ entlang --
|
|
$V$ lehnt jedes Zertifikat ab.
|
|
|
|
\textbf{Laufzeit:} Höchstens $T(|x|)$ Simulationsschritte mit konstantem
|
|
Aufwand pro Schritt -- $O(T(|x|))$, polynomiell. Das Zertifikat umfasst
|
|
höchstens $T(|x|)$ Entscheidungen -- polynomiell viele. Somit ist $V$ ein
|
|
polynomieller Verifizierer für $L$. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{Verifizierer $\subseteq$ NDTM: VC am Dreieck}
|
|
\textbf{Instanz.} \problem{VertexCover} am folgenden Dreieck $G$ mit
|
|
$k=2$. Gegeben ist der Verifizierer: prüfe $|C| \le k$ und jede Kante
|
|
gedeckt.
|
|
\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)
|
|
{geratene Knotenmenge $C=\{1,2\}$\\ (Knoten $1,2$ hervorgehoben)};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\textbf{Kern.} Die NDTM rät einen String $u$ und simuliert den Verifizierer.
|
|
Der Rechenweg mit $C = \{1,2\}$ akzeptiert -- also akzeptiert die NDTM.
|
|
|
|
|
|
\lsg
|
|
\textbf{Konstruktion:} Wähle $p$ als das Laufzeitpolynom von $M$, also
|
|
$p(|x|) = O(|x|^d)$. In $p(|x|)$ Schritten liest $M$ höchstens $p(|x|)$
|
|
Zeichen des Zertifikats. 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$, dann existiert ein Zertifikat $c$ mit
|
|
$M(x,c) = 1$. $M$ liest davon höchstens die ersten $p(|x|)$ Zeichen. Der
|
|
Rechenweg, der genau diesen Anfang als $u$ rät, akzeptiert -- also
|
|
akzeptiert $N$. Ist $x \notin L$, dann verwirft $M$ jedes geratene $u$.
|
|
Alle Rechenwege verwerfen -- also verwirft $N$.
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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}$.
|
|
|
|
|
|
\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}
|
|
|
|
\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.
|
|
|
|
\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{Schluss:} \problem{VertexCover} ist NP-vollständig,
|
|
$\problem{VertexCover} \redp \problem{FeedbackVertexSet}$ und
|
|
$\problem{FeedbackVertexSet} \in \NP$ -- also ist
|
|
\problem{FeedbackVertexSet} NP-vollständig.
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{$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.
|
|
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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{$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{$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.
|
|
|
|
|
|
\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:}
|
|
\begin{itemize}
|
|
\item Sei die Originalklausel erfüllt, etwa $y_i$ wahr.
|
|
\item Setze $x_1 = \dots = x_{i-2} = \true$ und
|
|
$x_{i-1} = \dots = x_{\ell-3} = \false$.
|
|
\item Dann sind die Kettenklauseln vor der Klausel mit $y_i$ durch ihr
|
|
$x$-Literal erfüllt.
|
|
\item Die Klausel mit $y_i$ ist durch $y_i$ erfüllt.
|
|
\item Die restlichen Kettenklauseln sind durch ihr $\neg x$-Literal erfüllt.
|
|
\item Also ist jede Kettenklausel erfüllt.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis zurück:}
|
|
\begin{itemize}
|
|
\item Sei die Kette erfüllt.
|
|
\item Angenommen, alle $y_i$ wären falsch.
|
|
\item Dann erzwingt die erste Klausel $x_1 = \true$.
|
|
\item Damit erzwingt die zweite Klausel $x_2 = \true$, induktiv folgt
|
|
$x_{\ell-3} = \true$.
|
|
\item Dann ist die letzte Klausel
|
|
$(\neg x_{\ell-3} \vee y_{\ell-1} \vee y_\ell)$ falsch -- Widerspruch.
|
|
\item Also ist ein $y_i$ wahr und die Originalklausel erfüllt.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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!}
|
|
|
|
\bspkopf{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 die Knoten $[F_1{:}\,x]$ und $[F_2{:}\,\neg x]$. Da $x$
|
|
und $\neg x$ sich widersprechen, gibt es \emph{keine} Kante und damit 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}
|
|
|
|
|
|
\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:}
|
|
\begin{itemize}
|
|
\item Sei $\psi$ eine erfüllende Belegung von $F$.
|
|
\item Dann existiert für jedes $i$ ein $r_i$ mit $\psi(y_{ir_i}) = \true$.
|
|
\item Setze $C = \{[i, r_i] \mid i \in [m]\}$.
|
|
\item Angenommen, für ein Paar $i \ne j$ wäre
|
|
$\{[i,r_i],[j,r_j]\} \notin E$.
|
|
\item Dann müsste $y_{ir_i} = \neg y_{jr_j}$ gelten.
|
|
\item Das wäre ein Widerspruch, denn beide Literale sind unter $\psi$ wahr.
|
|
\item Also ist $C$ eine $m$-Clique in $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis zurück:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $m$-Clique in $G$.
|
|
\item Da Knoten derselben Klausel nie verbunden sind, hat $C$ die Form
|
|
$\{[1,r_1], \dots, [m,r_m]\}$.
|
|
\item Setze $\psi(y_{ir_i}) = \true$ für alle $i$.
|
|
\item Das ist widerspruchsfrei, denn $y_{ir_i} \ne \neg y_{jr_j}$ (sonst
|
|
gäbe es keine Kante).
|
|
\item Dann ist jede Klausel $F_i$ durch $y_{ir_i}$ erfüllt.
|
|
\item Also ist $F$ erfüllbar.
|
|
\end{itemize}
|
|
|
|
\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.
|
|
|
|
Damit ist die Konstruktion eine polynomielle Reduktion und es gilt
|
|
$\problem{SAT} \redp k\text{-}\problem{Clique}$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{$k$-Clique ist NP-vollständig}{Klausur SS23-H, A4, 10 P.}
|
|
\textbf{Problem $k$-\problem{Clique}:}\\
|
|
\textbf{Eingabe:} Ein ungerichteter Graph $G = (V,E)$ und eine Zahl
|
|
$k \ge 1$. Eine Clique ist eine Teilmenge $C \subseteq V$ mit
|
|
$\{u,v\} \in E$ für alle $u,v \in C$ mit $u \ne v$.\\
|
|
\textbf{Entscheide:} Hat der gegebene Graph $G$ eine Clique $C \subseteq V$
|
|
mit mindestens $k$ Knoten (d.\,h.\ mit $|C| \ge k$)?
|
|
|
|
Beweisen Sie: Das Problem $k$-\problem{Clique} ist NP-vollständig.
|
|
|
|
\bspkopf{$k$-Clique: Reduktionsgraph und Zertifikat}
|
|
\textbf{Instanz.} $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{Von der Belegung zur Clique.} $x=\true$, $z=\true$, $y=\false$
|
|
erfüllt alle drei Klauseln. Die gewählten wahren Literale bilden die dick
|
|
markierte $3$-Clique.
|
|
|
|
\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}.
|
|
|
|
|
|
\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:} Sei $F = F_1 \wedge \dots \wedge F_m$ eine
|
|
KNF-Formel. Wir konstruieren daraus eine $k$-\problem{Clique}-Instanz durch:
|
|
\begin{itemize}
|
|
\item $V = \{[i,j] \mid \text{$j$-tes Literal in Klausel } i\}$
|
|
\item $E = \{\{[i,j],[i',j']\} \mid i \ne i',\ y_{ij} \ne \neg y_{i'j'}\}$
|
|
\item $k = m$
|
|
\end{itemize}
|
|
\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:}
|
|
\begin{itemize}
|
|
\item Sei $\psi$ eine erfüllende Belegung von $F$.
|
|
\item Dann liefert $\psi$ pro Klausel $i$ ein wahres Literal $y_{ir_i}$.
|
|
\item Die Knoten $[i,r_i]$ stammen aus paarweise verschiedenen Klauseln.
|
|
\item Ihre Literale sind widerspruchsfrei, denn alle sind unter $\psi$ wahr.
|
|
\item Somit sind die Knoten paarweise verbunden -- eine $m$-Clique.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis zurück:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $m$-Clique.
|
|
\item Da Knoten derselben Klausel nie verbunden sind, enthält $C$ aus jeder
|
|
Klausel genau einen Knoten.
|
|
\item Die zugehörigen Literale sind widerspruchsfrei, denn sonst fehlte eine
|
|
Kante zwischen ihren Knoten.
|
|
\item Setze alle diese Literale wahr -- dann ist jede Klausel erfüllt.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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}.
|
|
|
|
\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}.
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Gewichte $w_i$, Profite $p_i$, Schranken
|
|
$B, P$ und Zertifikat $S \subseteq [n]$.
|
|
|
|
Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe $\sum_{i\in S} w_i \le B$; lehne sonst ab.
|
|
\item Prüfe $\sum_{i\in S} p_i \ge P$; lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine gültige Auswahl, dann ist sie ein Zertifikat, das akzeptiert
|
|
wird. Sonst wird jedes Zertifikat abgelehnt. Zwei Summen bilden und
|
|
vergleichen -- $O(n)$, polynomiell. Also gilt $\problem{Knapsack} \in \NP$.
|
|
|
|
\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:}
|
|
\begin{itemize}
|
|
\item Sei $S$ eine Menge mit $\sum_{i\in S} c_i = K$.
|
|
\item Dann ist das Gewicht von $S$ gleich $K \le B$.
|
|
\item Ebenso ist der Profit von $S$ gleich $K \ge P$.
|
|
\item Also ist $S$ eine Knapsack-Lösung.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis zurück:}
|
|
\begin{itemize}
|
|
\item Sei $S$ eine Knapsack-Lösung.
|
|
\item Gewicht und Profit von $S$ sind dieselbe Zahl $\sum_{i\in S} c_i$.
|
|
\item Da $S$ die Kapazität einhält, gilt $\sum_{i\in S} c_i \le B = K$.
|
|
\item Da $S$ den Zielprofit erreicht, gilt $\sum_{i\in S} c_i \ge P = K$.
|
|
\item Somit ist $\sum_{i\in S} c_i = K$ -- eine SubsetSum-Lösung.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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}.
|
|
|
|
\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}.
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Zahlen $c_1, \dots, c_n$ und Zertifikat
|
|
$S \subseteq [n]$.
|
|
|
|
Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Berechne die Gesamtsumme $\Sigma = \sum_{j=1}^{n} c_j$.
|
|
\item Prüfe $\sum_{j\in S} c_j = \Sigma/2$; lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine Partitionslösung, dann ist eine ihrer Seiten ein Zertifikat,
|
|
das akzeptiert wird. Sonst wird jedes Zertifikat abgelehnt. Zwei Summen
|
|
bilden und vergleichen -- $O(n)$, polynomiell. Also gilt
|
|
$\problem{Partition} \in \NP$.
|
|
|
|
\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:}
|
|
\begin{itemize}
|
|
\item Sei $S \subseteq [n]$ eine Menge mit $\sum_{j\in S} c_j = K$.
|
|
\item Setze $S' = S \cup \{n{+}1\}$.
|
|
\item Dann gilt $\sum_{j\in S'} c_j = K + (N-K) = N$.
|
|
\item Also ist $S'$ eine Seite mit halber Gesamtsumme -- eine
|
|
Partitionslösung.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis zurück:}
|
|
\begin{itemize}
|
|
\item Sei $S' \subseteq [n{+}2]$ eine Seite mit $\sum_{j \in S'} c_j = N$.
|
|
\item Nach der Schlüsselbeobachtung liegen $n{+}1$ und $n{+}2$ auf
|
|
verschiedenen Seiten.
|
|
\item O.B.d.A.\ gilt $n{+}1 \in S'$ und $n{+}2 \notin S'$.
|
|
\item Setze $S = S' \setminus \{n{+}1\}$, also $S \subseteq [n]$.
|
|
\item Dann gilt $\sum_{j \in S} c_j = N - (N-K) = K$ -- also ist $S$ eine
|
|
SubsetSum-Lösung.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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{Die 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}
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\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 an dieser Instanz:}
|
|
\begin{itemize}
|
|
\item Greedy packt $(1,1)$ und $(3,3)$ [Last 4]; $(11,13)$ passt nicht --
|
|
das ist der 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 Gegenstand $k{+}1$
|
|
der Anteil $\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 Ungleichungskette 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 stimmt hier nachrechenbar. Die Güte
|
|
$\mathrm{OPT}/\mathrm{MGA} = 14/11 \approx 1{,}27$ bleibt unter 2.
|
|
|
|
|
|
\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
|
|
\]
|
|
|
|
\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}.
|
|
|
|
\bspkopf{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 mit $n=4$
|
|
Knoten 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
|
|
von $G$. 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 beiden Kanten von $G'$ nicht. Also
|
|
existiert kein VC mit $|C|\le 0$: die Bildinstanz bleibt
|
|
\textbf{Nein}.
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat
|
|
$C \subseteq V$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Falls $|C| > k$, lehne ab.
|
|
\item Prüfe für jede Kante $\{u,v\} \in E$, ob $u \in C$ oder $v \in C$ gilt.
|
|
\item Lehne ab, falls das für eine Kante fehlschlägt.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert ein Vertex Cover $C$ mit $|C| \le k$, dann gibt es ein Zertifikat
|
|
dafür. Dieses wird vom Verifizierer akzeptiert und sonst abgelehnt.
|
|
Größen- und Kantenprüfung laufen in $O(|V| + |E|)$, somit polynomiell.
|
|
Also gilt $\problem{VertexCover} \in \NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass \problem{VertexCover} NP-schwer ist durch die
|
|
Reduktion $\problem{Clique} \redp \problem{VertexCover}$. \problem{Clique}
|
|
ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz mit
|
|
$n = |V|$ (o.B.d.A.\ $k \le n$). Wir konstruieren daraus eine
|
|
\problem{VertexCover}-Instanz $(G' = (V, E'),\, k')$ durch:
|
|
\begin{itemize}
|
|
\item $E' = \binom{V}{2} \setminus E$, also genau die Nicht-Kanten von $G$
|
|
\item $k' = n - k$
|
|
\end{itemize}
|
|
So wird $G$ zum Komplementgraphen $G'$ invertiert.
|
|
\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 Clique nach VertexCover:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine Clique in $G$ mit $|C| \ge k$.
|
|
\item Setze $W = V \setminus C$, dann gilt $|W| \le n - k = k'$.
|
|
\item In $G$ sind alle Kanten innerhalb von $C$ vorhanden.
|
|
\item Somit hat $G'$ keine Kante mit beiden Endpunkten in $C$.
|
|
\item Also hat jede Kante von $G'$ einen Endpunkt in $W$.
|
|
\item Damit ist $W$ ein Vertex Cover von $G'$ mit $|W| \le k'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis VertexCover nach Clique:}
|
|
\begin{itemize}
|
|
\item Sei $W$ ein Vertex Cover von $G'$ mit $|W| \le k'$.
|
|
\item Setze $C = V \setminus W$, dann gilt $|C| \ge n - k' = k$.
|
|
\item Sei $\{u,v\} \subseteq C$ ein beliebiges Knotenpaar.
|
|
\item Da $u, v \notin W$ und $W$ jede Kante von $G'$ deckt, gilt
|
|
$\{u,v\} \notin E'$.
|
|
\item Somit gilt $\{u,v\} \in E$, denn $E'$ enthält genau die Nicht-Kanten
|
|
von $G$.
|
|
\item Also ist $C$ eine Clique in $G$ mit $|C| \ge k$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Alle Knotenpaare durchgehen und die Kanten invertieren --
|
|
$O(|V|^2)$, also bleibt die Transformation polynomiell.
|
|
|
|
Da $\problem{VertexCover} \in \NP$ und NP-schwer ist, folgt:
|
|
\problem{VertexCover} ist NP-vollständig. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{$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}
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat
|
|
$C \subseteq V$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Falls $|C| < k$, lehne ab.
|
|
\item Prüfe für jedes Paar $\{x,y\} \subseteq C$, ob $\{x,y\} \in E$ gilt.
|
|
\item Lehne ab, falls für ein Paar $\{x,y\} \notin E$ gilt.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine Clique $C$ mit $|C| \ge k$, dann gibt es ein Zertifikat dafür.
|
|
Dieses wird vom Verifizierer akzeptiert und sonst abgelehnt.
|
|
Größenprüfung und Prüfung aller Paare laufen in $O(|V|^2)$, somit polynomiell.
|
|
Also gilt $k\text{-}\problem{CliqueUniversal} \in \NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass $k$-\problem{CliqueUniversal} NP-schwer ist
|
|
durch die Reduktion
|
|
$\problem{Clique} \redp k\text{-}\problem{CliqueUniversal}$.
|
|
\problem{Clique} ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz.
|
|
Wir konstruieren daraus eine $k$-\problem{CliqueUniversal}-Instanz
|
|
$(\bar G = (\bar V, \bar E),\, \bar k)$ durch:
|
|
\begin{itemize}
|
|
\item $\bar V = V \cup \{u\}$ mit einem neuen Knoten $u$
|
|
\item $\bar E = E \cup \{\{u,v\} \mid v \in V\}$
|
|
\item $\bar k = k + 1$
|
|
\end{itemize}
|
|
Der neue Knoten $u$ ist mit allen anderen verbunden, also ist
|
|
$(\bar G, \bar k)$ eine gültige Instanz.
|
|
|
|
\textbf{Beweis Clique nach $k$-CliqueUniversal:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine Clique von $G$ mit $|C| \ge k$.
|
|
\item Da $u$ mit allen Knoten verbunden ist, ist $u$ auch mit allen Knoten
|
|
aus $C$ verbunden.
|
|
\item Damit ist $C \cup \{u\}$ eine Clique in $\bar G$.
|
|
\item Dann gilt auch $|C \cup \{u\}| \ge k + 1 = \bar k$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $k$-CliqueUniversal nach Clique:}
|
|
\begin{itemize}
|
|
\item Sei $\bar C$ eine Clique von $\bar G$ mit $|\bar C| \ge \bar k$.
|
|
\item Setze $C = \bar C \setminus \{u\}$, dann gilt $|C| \ge \bar k - 1 = k$.
|
|
\item Alle Knoten in $C$ liegen in $V$ und alle Kanten zwischen ihnen liegen
|
|
in $E$, da nur Kanten zu $u$ neu hinzugefügt wurden.
|
|
\item Damit ist $C$ eine Clique in $G$ mit $|C| \ge k$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Ein Knoten und $|V|$ Kanten werden hinzugefügt --
|
|
$O(|V|)$, also bleibt die Transformation polynomiell.
|
|
|
|
Da $k\text{-}\problem{CliqueUniversal} \in \NP$ und NP-schwer ist, folgt:
|
|
$k$-\problem{CliqueUniversal} ist NP-vollständig. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\lsg
|
|
\textbf{NP-schwer:} Zeige, dass \problem{Clique-Nomember} NP-schwer ist durch
|
|
die Reduktion $\problem{Clique} \redp \problem{Clique-Nomember}$.
|
|
\problem{Clique} ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz.
|
|
Wir konstruieren daraus eine \problem{Clique-Nomember}-Instanz
|
|
$(G', v, k)$ durch:
|
|
\begin{itemize}
|
|
\item $G' = (V \cup \{v\},\, E)$ mit einem neuen, isolierten Knoten
|
|
$v \notin V$
|
|
\item $k$ bleibt unverändert
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis Clique nach Clique-Nomember:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $k$-Clique in $G$.
|
|
\item Da keine Kanten entfernt wurden, ist $C$ auch eine $k$-Clique in $G'$.
|
|
\item Da $v \notin V$, gilt $v \notin C$.
|
|
\item Also ist $C$ eine $k$-Clique in $G'$, die $v$ nicht enthält.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis Clique-Nomember nach Clique:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $k$-Clique in $G'$ mit $v \notin C$.
|
|
\item Dann gilt $C \subseteq V$, denn $v$ ist der einzige neue Knoten.
|
|
\item Alle Kanten zwischen Knoten aus $C$ liegen in $E$, denn es wurden
|
|
keine Kanten hinzugefügt.
|
|
\item Also ist $C$ eine $k$-Clique in $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Graph kopieren und einen isolierten Knoten anhängen --
|
|
$O(|V| + |E|)$, also bleibt die Transformation polynomiell.
|
|
|
|
Da $\problem{Clique-Nomember} \in \NP$ (nach Annahme) und NP-schwer ist,
|
|
folgt: \problem{Clique-Nomember} ist NP-vollständig. \hfill$\square$
|
|
|
|
\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 (eine Menge von Knoten,
|
|
die paarweise nicht adjazent sind, d.\,h.\ zwischen denen es keine Kanten
|
|
gibt) der Größe $k$ als auch eine Clique der Größe $k$? Zeigen Sie die
|
|
NP-Schwere durch Reduktion eines bekannten NP-schweren Problems.
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\lsg
|
|
\textbf{NP-schwer:} Zeige, dass \problem{CliqueAndIndependentSet} NP-schwer
|
|
ist durch die Reduktion
|
|
$\problem{Clique} \redp \problem{CliqueAndIndependentSet}$.
|
|
\problem{Clique} ist bereits als NP-vollständig bekannt, also insbesondere
|
|
NP-schwer.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{Clique}-Instanz
|
|
(o.B.d.A.\ $k \ge 2$; für $k \le 1$ ist die Instanz direkt lösbar, Ja genau
|
|
dann, wenn $V \ne \emptyset$). Wir konstruieren daraus eine
|
|
\problem{CliqueAndIndependentSet}-Instanz $(G', k)$ durch:
|
|
\begin{itemize}
|
|
\item $G' = (V \cup \{u_1,\dots,u_k\},\, E)$ mit $k$ neuen isolierten
|
|
Knoten $u_1, \dots, u_k$
|
|
\item $k$ bleibt unverändert
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis Clique nach CliqueAndIndependentSet:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $k$-Clique in $G$.
|
|
\item Da keine Kanten entfernt wurden, ist $C$ auch eine $k$-Clique in $G'$.
|
|
\item Die Knoten $u_1, \dots, u_k$ sind isoliert, also paarweise nicht
|
|
adjazent.
|
|
\item Somit ist $\{u_1, \dots, u_k\}$ ein Independent Set der Größe $k$
|
|
in $G'$.
|
|
\item Also gibt es in $G'$ sowohl eine $k$-Clique als auch ein Independent
|
|
Set der Größe $k$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis CliqueAndIndependentSet nach Clique:}
|
|
\begin{itemize}
|
|
\item Sei $(G', k)$ eine Ja-Instanz, dann enthält $G'$ insbesondere eine
|
|
$k$-Clique $C'$.
|
|
\item Da $k \ge 2$, hat jeder Knoten in $C'$ mindestens einen Nachbarn
|
|
in $C'$.
|
|
\item Die Knoten $u_1, \dots, u_k$ sind isoliert, haben also keine Nachbarn.
|
|
\item Somit gilt $C' \subseteq V$.
|
|
\item Also ist $C'$ eine $k$-Clique in $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} $k$ isolierte Knoten $u_1, \dots, u_k$ anhängen --
|
|
$O(k) \subseteq O(|V|)$, also bleibt die Transformation polynomiell.
|
|
|
|
Da \problem{Clique} NP-schwer ist und
|
|
$\problem{Clique} \redp \problem{CliqueAndIndependentSet}$ gilt, folgt:
|
|
\problem{CliqueAndIndependentSet} ist NP-schwer. \hfill$\square$
|
|
|
|
\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}
|
|
|
|
\bspkopf{$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.}
|
|
|
|
|
|
\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:} Eingabe: Graph $G = (V,E)$, Zahl $k$ und
|
|
Zertifikat $C \subseteq V$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Falls $|C| < k$, lehne ab.
|
|
\item Prüfe für jedes Paar $\{x,y\} \subseteq C$, ob $\{x,y\} \in E$ gilt.
|
|
\item Lehne ab, falls für ein Paar $\{x,y\} \notin E$ gilt.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine Clique $C$ mit $|C| \ge k$, dann gibt es ein Zertifikat dafür.
|
|
Dieses wird vom Verifizierer akzeptiert und sonst abgelehnt.
|
|
Größenprüfung und Prüfung aller Paare laufen in $O(|V|^2)$, somit polynomiell.
|
|
Also gilt $k\text{-}\problem{CLIQUE-DEG-3} \in \NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass $k$-\problem{CLIQUE-DEG-3} NP-schwer ist durch
|
|
die Reduktion
|
|
$k\text{-}\problem{Clique} \redp k\text{-}\problem{CLIQUE-DEG-3}$.
|
|
$k$-\problem{Clique} ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine $k$-\problem{Clique}-Instanz.
|
|
Wir konstruieren daraus eine $k$-\problem{CLIQUE-DEG-3}-Instanz $(G', k)$
|
|
durch:
|
|
\begin{itemize}
|
|
\item Falls $k \le 4$: Löse $(G, k)$ direkt in Polynomialzeit -- für
|
|
$k \le 4$ genügt es, alle $O(|V|^k)$ Knotenmengen zu testen. Gib je
|
|
nach Antwort eine feste triviale Ja- bzw.\ Nein-Instanz von
|
|
$k$-\problem{CLIQUE-DEG-3} aus.
|
|
\item Falls $k \ge 5$: Hänge an jeden Knoten $v \in V$ drei private Knoten
|
|
$a_v, b_v, c_v$ an.
|
|
\item Verbinde dabei $\{v, a_v, b_v, c_v\}$ vollständig zum $K_4$.
|
|
\item $k$ bleibt unverändert.
|
|
\end{itemize}
|
|
Dann gilt $\deg(v) \ge 3$ für alle Knoten: Jedes $v \in V$ hat die drei
|
|
Nachbarn $a_v, b_v, c_v$, und Gadget-Knoten haben Grad genau 3. Die Instanz
|
|
ist gültig.
|
|
\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 $k$-Clique nach $k$-CLIQUE-DEG-3} (Fall $k \ge 5$):
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $k$-Clique in $G$.
|
|
\item Da keine Kanten entfernt wurden, ist $C$ auch eine $k$-Clique in $G'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $k$-CLIQUE-DEG-3 nach $k$-Clique} (Fall $k \ge 5$):
|
|
\begin{itemize}
|
|
\item Sei $C'$ eine $k$-Clique in $G'$.
|
|
\item Angenommen, $C'$ enthielte einen Gadget-Knoten.
|
|
\item Gadget-Knoten sind nur mit ihrem $v$ und untereinander verbunden.
|
|
\item Dann läge $C'$ komplett in einem $\{v, a_v, b_v, c_v\}$.
|
|
\item Dann wäre $|C'| \le 4 < k$, ein Widerspruch zu $|C'| \ge k$.
|
|
\item Somit gilt $C' \subseteq V$.
|
|
\item Da zwischen Knoten aus $V$ keine neuen Kanten hinzugekommen sind,
|
|
ist $C'$ eine $k$-Clique in $G$.
|
|
\end{itemize}
|
|
Im Fall $k \le 4$ wird $(G, k)$ direkt gelöst, und die ausgegebene triviale
|
|
Instanz hat dieselbe Antwort.
|
|
|
|
\textbf{Laufzeit:} Pro Knoten ein Gadget konstanter Größe anlegen --
|
|
$O(|V|)$. Im Fall $k \le 4$ alle Knotenmengen testen -- $O(|V|^4)$.
|
|
Also bleibt die Transformation polynomiell.
|
|
|
|
Da $k\text{-}\problem{CLIQUE-DEG-3} \in \NP$ und NP-schwer ist, folgt:
|
|
$k$-\problem{CLIQUE-DEG-3} ist NP-vollständig. \hfill$\square$
|
|
|
|
\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}.
|
|
|
|
\bspkopf{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}.
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: gerichteter Graph $G = (V,E)$, Zahl $k$ und
|
|
Zertifikat $X \subseteq V$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Falls $|X| > k$, lehne ab.
|
|
\item Prüfe per topologischer Sortierung, ob $G \setminus X$ kreisfrei ist.
|
|
\item Lehne ab, falls $G \setminus X$ einen Kreis enthält.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert ein Feedback Vertex Set $X$ mit $|X| \le k$, dann gibt es ein
|
|
Zertifikat dafür. Dieses wird vom Verifizierer akzeptiert und sonst abgelehnt.
|
|
Größenprüfung und topologische Sortierung laufen in $O(|V| + |E|)$, somit
|
|
polynomiell. Also gilt $\problem{FeedbackVertexSet} \in \NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass \problem{FeedbackVertexSet} NP-schwer ist
|
|
durch die Reduktion
|
|
$\problem{VertexCover} \redp \problem{FeedbackVertexSet}$.
|
|
\problem{VertexCover} ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{VertexCover}-Instanz.
|
|
Wir konstruieren daraus eine \problem{FeedbackVertexSet}-Instanz
|
|
$(G' = (V', E'),\, k')$ durch:
|
|
\begin{itemize}
|
|
\item $V' = V$
|
|
\item $E' = \{(u,v), (v,u) \mid \{u,v\} \in E\}$
|
|
\item $k' = k$
|
|
\end{itemize}
|
|
So wird jede ungerichtete Kante zu zwei antiparallelen Bögen.
|
|
\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 VertexCover nach FeedbackVertexSet:}
|
|
\begin{itemize}
|
|
\item Sei $C$ ein Vertex Cover von $G$ mit $|C| \le k$.
|
|
\item Somit hat jede Kante aus $G$ einen Endpunkt in $C$.
|
|
\item Also hat $G \setminus C$ keine Kanten mehr.
|
|
\item Dann hat auch $G' \setminus C$ keine Bögen und damit keine Kreise.
|
|
\item Also ist $C$ ein Feedback Vertex Set für $G'$ mit $|C| \le k'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis FeedbackVertexSet nach VertexCover:}
|
|
\begin{itemize}
|
|
\item Sei $X$ ein Feedback Vertex Set von $G'$ mit $|X| \le k'$.
|
|
\item Dann ist $G' \setminus X$ kreisfrei.
|
|
\item Angenommen, $X$ wäre kein Vertex Cover.
|
|
\item Dann gäbe es eine Kante $\{u,v\} \in E$ mit $u, v \notin X$.
|
|
\item Somit wären $u$ und $v$ noch in $G' \setminus X$ vorhanden.
|
|
\item Die Bögen $(u,v)$ und $(v,u)$ würden einen Kreis bilden.
|
|
\item Das wäre ein Widerspruch dazu, dass $G' \setminus X$ kreisfrei ist.
|
|
\item Also ist $X$ ein Vertex Cover von $G$ mit $|X| \le k$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Pro Kante zwei antiparallele Bögen anlegen -- $O(|E|)$,
|
|
also bleibt die Transformation polynomiell.
|
|
|
|
Da $\problem{FeedbackVertexSet} \in \NP$ und NP-schwer ist, folgt:
|
|
\problem{FeedbackVertexSet} ist NP-vollständig. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{$\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}.
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat
|
|
$C_\Delta \subseteq V$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Falls $|C_\Delta| > k$, lehne ab.
|
|
\item Prüfe für jedes Knotentripel $\{a,b,c\} \subseteq V$, ob es ein
|
|
Dreieck bildet, also ob $\{a,b\}, \{b,c\}, \{a,c\} \in E$ gilt.
|
|
\item Lehne ab, falls ein solches Dreieck keinen Knoten in $C_\Delta$ hat.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine Dreiecksüberdeckung $C_\Delta$ mit $|C_\Delta| \le k$, dann
|
|
gibt es ein Zertifikat dafür. Dieses wird vom Verifizierer akzeptiert und
|
|
sonst abgelehnt. Die Größenprüfung läuft in $O(|V|)$ und das Prüfen aller
|
|
Tripel in $O(|V|^3)$, somit polynomiell.
|
|
Also gilt $\Delta\text{-}\problem{Cover} \in \NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass $\Delta$-\problem{Cover} NP-schwer ist durch
|
|
die Reduktion $\problem{VertexCover} \redp \Delta\text{-}\problem{Cover}$.
|
|
\problem{VertexCover} ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G = (V,E), k)$ eine \problem{VertexCover}-Instanz.
|
|
Wir konstruieren daraus eine $\Delta$-\problem{Cover}-Instanz
|
|
$(G' = (V', E'),\, k')$ durch:
|
|
\begin{itemize}
|
|
\item Für jede Kante $e = \{u,v\} \in E$ füge einen neuen Knoten $w_e$
|
|
hinzu.
|
|
\item $V' = V \cup \{w_e \mid e \in E\}$
|
|
\item $E' = E \cup \{\{w_e, u\}, \{w_e, v\} \mid e = \{u,v\} \in E\}$
|
|
\item $k' = k$
|
|
\end{itemize}
|
|
So wird aus jeder Kante $e = \{u,v\}$ ein Dreieck $\{u, v, w_e\}$.
|
|
\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 VertexCover nach $\Delta$-Cover:}
|
|
\begin{itemize}
|
|
\item Sei $C$ ein Vertex Cover von $G$ mit $|C| \le k$.
|
|
\item Jeder neue Knoten $w_e$ hat genau die zwei Nachbarn $u$ und $v$.
|
|
\item Somit ist jedes Dreieck in $G'$ entweder ein Gadget-Dreieck
|
|
$\{u, v, w_e\}$ oder ein aus $G$ geerbtes Dreieck $\{a,b,c\}$ mit
|
|
$a, b, c \in V$ (wegen $E \subseteq E'$).
|
|
\item Falls Gadget-Dreieck $\{u, v, w_e\}$: $C$ deckt die Kante
|
|
$e = \{u,v\}$, also gilt $u \in C$ oder $v \in C$.
|
|
\item Falls geerbtes Dreieck $\{a,b,c\}$: $C$ deckt die Kante
|
|
$\{a,b\} \in E$, also liegt ein Eckknoten in $C$.
|
|
\item Somit hat jedes Dreieck in $G'$ mindestens einen Knoten in $C$.
|
|
\item Also ist $C$ eine Dreiecksüberdeckung für $G'$ mit $|C| \le k'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $\Delta$-Cover nach VertexCover:}
|
|
\begin{itemize}
|
|
\item Sei $C_\Delta$ eine Dreiecksüberdeckung von $G'$ mit
|
|
$|C_\Delta| \le k'$.
|
|
\item Falls $C_\Delta$ ein $w_e$ mit $e = \{u,v\}$ enthält, ersetze $w_e$
|
|
durch den Endpunkt $u$.
|
|
\item Das ist erlaubt, denn $w_e$ liegt in genau einem Dreieck
|
|
$\{u, v, w_e\}$, und das wird auch durch $u$ gedeckt.
|
|
\item Die Menge wird dabei nicht größer.
|
|
\item So entsteht eine Dreiecksüberdeckung $C$ von $G'$ mit
|
|
$C \subseteq V$ und $|C| \le k$.
|
|
\item Jede Kante $e = \{u,v\} \in E$ bildet mit $w_e$ das Gadget-Dreieck
|
|
$\{u, v, w_e\}$.
|
|
\item $C$ trifft dieses Dreieck.
|
|
\item Da $w_e \notin C$, gilt $u \in C$ oder $v \in C$.
|
|
\item Also ist $C$ ein Vertex Cover für $G$ mit $|C| \le k$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Pro Kante ein Knoten und zwei Kanten anlegen -- $O(|E|)$,
|
|
also bleibt die Transformation polynomiell.
|
|
|
|
Da $\Delta\text{-}\problem{Cover} \in \NP$ und NP-schwer ist, folgt:
|
|
$\Delta$-\problem{Cover} ist NP-vollständig. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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=$ ein einzelner Knoten $v$, also
|
|
$\deg(v)=0$.
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[kndick,font=\small] (lv) at (0,0) {$v$};
|
|
\node[font=\footnotesize] at (0,-1.9) {$\deg(v)=0<3$ in $G$};
|
|
\end{scope}
|
|
\draw[->,thick] (1.1,0) -- (2.3,0);
|
|
\begin{scope}[xshift=6.4cm]
|
|
\node[kndick,font=\small] (v) at (0,0) {$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)=0+4=4$; alle Gadget-Knoten haben Grad $3$};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
Gültige 3-Färbung (Farben $1,2,3$): $f(v)=1$; 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.}
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Graph $G = (V,E)$ und Zertifikat
|
|
$f: V \to \{1,2,3\}$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe für jede Kante $\{u,v\} \in E$, ob $f(u) \ne f(v)$ gilt.
|
|
\item Lehne ab, falls eine Kante gleich gefärbte Endpunkte hat.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine 3-Färbung, dann gibt es ein Zertifikat dafür. Dieses wird vom
|
|
Verifizierer akzeptiert und sonst abgelehnt. Prüfung aller Kanten --
|
|
$O(|E|)$, somit polynomiell. Also liegt die Grad-3-Variante in $\NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige die NP-Schwere durch Reduktion von \problem{3-COLOR}
|
|
auf die Grad-3-Variante. \problem{3-COLOR} ist bereits als NP-vollständig
|
|
bekannt.
|
|
|
|
\textbf{Idee:} Angehängte Gadgets heben den Grad untergradiger Knoten,
|
|
ändern aber die 3-Färbbarkeit nicht.
|
|
|
|
\textbf{Konstruktion:} Sei $G = (V,E)$ eine \problem{3-COLOR}-Instanz.
|
|
Wir konstruieren daraus einen Graphen $G'$ mit Minimalgrad 3 durch:
|
|
\begin{itemize}
|
|
\item Benutze das Diamant-Gadget $D$: Knoten $p,q,r,s$ mit den Kanten
|
|
$pq, pr, qr, qs, rs$, also $K_4$ ohne die Kante $\{p,s\}$.
|
|
\item Hänge an jeden Knoten $v$ mit $\deg(v) < 3$ \emph{zwei} eigene
|
|
Gadgets an.
|
|
\item Verbinde $v$ je Gadget über die Kanten $\{v,p\}$ und $\{v,s\}$.
|
|
\end{itemize}
|
|
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 3-COLOR nach Grad-3-Variante:}
|
|
\begin{itemize}
|
|
\item Sei $f$ eine 3-Färbung von $G$.
|
|
\item Erweitere $f$ auf jedes Gadget an $v$: Setze $p = s = c$ für eine
|
|
Farbe $c \ne f(v)$.
|
|
\item Das ist erlaubt, denn $p$ und $s$ sind nicht benachbart.
|
|
\item $q$ und $r$ sind zu $p$ und $s$ adjazent, aber $p$ und $s$ tragen
|
|
dieselbe Farbe.
|
|
\item Somit bleiben für $q$ und $r$ zwei Farben frei.
|
|
\item Färbe $q$ und $r$ mit diesen beiden Farben.
|
|
\item Also sind alle Kanten von $G'$ gültig gefärbt, und $G'$ ist 3-färbbar.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis Grad-3-Variante nach 3-COLOR:}
|
|
\begin{itemize}
|
|
\item Sei $f'$ eine 3-Färbung von $G'$.
|
|
\item Da $E \subseteq E'$, ist die Einschränkung von $f'$ auf $V$ eine
|
|
3-Färbung von $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Pro untergradigem Knoten zwei Gadgets konstanter Größe
|
|
anlegen -- $O(|V|)$, also bleibt die Transformation polynomiell.
|
|
|
|
Da die Grad-3-Variante in $\NP$ liegt und NP-schwer ist, folgt: Sie ist
|
|
NP-vollständig. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{$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.}
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Graph $G = (V,E)$, Zahl $k$, Knoten
|
|
$v_1, \dots, v_k$ und Zertifikat $f: V \to [k]$. Der Verifizierer arbeitet
|
|
wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe für jedes $i \in [k]$, ob $f(v_i) = i$ gilt.
|
|
\item Prüfe für jede Kante $\{u,v\} \in E$, ob $f(u) \ne f(v)$ gilt.
|
|
\item Lehne ab, falls eine Prüfung fehlschlägt.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine gültige Färbung mit Vorgabe, dann gibt es ein Zertifikat
|
|
dafür. Dieses wird vom Verifizierer akzeptiert und sonst abgelehnt.
|
|
Vorgaben- und Kantenprüfung laufen in $O(k + |E|)$, somit polynomiell.
|
|
Also gilt $k\text{-}\problem{COLOR-PRECOLORING} \in \NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass $k$-\problem{COLOR-PRECOLORING} NP-schwer ist
|
|
durch die Reduktion
|
|
$k\text{-}\problem{Color} \redp k\text{-}\problem{COLOR-PRECOLORING}$.
|
|
$k$-\problem{Color} ist bereits als NP-vollständig bekannt.
|
|
|
|
\textbf{Konstruktion:} Sei $(G, k)$ eine $k$-\problem{Color}-Instanz.
|
|
Wir konstruieren daraus eine $k$-\problem{COLOR-PRECOLORING}-Instanz durch:
|
|
\begin{itemize}
|
|
\item Füge $k$ neue Knoten $v_1, \dots, v_k$ hinzu.
|
|
\item Verbinde die $v_i$ untereinander vollständig zum $K_k$.
|
|
\item Kanten zwischen $K_k$ und $G$ gibt es nicht.
|
|
\item Gib $(G' = G \mathbin{\dot\cup} K_k,\ k,\ v_1, \dots, v_k)$ aus.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $k$-Color nach $k$-COLOR-PRECOLORING:}
|
|
\begin{itemize}
|
|
\item Sei $f$ eine $k$-Färbung von $G$.
|
|
\item Erweitere $f$ durch $f(v_i) = i$ für alle $i \in [k]$.
|
|
\item Die $v_i$ sind nur untereinander verbunden und paarweise verschieden
|
|
gefärbt.
|
|
\item Somit ist $f$ eine gültige Färbung von $G'$ und erfüllt die Vorgabe.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $k$-COLOR-PRECOLORING nach $k$-Color:}
|
|
\begin{itemize}
|
|
\item Sei $f$ eine gültige Färbung von $G'$ mit $f(v_i) = i$.
|
|
\item Da alle $G$-Kanten in $G'$ liegen, ist die Einschränkung von $f$ auf
|
|
$V$ eine $k$-Färbung von $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Die neue Clique $K_k$ anlegen -- $O(k^2)$, also bleibt die
|
|
Transformation polynomiell.
|
|
|
|
Da $k\text{-}\problem{COLOR-PRECOLORING} \in \NP$ und NP-schwer ist, folgt:
|
|
$k$-\problem{COLOR-PRECOLORING} ist NP-vollständig. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{HamiltonianPath $\redp$ HamiltonianCycle}{Klausur SS23-N, A5b, 5 P.}
|
|
\textbf{Problem \problem{HamiltonianPath}:} Gegeben ein ungerichteter Graph
|
|
$G = (V,E)$. \textbf{Entscheide:} Existiert ein Pfad in $G$, der jeden
|
|
Knoten genau einmal besucht?
|
|
|
|
\textbf{Problem \problem{HamiltonianCycle}:} Gegeben ein ungerichteter Graph
|
|
$G = (V,E)$. \textbf{Entscheide:} Existiert ein Kreis in $G$, der jeden
|
|
Knoten genau einmal besucht?
|
|
|
|
Geben Sie eine polynomielle Reduktion von \problem{HamiltonianPath} auf
|
|
\problem{HamiltonianCycle} an.
|
|
|
|
\bspkopf{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.}
|
|
|
|
|
|
\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 HamiltonianPath nach HamiltonianCycle:}
|
|
\begin{itemize}
|
|
\item Sei $v_1, \dots, v_n$ ein Hamiltonpfad in $G$.
|
|
\item Da $u$ universell ist, existieren die Kanten $\{v_n, u\}$ und
|
|
$\{u, v_1\}$.
|
|
\item Also ist $v_1, \dots, v_n, u, v_1$ ein Hamiltonkreis in $G'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis HamiltonianCycle nach HamiltonianPath:}
|
|
\begin{itemize}
|
|
\item Sei $C$ ein Hamiltonkreis in $G'$.
|
|
\item $C$ besucht $u$ genau einmal, zwischen zwei Nachbarn $v_i, v_j \in V$.
|
|
\item Entferne $u$ aus dem Kreis.
|
|
\item Dann bleibt ein Pfad von $v_i$ nach $v_j$, der alle Knoten aus $V$
|
|
genau einmal besucht.
|
|
\item Dieser Pfad benutzt nur Kanten aus $E$, denn neu sind nur die Kanten
|
|
an $u$.
|
|
\item Also ist er ein Hamiltonpfad in $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Einen Knoten und $|V|$ neue Kanten anlegen -- $O(|V|)$,
|
|
polynomiell. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{HamiltonianCycle $\redp$ HamiltonianPath}{Klausur SS23-N, A5c, 6 P.}
|
|
\textbf{Problem \problem{HamiltonianCycle}:} Gegeben ein ungerichteter Graph
|
|
$G = (V,E)$. \textbf{Entscheide:} Existiert ein Kreis in $G$, der jeden
|
|
Knoten genau einmal besucht?
|
|
|
|
\textbf{Problem \problem{HamiltonianPath}:} Gegeben ein ungerichteter Graph
|
|
$G = (V,E)$. \textbf{Entscheide:} Existiert ein Pfad in $G$, der jeden
|
|
Knoten genau einmal besucht?
|
|
|
|
Geben Sie eine polynomielle Reduktion von \problem{HamiltonianCycle} auf
|
|
\problem{HamiltonianPath} an.
|
|
|
|
\bspkopf{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.}
|
|
|
|
|
|
\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$. Wir konstruieren $G'$ durch:
|
|
\begin{itemize}
|
|
\item Füge einen Zwilling $v^*$ mit denselben Nachbarn wie $v$ hinzu.
|
|
\item Füge einen Knoten $s$ mit der einzigen Kante $\{s, v\}$ hinzu.
|
|
\item Füge einen Knoten $t$ mit der einzigen Kante $\{t, v^*\}$ hinzu.
|
|
\end{itemize}
|
|
\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 HamiltonianCycle nach HamiltonianPath:}
|
|
\begin{itemize}
|
|
\item Sei $v, w_1, \dots, w_{n-1}, v$ ein Hamiltonkreis in $G$.
|
|
\item Da $v^*$ dieselben Nachbarn wie $v$ hat, existiert die Kante
|
|
$\{w_{n-1}, v^*\}$.
|
|
\item Also ist $s, v, w_1, \dots, w_{n-1}, v^*, t$ ein Hamiltonpfad in $G'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis HamiltonianPath nach HamiltonianCycle:}
|
|
\begin{itemize}
|
|
\item Sei $P$ ein Hamiltonpfad in $G'$.
|
|
\item Die Knoten $s$ und $t$ haben Grad 1, also sind sie die beiden
|
|
Endpunkte von $P$.
|
|
\item Da $s$ nur mit $v$ und $t$ nur mit $v^*$ verbunden ist, hat $P$ die
|
|
Form $s, v, x_1, \dots, x_{n-1}, v^*, t$.
|
|
\item Dabei sind $x_1, \dots, x_{n-1}$ alle Knoten aus $V \setminus \{v\}$.
|
|
\item Da $\{x_{n-1}, v^*\} \in E'$ und $v^*$ dieselben Nachbarn wie $v$
|
|
hat, ist $x_{n-1}$ auch ein Nachbar von $v$.
|
|
\item Ersetze $v^*$ durch $v$: Aus dem Mittelstück wird der Kreis
|
|
$v, x_1, \dots, x_{n-1}, v$.
|
|
\item Dieser Kreis besucht jeden Knoten von $G$ genau einmal und benutzt
|
|
nur Kanten aus $E$.
|
|
\item Also ist er ein Hamiltonkreis in $G$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Zwilling $v^*$ mit den bis zu $|V|$ Nachbarn von $v$
|
|
anlegen, dazu die zwei Pendants $s, t$ -- $O(|V|)$, polynomiell. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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.}
|
|
|
|
|
|
\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 \problem{HamiltonianCycle} nach
|
|
\problem{Hitchhiker's-HamiltonianCycle}:}
|
|
\begin{itemize}
|
|
\item Sei $v^{(1)}, \dots, v^{(n)}, v^{(1)}$ ein Hamiltonkreis in $G$.
|
|
\item Durchlaufe die Clique jedes besuchten Knotens $v^{(j)}$ auf dem
|
|
Hamiltonpfad $v^{(j)}_1 \to \dots \to v^{(j)}_{43}$.
|
|
\item Denn in einer Clique existiert dieser Pfad immer.
|
|
\item Wechsle danach über die Portalkante $\{v^{(j)}_{43},\, v^{(j+1)}_1\}$
|
|
zur nächsten Clique.
|
|
\item Diese Portalkante existiert, denn $\{v^{(j)}, v^{(j+1)}\}$ ist eine
|
|
Kante in $G$.
|
|
\item Der letzte Wechsel führt über $\{v^{(n)}_{43},\, v^{(1)}_1\}$ zurück
|
|
zum Start.
|
|
\item Somit wird jeder Knoten von $G'$ genau einmal besucht.
|
|
\item Also ist das ein Hamiltonkreis in $G'$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis \problem{Hitchhiker's-HamiltonianCycle} nach
|
|
\problem{HamiltonianCycle}:}
|
|
\begin{itemize}
|
|
\item Sei $C'$ ein Hamiltonkreis in $G'$.
|
|
\item Dann besucht $C'$ in jeder Knoten-Clique alle 43 Knoten.
|
|
\item Die inneren Clique-Knoten haben nur Nachbarn in der eigenen Clique.
|
|
\item Kanten nach außen gibt es nur an den beiden Portalen $v_1$ und $v_{43}$.
|
|
\item Somit durchläuft $C'$ jede Clique als \emph{ein} Segment von Portal zu
|
|
Portal.
|
|
\item Ziehe nun jede Clique zu ihrem Originalknoten zusammen.
|
|
\item Dann wird aus $C'$ ein Kreis in $G$, der jeden Knoten genau einmal
|
|
besucht.
|
|
\item Denn jede benutzte Portalkante stammt von einer Originalkante
|
|
$\{u,v\} \in E$.
|
|
\item Also ist das ein Hamiltonkreis in $G$.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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}.
|
|
|
|
|
|
\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 \problem{SubsetSum} nach \problem{SubsetSumCardinality}:}
|
|
\begin{itemize}
|
|
\item Sei $S \subseteq [n]$ eine Lösung mit $\sum_{i\in S} c_i = K$.
|
|
\item Dann gilt $\sum_{i\in S} c_i' = K + |S|$, denn jedes gewählte Item
|
|
wurde um 1 geshiftet.
|
|
\item Setze $S' := S \cup \{n+1, \dots, 2n - |S|\}$, fülle also mit
|
|
$n - |S|$ Padding-Items auf.
|
|
\item Dann gilt $|S'| = n$.
|
|
\item Da jedes Padding-Item genau 1 beiträgt, folgt
|
|
\[
|
|
\sum_{i \in S'} c_i' = K + |S| + (n - |S|) = K + n.
|
|
\]
|
|
\item Also ist $S'$ eine Lösung der konstruierten Instanz.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis \problem{SubsetSumCardinality} nach \problem{SubsetSum}:}
|
|
\begin{itemize}
|
|
\item Sei $S'$ eine Lösung mit $|S'| = n$ und $\sum_{i\in S'} c_i' = K + n$.
|
|
\item Setze $S := S' \cap \{1,\dots,n\}$.
|
|
\item Dann enthält $S'$ genau $n - |S|$ Padding-Items.
|
|
\item Da jedes Padding-Item genau 1 beiträgt, folgt
|
|
\[
|
|
\sum_{i\in S} (c_i + 1) = (K + n) - (n - |S|) = K + |S|.
|
|
\]
|
|
\item Somit gilt $\sum_{i\in S} c_i = K$.
|
|
\item Also ist $S$ eine Lösung der \problem{SubsetSum}-Instanz.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{$(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$. Ohne $a_1$
|
|
ergibt sich aus $\{4,6,10\}$ nie $8$
|
|
($4,\,6,\,10,\;4{+}6{=}10,\;4{+}10{=}14,\;6{+}10{=}16,\;20$). Mit $a_1=1$ wird
|
|
jede Summe ungerade ($1,\;5,\;7,\;11,\;11,\;15,\;17,\;21$), denn alle übrigen
|
|
Items sind gerade -- die gerade Zielsumme $T=8$ ist so unerreichbar.
|
|
\textbf{Nein.}
|
|
|
|
|
|
\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 \problem{SubsetSum} nach $(a_1{=}1)$-\problem{SubsetSum}:}
|
|
\begin{itemize}
|
|
\item Sei $S$ eine Lösung mit $\sum_{i\in S} c_i = K$.
|
|
\item Setze $I := \{i+1 \mid i \in S\}$.
|
|
\item Dann gilt
|
|
\[
|
|
\sum_{j \in I} a_j \;=\; \sum_{i \in S} 2c_i \;=\; 2K \;=\; T.
|
|
\]
|
|
\item Also ist $I$ eine Lösung der konstruierten Instanz.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $(a_1{=}1)$-\problem{SubsetSum} nach \problem{SubsetSum}:}
|
|
\begin{itemize}
|
|
\item Sei $I$ eine Lösung mit $\sum_{i\in I} a_i = T = 2K$.
|
|
\item Alle Items außer $a_1$ sind gerade.
|
|
\item Die Zielsumme $T = 2K$ ist ebenfalls gerade.
|
|
\item Angenommen, $I$ enthielte das Item $a_1 = 1$.
|
|
\item Dann wäre die Summe $\sum_{i\in I} a_i$ ungerade, denn $a_1$ ist das
|
|
einzige ungerade Item.
|
|
\item Das wäre ein Widerspruch zur geraden Zielsumme $T$.
|
|
\item Somit gilt $1 \notin I$.
|
|
\item Setze $S := \{i-1 \mid i \in I\}$.
|
|
\item Dann gilt $\sum_{i\in S} 2c_i = 2K$, also $\sum_{i\in S} c_i = K$.
|
|
\item Also ist $S$ eine Lösung der \problem{SubsetSum}-Instanz.
|
|
\end{itemize}
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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 wählen verschiedene Potenzen von $4$, also sind
|
|
$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.}
|
|
|
|
|
|
\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).
|
|
|
|
Jede Größe $c_j$ ist eine Summe von drei verschiedenen Potenzen von $n+1$.
|
|
Eine solche Summe legt ihre Summanden eindeutig fest. Verschiedene Mengen
|
|
wählen verschiedene Potenzen und ergeben damit paarweise verschiedene Größen
|
|
$c_j$. Somit tritt jede Größe genau einmal auf, und die Zusatzbedingung ist
|
|
erfüllt.
|
|
\textbf{Beweis \problem{3-ExactCover} nach
|
|
\problem{AtMostTwoPerSize-SubsetSum}:}
|
|
\begin{itemize}
|
|
\item Sei $\mathcal{S}$ eine exakte Überdeckung.
|
|
\item Dann wird jedes Element $u_i$ von genau einer Menge in $\mathcal{S}$
|
|
überdeckt.
|
|
\item Somit kommt in der Summe $\sum_{S_j \in \mathcal{S}} c_j$ jede Potenz
|
|
$(n+1)^{i-1}$ genau einmal vor.
|
|
\item Also gilt
|
|
\[
|
|
\sum_{S_j \in \mathcal{S}} c_j \;=\; \sum_{j=0}^{3m-1} (n+1)^j \;=\; K.
|
|
\]
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis \problem{AtMostTwoPerSize-SubsetSum} nach
|
|
\problem{3-ExactCover}:}
|
|
\begin{itemize}
|
|
\item Sei $S$ eine Auswahl mit $\sum_{j\in S} c_j = K$.
|
|
\item An jeder Ziffernstelle addieren sich höchstens $n$ Einsen, denn es
|
|
gibt nur $n$ Mengen.
|
|
\item Da die Basis $n+1$ ist, entsteht beim Addieren kein Übertrag.
|
|
\item In $K$ hat jede der $3m$ Ziffernstellen den Wert 1.
|
|
\item Somit trägt zu jeder Ziffernstelle genau eine gewählte Menge bei.
|
|
\item Also überdecken die gewählten Mengen jedes Element genau einmal.
|
|
\item Damit ist die Auswahl eine exakte Überdeckung.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Duplikate durch paarweisen Vergleich der $n$ Mengen
|
|
entfernen -- $O(n^2)$ Vergleiche. Pro Menge drei Potenzen von $n+1$ addieren
|
|
und $K$ aus $3m$ Potenzen aufsummieren -- $O(n+m)$ Additionen polynomiell
|
|
langer Zahlen. Also bleibt die Transformation polynomiell.
|
|
|
|
Da \problem{3-ExactCover} NP-schwer ist, ist
|
|
\problem{AtMostTwoPerSize-SubsetSum} NP-schwer. \hfill$\square$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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.}
|
|
|
|
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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.}
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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.} Knoten $1$ hat Grad $1$, also gibt es keinen 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}
|
|
Solid $=1$, gestrichelt $=\alpha n+1=9$. Der Gütetest trennt Ja ($\le8$) von
|
|
Nein ($>8$) und würde HK in Polynomialzeit lösen.
|
|
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{HALT$_{\text{TM}}$ NP-schwer}
|
|
\textbf{Reduktion.} \problem{SAT} $\redp \mathrm{HALT}_{\mathrm{TM}}$: zu einer Formel
|
|
$\varphi$ entsteht das Paar $\langle M, \langle\varphi\rangle\rangle$. Die
|
|
feste DTM $M$ probiert auf Eingabe $\langle\varphi\rangle$ nacheinander alle
|
|
Belegungen von $\varphi$, hält, sobald eine erfüllende gefunden ist, und geht
|
|
sonst in eine Endlosschleife.
|
|
|
|
\medskip
|
|
\textbf{Ja-Instanz.} $\varphi=(x_1\vee x_2)\wedge(\neg x_1)$ ist erfüllbar.
|
|
$M$ probiert zuerst $x_1x_2=00$: die erste Klausel wird $(0\vee 0)=\false$.
|
|
Als Nächstes probiert $M$ die Belegung $x_1x_2=01$: es gilt
|
|
$(0\vee 1)=\true$ und $(\neg 0)=\true$ -- beide Klauseln sind wahr, also hält
|
|
$M$ hier. Damit $\langle M,\langle\varphi\rangle\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$
|
|
findet keine erfüllende Belegung, geht in die Endlosschleife und hält nie.
|
|
Also $\langle M,\langle\varphi\rangle\rangle\notin\mathrm{HALT}_{\mathrm{TM}}$:
|
|
die Bildinstanz bleibt \textbf{Nein}.
|
|
|
|
|
|
\lsg
|
|
Zeige, dass $\mathrm{HALT}_{\mathrm{TM}}$ NP-schwer ist durch die Reduktion:
|
|
$\problem{SAT} \redp \mathrm{HALT}_{\mathrm{TM}}$. \problem{SAT} ist bereits
|
|
als NP-vollständig bekannt, also insbesondere NP-schwer.
|
|
|
|
\textbf{Konstruktion:} Sei $\varphi$ eine \problem{SAT}-Instanz mit den
|
|
Variablen $x_1, \dots, x_n$. Wir konstruieren daraus die
|
|
$\mathrm{HALT}_{\mathrm{TM}}$-Instanz $\langle M, w \rangle$:
|
|
\begin{itemize}
|
|
\item $w = \langle \varphi \rangle$, also die Kodierung der Formel $\varphi$.
|
|
\item $M$ ist eine feste DTM, die auf Eingabe $\langle \varphi \rangle$ wie
|
|
folgt arbeitet:
|
|
\begin{enumerate}
|
|
\item Lese $\varphi$ und probiere nacheinander alle $2^n$ Belegungen $\beta$
|
|
der Variablen $x_1, \dots, x_n$.
|
|
\item Falls eine Belegung $\beta$ die Formel $\varphi$ erfüllt, halte.
|
|
\item Falls alle $2^n$ Belegungen geprüft wurden und keine $\varphi$ erfüllt,
|
|
gehe in eine Endlosschleife.
|
|
\end{enumerate}
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis \problem{SAT} nach $\mathrm{HALT}_{\mathrm{TM}}$:}
|
|
\begin{itemize}
|
|
\item Sei $\varphi \in \problem{SAT}$.
|
|
\item Dann existiert eine erfüllende Belegung $\beta$.
|
|
\item $M$ probiert alle Belegungen und findet $\beta$, also hält $M$ auf $w$.
|
|
\item Damit gilt $\langle M, w \rangle \in \mathrm{HALT}_{\mathrm{TM}}$.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis $\mathrm{HALT}_{\mathrm{TM}}$ nach \problem{SAT}:}
|
|
\begin{itemize}
|
|
\item Sei $\langle M, w \rangle \in \mathrm{HALT}_{\mathrm{TM}}$, also hält
|
|
$M$ auf $w$.
|
|
\item $M$ hält nur, wenn es eine erfüllende Belegung $\beta$ findet.
|
|
\item Denn ohne erfüllende Belegung geht $M$ in die Endlosschleife.
|
|
\item Also existiert eine erfüllende Belegung für $\varphi$.
|
|
\item Damit gilt $\varphi \in \problem{SAT}$.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Es wird nur $\varphi$ kodiert und die feste Maschine $M$
|
|
ausgegeben -- $O(|\varphi|)$, also bleibt die Transformation polynomiell. Ob
|
|
$M$ auf $w$ hält, spielt für die Laufzeit der Reduktion keine Rolle.
|
|
|
|
Da \problem{SAT} NP-schwer ist und $\problem{SAT} \redp
|
|
\mathrm{HALT}_{\mathrm{TM}}$ gilt, ist $\mathrm{HALT}_{\mathrm{TM}}$ NP-schwer.
|
|
\hfill$\square$
|
|
|
|
\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).
|
|
|
|
\bspkopf{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$.
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}]
|
|
\node[kndick] (g1) at (0,2.0) {1};
|
|
\node[kndick] (g2) at (-1.1,1.0) {2};
|
|
\node[kndick] (g3) at (1.1,1.0) {3};
|
|
\node[knoten] (g4) at (-0.7,-0.2) {4};
|
|
\node[knoten] (g5) at (0.7,-0.2) {5};
|
|
\draw (g1) -- (g2); \draw (g1) -- (g3); \draw (g2) -- (g3);
|
|
\draw (g2) -- (g4); \draw (g3) -- (g5); \draw (g4) -- (g5);
|
|
\node[plab] at (0,-1.2) {$G$: Clique $\{1,2,3\}$ (grau)};
|
|
\draw[->] (2.2,0.9) -- node[above,plab] {Komplement} (3.9,0.9);
|
|
\node[knoten] (h2) at (4.7,0.9) {2};
|
|
\node[kndick] (h5) at (5.9,0.9) {5};
|
|
\node[knoten] (h1) at (7.1,0.9) {1};
|
|
\node[kndick] (h4) at (8.3,0.9) {4};
|
|
\node[knoten] (h3) at (9.5,0.9) {3};
|
|
\draw (h2) -- (h5); \draw (h5) -- (h1); \draw (h1) -- (h4); \draw (h4) -- (h3);
|
|
\node[plab] at (7.1,-1.2) {$\bar G$: VertexCover $\{4,5\}$ (grau)};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\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}.
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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$ \\
|
|
(2) $k\text{-}\problem{Clique}\redp k\text{-}\problem{IS}$ & $|V'|=|V|,\ k'=k$ (Komplementgraph) & $|V'|=12,\ 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)}$.
|
|
Schritt~(2) überträgt die $k$-Schranke auf $k$-\problem{IS}: Komplementieren
|
|
ist polynomiell und $k$ bleibt gleich -- kein $2^{o(k)}$-Löser für
|
|
$k$-\problem{IS}.
|
|
|
|
|
|
\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}
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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.
|
|
\]
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}[plab/.style={font=\scriptsize,align=center}]
|
|
\node[kndick] (v1) at (0.7,5.0) {$v_1$};
|
|
\node[kndick] (v2) at (3.7,5.0) {$v_2$};
|
|
\node[kndick] (v3) at (6.7,5.0) {$v_3$};
|
|
\draw (v1) -- (v2); \draw (v2) -- (v3);
|
|
\draw (v1) to[bend left=20] (v3);
|
|
\node[knoten] (x1) at (0.0,2.6) {$x_1$};
|
|
\node[knoten] (nx1) at (1.4,2.6) {$\bar x_1$};
|
|
\node[knoten] (x2) at (3.0,2.6) {$x_2$};
|
|
\node[knoten] (nx2) at (4.4,2.6) {$\bar x_2$};
|
|
\node[knoten] (x3) at (6.0,2.6) {$x_3$};
|
|
\node[knoten] (nx3) at (7.4,2.6) {$\bar x_3$};
|
|
\draw (x1) -- (nx1); \draw (x2) -- (nx2); \draw (x3) -- (nx3);
|
|
\foreach \t in {x2,nx2,x3,nx3} \draw[black!45] (v1) -- (\t);
|
|
\foreach \t in {x1,nx1,x3,nx3} \draw[black!45] (v2) -- (\t);
|
|
\foreach \t in {x1,nx1,x2,nx2} \draw[black!45] (v3) -- (\t);
|
|
\node[knoten] (c1) at (2.2,0.2) {$C_1$};
|
|
\node[knoten] (c2) at (5.2,0.2) {$C_2$};
|
|
\draw[black!45] (c1) -- (x1); \draw[black!45] (c1) -- (nx2);
|
|
\draw[black!45] (c1) -- (x3);
|
|
\draw[black!45] (c2) -- (nx1); \draw[black!45] (c2) -- (x2);
|
|
\draw[black!45] (c2) -- (nx3);
|
|
\node[knoten] (z) at (9.0,6.3) {$z$};
|
|
\foreach \t in {v1,v2,v3,c1,c2} \draw[dashed,black!45] (z) -- (\t);
|
|
\node[plab] at (3.8,-0.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}
|
|
|
|
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}.
|
|
|
|
|
|
\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)
|
|
{$|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$
|
|
|
|
\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$?
|
|
|
|
\bspkopf{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)}.
|
|
\]
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}[plab/.style={font=\scriptsize,align=center},
|
|
kjob/.style={draw,rectangle,minimum width=9mm,minimum height=6mm}]
|
|
\node[knoten] (u1) at (0,1.5) {$1$};
|
|
\node[knoten] (u2) at (1.2,0.4) {$2$};
|
|
\node[knoten] (u3) at (0,-0.7) {$3$};
|
|
\draw (u1) -- (u2); \draw (u2) -- (u3); \draw (u1) -- (u3);
|
|
\node[plab] at (0.5,-1.5) {$K_3$};
|
|
\draw[->] (1.9,0.4) -- node[above,plab] {Reduktion} (3.1,0.4);
|
|
\node[knoten] (j1) at (4.6,1.5) {$J_1$};
|
|
\node[knoten] (j2) at (6.8,1.5) {$J_2$};
|
|
\node[knoten] (j3) at (9.0,1.5) {$J_3$};
|
|
\node[kjob] (j13) at (3.5,-0.7) {$J_{\{1,3\}}$};
|
|
\node[kjob] (j12) at (5.7,-0.7) {$J_{\{1,2\}}$};
|
|
\node[kjob] (j23) at (7.9,-0.7) {$J_{\{2,3\}}$};
|
|
\draw[->] (j1) -- (j12); \draw[->] (j2) -- (j12);
|
|
\draw[->] (j2) -- (j23); \draw[->] (j3) -- (j23);
|
|
\draw[->] (j1) -- (j13); \draw[->] (j3) -- (j13);
|
|
\node[plab,anchor=west] at (10.2,0.9)
|
|
{$\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$)};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
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|})$.
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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|})}$.
|
|
|
|
|
|
\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$
|
|
|
|
\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}|$?
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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$.
|
|
|
|
|
|
\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$
|
|
|
|
\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$?
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\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$
|
|
|
|
\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$.
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\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$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{Lower Bounds: NAE-4-SAT und SetSplitting}{Klausur SS25-H, A4, 1+4+1+4 P.}
|
|
\textbf{\problem{NAE-4-SAT}.}
|
|
\textbf{Gegeben:} $n$ Variablen $x_1, \dots, x_n$ und $m$ Klauseln
|
|
$C_1, \dots, C_m$ mit $|C_i| \le 4$.
|
|
\textbf{Entscheide:} Gibt es eine Belegung, unter der jede Klausel zwei
|
|
\emph{verschieden} belegte Literale enthält?
|
|
|
|
Reduktion von \problem{3-SAT}: Die Variablen sind $x_1, \dots, x_n$ und eine
|
|
frische Variable $w$. Jede Klausel $C_i$ wird zu $C_i \cup \{w\}$.
|
|
\begin{enumerate}
|
|
\item[a)] Geben Sie die Anzahl der Variablen und die Anzahl der Klauseln der
|
|
NAE-4-SAT-Instanz in Abhängigkeit von der 3-SAT-Instanz an.
|
|
\item[b)] Beweisen Sie Lower Bounds für \problem{NAE-4-SAT} bezüglich der
|
|
Anzahl der Variablen und der Anzahl der Klauseln basierend auf der ETH und
|
|
der oben beschriebenen Reduktion.
|
|
\end{enumerate}
|
|
|
|
\textbf{\problem{SetSplitting}.}
|
|
\textbf{Gegeben:} Eine Grundmenge $S$ und Teilmengen
|
|
$F_1, \dots, F_r \subseteq S$.
|
|
\textbf{Entscheide:} Gibt es eine Partition $S = S_1 \mathbin{\dot\cup} S_2$,
|
|
sodass jede Teilmenge $F_i$ sowohl $S_1$ als auch $S_2$ schneidet?
|
|
|
|
Reduktion von \problem{NAE-4-SAT}: Grundmenge
|
|
$S = \{x_i, \bar x_i \mid i \in [n]\}$; als Teilmengen pro Variable das Paar
|
|
$\{x_i, \bar x_i\}$ und pro Klausel die Menge $C_i$.
|
|
\begin{enumerate}
|
|
\item[c)] Geben Sie die Größe der Grundmenge $S$ und die Anzahl der
|
|
Teilmengen $r$ der SetSplitting-Instanz in Abhängigkeit von der
|
|
NAE-4-SAT-Instanz an.
|
|
\item[d)] Beweisen Sie Lower Bounds für \problem{SetSplitting} bezüglich der
|
|
Größe der Grundmenge und der Anzahl der Teilmengen basierend auf der ETH und
|
|
der oben beschriebenen Reduktion.
|
|
\end{enumerate}
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} Variablen $n' = n + 1$, Klauseln $m' = m$.
|
|
|
|
\textbf{b)} Zu zeigen ist, dass \problem{NAE-4-SAT} unter der ETH weder in
|
|
$2^{o(n')} \cdot |I|^{O(1)}$ noch in $2^{o(m')} \cdot |I|^{O(1)}$ lösbar ist.
|
|
|
|
\textbf{Bzgl.\ $n'$:}
|
|
\begin{itemize}
|
|
\item Angenommen, \problem{NAE-4-SAT} wäre in $2^{o(n')} \cdot |I|^{O(1)}$
|
|
lösbar.
|
|
\item Wegen $n' = n + 1$ ergäben Reduktion und Algorithmus einen
|
|
$2^{o(n)}$-Algorithmus für \problem{3-SAT}.
|
|
\item Das ist ein direkter Widerspruch zur ETH.
|
|
\end{itemize}
|
|
|
|
\textbf{Bzgl.\ $m'$:}
|
|
\begin{itemize}
|
|
\item Angenommen, \problem{NAE-4-SAT} wäre in $2^{o(m')} \cdot |I|^{O(1)}$
|
|
lösbar.
|
|
\item Wegen $m' = m$ ergäbe sich ein $2^{o(m)}$-Algorithmus für
|
|
\problem{3-SAT}.
|
|
\item Nach dem Sparsification-Lemma ist das ein Widerspruch zur ETH.
|
|
\end{itemize}
|
|
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=6pt]
|
|
(0.55,1.28) -- (2.35,1.28) -- (2.35,0.6) -- (3.05,0.6) -- (3.05,1.28)
|
|
-- (7.75,1.28) -- (7.75,0.45) -- (3.05,0.45) -- (3.05,-1.25)
|
|
-- (2.35,-1.25) -- (2.35,0.45) -- (0.55,0.45) -- cycle;
|
|
\node[plab] at (5.6,-2.0) {$C_1' = \{x_1,x_2,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)} Zu zeigen ist, dass \problem{SetSplitting} unter der ETH weder
|
|
in $2^{o(|S|)} \cdot |I|^{O(1)}$ noch in $2^{o(r)} \cdot |I|^{O(1)}$ lösbar
|
|
ist.
|
|
|
|
\textbf{Bzgl.\ $|S|$:}
|
|
\begin{itemize}
|
|
\item Angenommen, \problem{SetSplitting} wäre in
|
|
$2^{o(|S|)} \cdot |I|^{O(1)}$ lösbar.
|
|
\item Wegen $|S| = 2n'$ ergäbe sich ein $2^{o(n')}$-Algorithmus für
|
|
\problem{NAE-4-SAT}.
|
|
\item Wegen $n' = n + 1$ ergäbe sich daraus ein $2^{o(n)}$-Algorithmus für
|
|
\problem{3-SAT}.
|
|
\item Das ist ein direkter Widerspruch zur ETH.
|
|
\end{itemize}
|
|
|
|
\textbf{Bzgl.\ $r$:}
|
|
\begin{itemize}
|
|
\item Angenommen, \problem{SetSplitting} wäre in $2^{o(r)} \cdot |I|^{O(1)}$
|
|
lösbar.
|
|
\item Jede NAE-Klausel hat höchstens 4 Literale, also
|
|
$n' \le 4m' + 1 = O(m')$.
|
|
\item Damit ist $r = n' + m' = O(m')$.
|
|
\item Es ergäbe sich ein $2^{o(m')}$-Algorithmus für \problem{NAE-4-SAT}.
|
|
\item Wegen $m' = m$ ergäbe sich daraus ein $2^{o(m)}$-Algorithmus für
|
|
\problem{3-SAT}.
|
|
\item Nach dem Sparsification-Lemma ist das ein Widerspruch zur ETH.
|
|
\end{itemize}
|
|
Bounds: kein $2^{o(|S|)}$, kein $2^{o(r)}$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{Lower Bounds: CoverClique und $\Delta$Cover}{Klausur SS25-N, A4, 1+4+1+4 P.}
|
|
\textbf{\problem{CoverClique}.}
|
|
\textbf{Gegeben:} Ein ungerichteter Graph $G = (V, E)$ und eine Zahl
|
|
$k \in \mathbb{N}_{\ge 1}$.
|
|
\textbf{Entscheide:} Existieren $k$ paarweise disjunkte Cliquen
|
|
$C_1, \dots, C_k \subseteq V$, die alle Knoten überdecken?
|
|
|
|
Reduktion von $k$-\problem{Color}: Aus $(G, k)$ wird $(G' = (V, \bar E), k)$
|
|
mit dem Komplementgraphen, also
|
|
$\bar E = \{\{v, u\} \mid v \ne u,\ \{v, u\} \notin E\}$.
|
|
\begin{enumerate}
|
|
\item[a)] Geben Sie die Anzahl der Knoten und die Anzahl der Kanten der
|
|
CoverClique-Instanz in Abhängigkeit von der $k$-Color-Instanz an.
|
|
\item[b)] Beweisen Sie Laufzeit-Lower-Bounds für \problem{CoverClique}
|
|
bezüglich der Anzahl der Knoten und der Anzahl der Kanten basierend auf der
|
|
ETH und der oben beschriebenen Reduktion.
|
|
\end{enumerate}
|
|
\emph{Hinweis:} $k$-\problem{Color} ist unter der ETH nicht in
|
|
$2^{o(|V|)} \cdot |I|^{O(1)}$ lösbar.
|
|
|
|
\textbf{$\Delta$\problem{Cover}.}
|
|
\textbf{Gegeben:} Ein ungerichteter Graph $G = (V, E)$ und eine Zahl
|
|
$k \in \mathbb{N}_0$.
|
|
\textbf{Entscheide:} Gibt es eine Dreiecksüberdeckung $C_\Delta \subseteq V$
|
|
mit $|C_\Delta| \le k$, also eine Knotenmenge, die jedes Dreieck in $G$
|
|
trifft?
|
|
|
|
Reduktion von \problem{VertexCover} (aus der Übung):
|
|
$V' = V \cup \{v_e \mid e \in E\}$ und
|
|
$E' = E \cup \{\{v_e, e_1\}, \{v_e, e_2\} \mid e = \{e_1, e_2\} \in E\}$.
|
|
\begin{enumerate}
|
|
\item[c)] Geben Sie die Anzahl der Knoten und die Anzahl der Kanten der
|
|
$\Delta$Cover-Instanz in Abhängigkeit von der VertexCover-Instanz an.
|
|
\item[d)] Beweisen Sie Laufzeit-Lower-Bounds für $\Delta$\problem{Cover}
|
|
bezüglich der Anzahl der Knoten und der Anzahl der Kanten basierend auf der
|
|
ETH und der oben beschriebenen Reduktion.
|
|
\end{enumerate}
|
|
|
|
\bspkopf{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'|})}$.
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} $|V'| = |V|$,\quad
|
|
$|\bar E| = \tfrac12 |V|(|V|-1) - |E| \le |V|^2$.
|
|
|
|
\textbf{b)} Zu zeigen ist, dass \problem{CoverClique} unter der ETH weder
|
|
in $2^{o(|V'|)} \cdot |I|^{O(1)}$ noch in
|
|
$2^{o(\sqrt{|\bar E|})} \cdot |I|^{O(1)}$ lösbar ist.
|
|
|
|
\textbf{Bzgl.\ $|V'|$:}
|
|
\begin{itemize}
|
|
\item Angenommen, \problem{CoverClique} wäre in
|
|
$2^{o(|V'|)} \cdot |I|^{O(1)}$ lösbar.
|
|
\item Wegen $|V'| = |V|$ ergäbe sich ein $2^{o(|V|)}$-Algorithmus für
|
|
$k$-\problem{Color}.
|
|
\item Den gibt es unter der ETH nicht -- Widerspruch.
|
|
\end{itemize}
|
|
|
|
\textbf{Bzgl.\ $|\bar E|$:}
|
|
\begin{itemize}
|
|
\item Angenommen, \problem{CoverClique} wäre in
|
|
$2^{o(\sqrt{|\bar E|})} \cdot |I|^{O(1)}$ lösbar.
|
|
\item Wegen $|\bar E| \le |V|^2$ ist $\sqrt{|\bar E|} = O(|V|)$.
|
|
\item Es ergäbe sich wieder ein $2^{o(|V|)}$-Algorithmus für
|
|
$k$-\problem{Color} -- Widerspruch zur ETH.
|
|
\end{itemize}
|
|
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. Zu zeigen ist,
|
|
dass $\Delta$\problem{Cover} weder in $2^{o(\sqrt{|V'|})} \cdot |I|^{O(1)}$
|
|
noch in $2^{o(\sqrt{|E'|})} \cdot |I|^{O(1)}$ lösbar ist.
|
|
|
|
\textbf{Bzgl.\ $|V'|$:}
|
|
\begin{itemize}
|
|
\item Angenommen, $\Delta$\problem{Cover} wäre in
|
|
$2^{o(\sqrt{|V'|})} \cdot |I|^{O(1)}$ lösbar.
|
|
\item Wegen $|V'| = |V| + |E| \le |V| + |V|^2 = O(|V|^2)$ ist
|
|
$\sqrt{|V'|} = O(|V|)$.
|
|
\item Es ergäbe sich ein $2^{o(|V|)}$-Algorithmus für \problem{VertexCover}
|
|
-- Widerspruch zur ETH.
|
|
\end{itemize}
|
|
|
|
\textbf{Bzgl.\ $|E'|$:}
|
|
\begin{itemize}
|
|
\item Angenommen, $\Delta$\problem{Cover} wäre in
|
|
$2^{o(\sqrt{|E'|})} \cdot |I|^{O(1)}$ lösbar.
|
|
\item Wegen $|E'| = 3|E| = O(|E|)$ ist $\sqrt{|E'|} = O(\sqrt{|E|})$.
|
|
\item Es ergäbe sich ein $2^{o(\sqrt{|E|})}$-Algorithmus für
|
|
\problem{VertexCover} -- Widerspruch zur ETH.
|
|
\end{itemize}
|
|
Bounds: kein $2^{o(\sqrt{|V'|})}$, kein $2^{o(\sqrt{|E'|})}$.
|
|
\hfill$\square$
|
|
|
|
\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$.
|
|
\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$.
|
|
|
|
\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 sei folgender Graph $G = (V,E)$:
|
|
\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 auf den Graphen $G$ 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.}
|
|
Gegeben sei folgender Graph $G = (V,E)$:
|
|
\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 auf den Graphen $G$ 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)} Zu zeigen ist, dass $A$ die Güte 2 hat, also
|
|
\[
|
|
v(A(\varphi)) \;\ge\; \tfrac12\, v(\mathrm{OPT}(\varphi))
|
|
\quad\text{für alle } \varphi .
|
|
\]
|
|
Sei $\varphi$ eine Formel mit $m$ Klauseln. Betrachte die beiden Belegungen
|
|
$\beta_0$ (alle false) und $\beta_1$ (alle true):
|
|
\begin{itemize}
|
|
\item Unter $\beta_0$ ist jedes negative Literal wahr.
|
|
\item Unter $\beta_1$ ist jedes positive Literal wahr.
|
|
\end{itemize}
|
|
Jedes Literal ist positiv oder negativ, und jede Klausel enthält mindestens
|
|
ein Literal. Also wird jede Klausel von $\beta_0$ oder von $\beta_1$ (oder
|
|
von beiden) erfüllt. Da damit jede Klausel zu $v(\beta_0)$ oder zu
|
|
$v(\beta_1)$ zählt, gilt
|
|
\[
|
|
v(\beta_0) + v(\beta_1) \;\ge\; m .
|
|
\]
|
|
Der Algorithmus wählt die bessere der beiden Belegungen. Das Optimum erfüllt
|
|
höchstens alle $m$ Klauseln, also $v(\mathrm{OPT}(\varphi)) \le m$. Damit
|
|
folgt
|
|
\[
|
|
v(A(\varphi)) \;=\; \max\{v(\beta_0), v(\beta_1)\}
|
|
\;\ge\; \frac{v(\beta_0) + v(\beta_1)}{2}
|
|
\;\ge\; \frac{m}{2}
|
|
\;\ge\; \frac{v(\mathrm{OPT}(\varphi))}{2} .
|
|
\]
|
|
Somit hat $A$ die Güte 2.
|
|
|
|
\textbf{b)} $\varphi = (x_1 \vee x_2 \vee x_3) \wedge
|
|
(\neg x_1 \vee \neg x_2 \vee \neg x_3)$. Mit $x_1 = \true$,
|
|
$x_2 = x_3 = \false$ 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$.
|
|
\begin{itemize}
|
|
\item Knoten 1 wählt $\{1,2\}$ -- deckt die zwei neuen Knoten 1 und 2.
|
|
\item Knoten 3 wählt $\{3,2\}$ -- 2 ist schon gedeckt, die Kante deckt nur
|
|
den neuen Knoten 3.
|
|
\item Knoten 4 wählt $\{4,3\}$ -- deckt nur den neuen Knoten 4.
|
|
\item Knoten 5 wählt $\{5,4\}$ -- deckt nur den neuen Knoten 5.
|
|
\item So weiter bis Knoten $n$: Er wählt $\{n, n-1\}$ -- deckt nur den neuen
|
|
Knoten $n$.
|
|
\end{itemize}
|
|
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.}
|
|
Gegeben sei folgender Graph $G = (V,E)$:
|
|
\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) auf den Graphen $G$ mit
|
|
Startknoten $a$ an; geben Sie alle Zwischengraphen an, 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.
|
|
\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.}
|
|
Gegeben sei folgender Graph $G = (V,E)$:
|
|
\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 auf den Graphen $G$ ab Startknoten $C$
|
|
an; geben Sie alle Zwischengraphen und die Länge der Rundreise an.
|
|
\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}.
|
|
\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=4.2cm,y=0.85cm]
|
|
\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=8.8cm]
|
|
\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=4.0cm,y=0.55cm]
|
|
\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=8.8cm]
|
|
\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)} Zu zeigen ist $\mathrm{NFDH}(L) \le 2\,\mathrm{OPT}(L) + 1$
|
|
auch für Höhen $h(r_i) \le 1$. Sei $H_i$ die Höhe der Stufe $i$ ($=$ Höhe
|
|
ihres ersten Rechtecks), $W_i$ ihre Gesamtbreite und $A_i$ ihre
|
|
Rechteck-Gesamtfläche.
|
|
|
|
\textbf{Erstens:} Jedes Rechteck der Stufe $i$ hat Höhe $\ge H_{i+1}$
|
|
(absteigende Sortierung). Die Rechtecke der Stufe $i$ haben zusammen die
|
|
Breite $W_i$, also
|
|
\[
|
|
A_i \;\ge\; W_i \cdot H_{i+1} .
|
|
\]
|
|
|
|
\textbf{Zweitens:} Das \emph{erste} Rechteck der Stufe $i{+}1$ passte nicht
|
|
mehr auf Stufe $i$. Es hat also Breite $> 1 - W_i$ und Höhe $H_{i+1}$,
|
|
folglich
|
|
\[
|
|
\text{Fläche des ersten Rechtecks von Stufe } i{+}1 \;>\; (1 - W_i)\, H_{i+1} .
|
|
\]
|
|
|
|
\textbf{Kombination:} Zerlege $H_{i+1}$ in die beiden Anteile und setze
|
|
Erstens und Zweitens ein:
|
|
\[
|
|
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).
|
|
\]
|
|
|
|
\textbf{Summierung:} Summiere die Kombination über $i \ge 1$. Dabei zählt
|
|
jede Stufe höchstens zweimal: einmal als $A_i$ und einmal über ihr erstes
|
|
Rechteck. Also
|
|
\[
|
|
\sum_{i \ge 2} H_i \;<\; 2 \cdot \text{Gesamtfläche} \;\le\; 2\,\mathrm{OPT} .
|
|
\]
|
|
|
|
\textbf{Fazit:} Die erste Stufe hat Höhe $H_1 \le 1$. Damit 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 |I|^{O(1)}$ lösbar -- also subexponentiell mal ein Polynom.
|
|
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|I|^{O(1)}$ --- 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).
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\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$
|
|
|
|
\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.
|
|
|
|
\bspkopf{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}
|
|
|
|
|
|
\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$
|
|
|
|
\end{document}
|