5151 lines
219 KiB
TeX
5151 lines
219 KiB
TeX
\documentclass[11pt]{article}
|
|
\input{style_guide.tex}
|
|
|
|
\setlength{\parskip}{0.4em}
|
|
\setlength{\parindent}{0pt}
|
|
|
|
% 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{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{Kern.} Zertifikat $(1,2,3,4)$ (fetter Pfad): alle vier Knoten sind
|
|
paarweise verschieden und jede der drei Pfadkanten existiert -- der
|
|
Verifizierer akzeptiert diesen einfachen Pfad der Länge $3 \ge k$. Der
|
|
Rechenweg der NTM, der genau diese Folge rät, akzeptiert.
|
|
|
|
|
|
\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 Falls das Zertifikat nicht aus $k+1$ Knoten besteht, lehne ab.
|
|
\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
|
|
sind seine ersten $k+1$ Knoten ein Zertifikat -- beide Prüfungen gelingen.
|
|
Hat $G$ keinen solchen Pfad, dann scheitert jedes Zertifikat an einer
|
|
Prüfung -- der Verifizierer lehnt ab.
|
|
|
|
\textbf{Laufzeit:} Paarweise Vergleiche $O(|V|^2)$, Kantenprüfungen $O(k)$ -- gesamt $O(|V|^2)$.
|
|
|
|
\textbf{c)} Die NTM arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Rate nichtdeterministisch $k+1$ Knoten $v_0, \dots, v_k$.
|
|
\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:} Rateschritte $O(k)$, paarweise Vergleiche $O(|V|^2)$, Kantenprüfungen $O(k)$ -- gesamt $O(|V|^2)$.
|
|
|
|
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{Kern.} Zertifikat $D=\{1\}$ (grau markiert): $|D|=1\le k$, das
|
|
Zentrum liegt in $D$ und jedes Blatt ist zu ihm benachbart -- der Verifizierer
|
|
akzeptiert. Der Rechenweg der NTM, der genau diese Menge wählt, akzeptiert.
|
|
|
|
|
|
\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|)$). Konkret $s = 1$, $t = 4$:
|
|
\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{Kern.} Der Verifizierer $V(x, c)$ startet die Breitensuche auf
|
|
$x = (G,s,t)$ und ignoriert $c$ komplett. Sie findet $1 \to 2 \to 4$, also
|
|
akzeptiert $V$ für jedes Zertifikat -- etwa das leere Wort
|
|
$c = \varepsilon$. Ein akzeptiertes Zertifikat existiert.
|
|
|
|
|
|
\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 nichtdeterministisch 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}
|
|
\textbf{Kern.} Die NDTM rät die Knotenmenge $C \subseteq V$; der
|
|
Verifizierer erhält $C$ als Zertifikat und prüft mit denselben Schritten
|
|
2--4 -- das Raten ist durch das Zertifikat ersetzt. Für $C=\{1,2\}$ ist
|
|
jede Kante durch $1$ oder $2$ gedeckt und $|C|=2\le k$ -- er akzeptiert.
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} Eingabe: Graph $G = (V,E)$, Zahl $k$ und Zertifikat $c$: eine
|
|
Knotenmenge $C \subseteq V$.
|
|
|
|
Der Verifizierer $V(G, k;\ c)$ arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item[1.] Für alle $\{u,v\} \in E$: Falls $u \notin C$ und $v \notin C$,
|
|
verwerfe.
|
|
\item[2.] Falls $|C| > k$, verwerfe.
|
|
\item[3.] Akzeptiere.
|
|
\end{itemize}
|
|
Das Raten ist durch das Zertifikat ersetzt. Die Prüfschritte sind identisch
|
|
zu den Schritten 2--4 der NDTM. \textbf{Laufzeit:} Jede Kante prüfen und $|C|$ zählen --
|
|
$O(|V| + |E|)$.
|
|
|
|
\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 an einer Reduktionskette}
|
|
\textbf{Instanz.} Die Kette
|
|
$\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
|
|
$f_2$ für $\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}
|
|
\textbf{Kern.} Die Verkettung $f_2\circ f_1$ ist eine Reduktion
|
|
$\problem{Clique}\redp\problem{FVS}$: $x\in\problem{Clique}\iff
|
|
x'\in\problem{VC}\iff x''\in\problem{FVS}$ -- hier dreimal Ja. Laufen
|
|
$f_1$ in $O(n^a)$ und $f_2$ in $O(n^b)$, dann hat $x'$ höchstens Größe
|
|
$O(n^a)$, und die Verkettung läuft in $O(n^{ab})$ -- polynomiell.
|
|
|
|
|
|
\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$
|
|
|
|
\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{Instanz.} $L_0 = \problem{VertexCover}$ (NP-vollständig),
|
|
$L_1 = \problem{FeedbackVertexSet} \in \NP$; die Reduktion
|
|
$\problem{VertexCover} \redp \problem{FeedbackVertexSet}$ macht jede Kante
|
|
zu zwei antiparallelen Bögen:
|
|
\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}
|
|
\textbf{Kern.} Jedes $L \in \NP$ reduziert auf \problem{VertexCover},
|
|
und mit $\problem{VertexCover} \redp \problem{FeedbackVertexSet}$ folgt per
|
|
Transitivität $L \redp \problem{FeedbackVertexSet}$. Also ist
|
|
\problem{FeedbackVertexSet} NP-schwer und wegen
|
|
$\problem{FeedbackVertexSet} \in \NP$ 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}
|
|
\textbf{Instanz.} $L_0=\problem{3-SAT}$ ist NP-vollständig, und ein
|
|
Algorithmus $A$ entscheide $\problem{3-SAT}$ in $O(n^3)$.
|
|
|
|
\textbf{Kern.} Nimm ein beliebiges $L\in\NP$, etwa $\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)$.
|
|
Berechne zur Eingabe $x$ erst $f(x)$ und wende dann $A$ an -- das
|
|
entscheidet \problem{Clique} korrekt
|
|
($x\in\problem{Clique}\iff f(x)\in\problem{3-SAT}$) in
|
|
$O(n^2)+O((n^2)^3)=O(n^6)$, polynomiell. So liegt jedes $L\in\NP$ in $P$,
|
|
also $P=NP$.
|
|
|
|
|
|
\lsg
|
|
$P \subseteq NP$ gilt stets. Zu zeigen bleibt $NP \subseteq P$.
|
|
|
|
Sei $L \in NP$ beliebig. Da $L_0$ NP-vollständig ist, gibt es eine Reduktion
|
|
$f$ von $L$ auf $L_0$ mit Laufzeit $O(n^a)$. Sei $A$ ein Algorithmus, der
|
|
$L_0$ in Zeit $O(n^c)$ entscheidet.
|
|
|
|
So entscheidet man $L$: Berechne $f(x)$ und wende $A$ darauf an. Das ist
|
|
korrekt, denn $x \in L \iff f(x) \in L_0$. Und polynomiell: $f(x)$ hat
|
|
Größe $O(n^a)$, also braucht $A$ darauf $O((n^a)^c) = O(n^{ac})$.
|
|
|
|
Also gilt $L \in P$ für jedes $L \in NP$. 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{Instanz.} Die Klausel $C=(y_1\vee y_2\vee y_3\vee y_4\vee y_5)$,
|
|
also $\ell=5$ mit neuen Variablen $x_1,x_2$.
|
|
|
|
\textbf{Kern.} $C$ wird ersetzt durch die Kette
|
|
\[
|
|
\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}.
|
|
\]
|
|
Ist $C$ erfüllt, etwa durch $y_3$, dann erfüllt $x_1=\true$, $x_2=\false$
|
|
die Kette: $K_1$ durch $x_1$, $K_2$ durch $y_3$, $K_3$ durch $\neg x_2$.
|
|
|
|
|
|
\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 der Länge $\ell \ge 3$ wird zu $\ell-2$
|
|
Dreier-Klauseln, kurze bleiben unverändert -- gesamt $O(n)$ bei
|
|
Eingabelänge $n$.
|
|
|
|
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{$k$-Clique ist NP-vollständig}{Klausuren SS23-H A4 und SS24-H A2, je 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.
|
|
\emph{Hinweis: Die Reduktion geht von allgemeinem SAT aus -- NICHT von 3-SAT.}
|
|
|
|
\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)$, $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);
|
|
\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$};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\textbf{Kern.} Je Literalvorkommen ein Knoten. Kanten verbinden Literale
|
|
verschiedener Klauseln, die sich nicht widersprechen. Die Belegung
|
|
$x=z=\true$, $y=\false$ macht pro Klausel ein Literal wahr -- deren
|
|
Knoten $\{x,z,\neg y\}$ sind die fette $3$-Clique und das akzeptierte
|
|
Zertifikat.
|
|
|
|
|
|
\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 $\{u,v\} \subseteq C$, ob $\{u,v\} \in E$ gilt;
|
|
lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
Existiert eine $k$-Clique, dann gibt es ein Zertifikat dafür. Dieses wird
|
|
akzeptiert. Sonst verletzt jedes Zertifikat eine Prüfung -- abgelehnt.
|
|
|
|
\textbf{Laufzeit:} Größe zählen $O(|V|)$, alle Paare testen $O(|V|^2)$ --
|
|
gesamt $O(|V|^2)$. Also gilt $k$-\problem{Clique} $\in$ NP.
|
|
|
|
\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\}$;
|
|
$y_{ij}$ bezeichne dieses Literal
|
|
\item $E = \{\{[i,j],[i',j']\} \mid i \ne i',\ y_{ij} \ne \neg y_{i'j'}\}$
|
|
\item $k = m$
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis hin:}
|
|
\begin{itemize}
|
|
\item Sei $\psi$ eine erfüllende Belegung von $F$.
|
|
\item Dann ist in jeder Klausel mindestens ein Literal wahr. Wähle pro
|
|
Klausel eines.
|
|
\item $C$ sei die Menge der $m$ zugehörigen Knoten.
|
|
\item Je zwei Knoten aus $C$ stammen aus verschiedenen Klauseln.
|
|
\item Ihre Literale widersprechen sich nicht, denn beide sind unter
|
|
$\psi$ wahr.
|
|
\item Nach Definition von $E$ sind sie also verbunden.
|
|
\item Also ist $C$ eine $m$-Clique und $(G, m)$ eine Ja-Instanz.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis zurück:}
|
|
\begin{itemize}
|
|
\item Sei $C$ eine $m$-Clique in $G$.
|
|
\item Knoten derselben Klausel sind nie verbunden. Also enthält $C$ aus
|
|
jeder der $m$ Klauseln genau einen Knoten.
|
|
\item Die zugehörigen Literale widersprechen sich paarweise nicht (sonst
|
|
fehlte eine Kante).
|
|
\item Setze alle diese Literale wahr -- eine widerspruchsfreie Belegung.
|
|
\item Sie erfüllt in jeder Klausel ein Literal.
|
|
\item Also ist $F$ erfüllbar.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} Sei $L$ die Zahl der Literalvorkommen. Knoten anlegen
|
|
$O(L)$, Kanten prüfen $O(L^2)$ -- gesamt $O(L^2)$.
|
|
|
|
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) / Präsenz 9.1}
|
|
\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{Instanz.} $c = (2,3,5)$, $K = 5$ mit Lösung $\{1,2\}$:
|
|
$2+3 = 5$.
|
|
|
|
\textbf{Kern.} Die Reduktion setzt $w_i = p_i = c_i$ und $B = P = K$ -- die
|
|
beiden Knapsack-Schranken zwingen die gemeinsame Summe auf exakt $K$.
|
|
Bildinstanz: Gewichte $=$ Profite $= (2,3,5)$, $B = P = 5$; die Auswahl
|
|
$\{1,2\}$ hat Gewicht $5 \le B$ und Profit $5 \ge P$ -- die Ja-Instanz
|
|
bleibt Ja.
|
|
|
|
|
|
\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{Instanz.} $c = (3,5,8,4)$, $K = 12$ mit Lösung $\{3,5,4\}$:
|
|
$3+5+4 = 12$.
|
|
|
|
\textbf{Kern.} Die Reduktion hängt mit $N = \sum c_j + 1 = 21$ die
|
|
Zusatzzahlen $a = N-K = 9$ und $b = K+1 = 13$ an; wegen $a+b = N+1 > N$
|
|
trennen sich $a$ und $b$ in jeder Lösung. Neue Zahlen $(3,5,8,4,9,13)$ mit
|
|
Hälfte $N = 21$: Die Seite $\{3,5,4\} \cup \{a\}$ summiert $3+5+4+9 = 21$
|
|
-- die Ja-Instanz bleibt Ja.
|
|
|
|
|
|
\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)$. 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)$.
|
|
|
|
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{Instanz.} $m=2$ Maschinen, Jobs $(1,1,2)$. ListScheduling legt
|
|
jeden Job auf die Maschine kleinster Last: $J_1\!\to\!M_1$,
|
|
$J_2\!\to\!M_2$, $J_3\!\to\!M_1$ $\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{Kern.} Das Optimum legt $J_1, J_2$ auf eine Maschine und $J_3$
|
|
auf die andere: $\OPT=2$. Also $\mathrm{LS}/\OPT=\tfrac32=2-\tfrac1m$ --
|
|
die Schranke 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 \;\le\; \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{Kern.} Greedy geht die Liste nach Dichte durch und packt jeweils,
|
|
was noch passt: erst $(1,1)$ und $(3,3)$, dann ist $(11,13)$ zu schwer und
|
|
wird übersprungen, danach noch $(5,6)$ und $(1,3)$. Greedy-Wert
|
|
$\mathrm{GA} = 10$. Das übersprungene $(11,13)$ ist zugleich der beste
|
|
Einzel-Gegenstand, Profit $p_{\max} = 11$; genau diesen Rückstand fängt
|
|
$\mathrm{MGA} = \max\{\mathrm{GA}, p_{\max}\} = 11$ ab. Das Optimum
|
|
$\{(11,13), (3,3)\}$ liefert $\mathrm{OPT} = 14$, und es gilt
|
|
\[
|
|
\mathrm{OPT} = 14 \;\le\; \mathrm{GA} + p_{\max} = 21 \;\le\;
|
|
2\,\mathrm{MGA} = 22.
|
|
\]
|
|
|
|
|
|
\lsg
|
|
\textbf{Idee:} Greedy geht die Items nach Dichte durch und packt jedes,
|
|
das noch passt; passt eines nicht, überspringt es und macht weiter. Sein
|
|
Rückstand zum Optimum ist höchstens der Profit \emph{eines} Items -- des
|
|
ersten übersprungenen. Genau dieses fängt 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.) Der Bruchteil ist höchstens $1$, also
|
|
$\mathrm{OPT}_f(I) \le p_1 + \dots + p_k + p_{k+1}$. Und Greedy packt die
|
|
Gegenstände $1, \dots, k$ ebenfalls ein, somit
|
|
$p_1 + \dots + p_k \le \mathrm{GA}(I)$. Zusammen:
|
|
\[
|
|
\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 / Hausaufgabe 9.1}
|
|
Zeigen Sie, dass \problem{VertexCover} NP-vollständig ist.
|
|
\emph{Hinweis:} Reduzieren Sie \problem{Clique} auf \problem{VertexCover}.
|
|
|
|
\bspkopf{VertexCover NP-vollständig}
|
|
\textbf{Instanz.} \problem{Clique} am folgenden Graphen $G$ mit $n=4$
|
|
Knoten.
|
|
\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{Kern.} Komplementieren liefert $G'$ mit genau den Nicht-Kanten
|
|
von $G$ und $k' = n-k = 1$. Die Clique $\{1,2,3\}$ wird zum Vertex Cover
|
|
$V\setminus C=\{4\}$: Knoten $4$ deckt beide Kanten von $G'$.
|
|
|
|
|
|
\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|)$.
|
|
Also gilt $\problem{VertexCover} \in \NP$. (NDTM-Variante: statt das
|
|
Zertifikat $C$ als Eingabe zu erhalten, rate es im ersten Schritt
|
|
nichtdeterministisch.)
|
|
|
|
\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$ -- also ist
|
|
$C$ unabhängig in $G'$.
|
|
\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)$.
|
|
|
|
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{Instanz.} \problem{Clique} am folgenden Pfad $G$ mit $k=2$.
|
|
\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{Kern.} Ein neuer Knoten $u$ wird mit allen Knoten verbunden,
|
|
$\bar k = k+1 = 3$. Damit ist $u$ universell, und die Clique $\{1,2\}$
|
|
wächst zur Clique $\{1,2,u\}$ der Größe $3 \ge \bar k$ in $\bar G$.
|
|
|
|
|
|
\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{Instanz.} \problem{Clique} am folgenden Dreieck $G$ mit $k=3$.
|
|
\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{Kern.} Ein neuer isolierter Knoten $v$ kommt hinzu; Ausgabe
|
|
$(G', v, k)$. Die $3$-Clique $\{1,2,3\}$ liegt ganz in $G$ und enthält
|
|
$v$ nicht -- sie ist eine $k$-Clique in $G'$ ohne $v$.
|
|
|
|
|
|
\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{Instanz.} \problem{Clique} am Dreieck $\{1,2,3\}$ mit $k=3$.
|
|
\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) {Independent Set $\{u_1,u_2,u_3\}$};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\textbf{Kern.} Es kommen $k=3$ neue isolierte Knoten $u_1,u_2,u_3$
|
|
hinzu; $k$ bleibt. In $G'$ ist $\{1,2,3\}$ weiterhin eine $3$-Clique,
|
|
und $\{u_1,u_2,u_3\}$ ist ein Independent Set der Größe $3$.
|
|
|
|
|
|
\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$. (Bei $k = 1$ ist ein einzelner Knoten zugleich Clique und
|
|
Independent Set.) 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|)$.
|
|
|
|
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{Instanz.} $k$-\problem{Clique} am folgenden $G$: ein $K_5$ auf
|
|
$\{1,\dots,5\}$ plus Pendant-Knoten $6$ mit $\deg(6) = 1 < 3$, 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}
|
|
|
|
\textbf{Kern.} An jeden Knoten $v$ wird ein privates $K_4$ auf
|
|
$\{v,a_v,b_v,c_v\}$ angehängt; $k$ bleibt. In $G'$ haben alle Knoten
|
|
Grad $\ge 3$, und die $5$-Clique $\{1,\dots,5\}$ bleibt erhalten.
|
|
Gadget-Cliquen haben Größe $\le 4 < k$, erzeugen also keine neue
|
|
$5$-Clique.
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} Algorithmus für festes $k \le 4$:
|
|
\begin{itemize}
|
|
\item Teste jede Knotenmenge $C \subseteq V$ mit $|C| = k$.
|
|
\item Prüfe per Adjazenzmatrix, ob alle Paare in $C$ verbunden sind.
|
|
\item Akzeptiere, sobald eine Menge alle Prüfungen besteht; sonst lehne ab.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Der Algorithmus testet alle Kandidaten. Er akzeptiert
|
|
also genau dann, wenn eine $k$-Clique existiert.
|
|
|
|
\textbf{Laufzeit:} Es gibt $\binom{|V|}{k} = O(|V|^k) \subseteq O(|V|^4)$
|
|
Mengen. Pro Menge höchstens $\binom{4}{2} = 6$ Paar-Prüfungen in $O(1)$ --
|
|
gesamt $O(|V|^4)$, also polynomiell lösbar.
|
|
|
|
\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 Prüfe für jeden Knoten $v \in V$, ob $\deg(v) \ge 3$ gilt; lehne
|
|
sonst ab.
|
|
\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}
|
|
\textbf{Korrektheit:} Ist die Instanz gültig und hat $G$ eine Clique $C$ mit
|
|
$|C| \ge k$, dann gibt es ein Zertifikat dafür. Dieses wird vom Verifizierer
|
|
akzeptiert und sonst abgelehnt.
|
|
|
|
\textbf{Laufzeit:} Gradprüfung $O(|V| + |E|)$, Größen- und Paar-Prüfung
|
|
$O(|V|^2)$ -- gesamt $O(|V|^2)$. 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,
|
|
o.B.d.A.\ $k \ge 5$. Wir konstruieren daraus eine
|
|
$k$-\problem{CLIQUE-DEG-3}-Instanz $(G', k)$ durch:
|
|
\begin{itemize}
|
|
\item $V' = V \cup \{a_v, b_v, c_v \mid v \in V\}$
|
|
\item $E' = E \cup \{\{x,y\} \mid v \in V,\ x, y \in \{v, a_v, b_v, c_v\},\
|
|
x \ne y\}$
|
|
\item $k' = k$
|
|
\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 Jeder Knoten in $C'$ hat mindestens $k-1 \ge 4$ Nachbarn in $C'$.
|
|
\item Gadget-Knoten haben Grad 3. Somit liegt keiner in $C'$.
|
|
\item Also 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)$.
|
|
|
|
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}{Hausaufgaben 9.2 und 10.1, je 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{Instanz.} \problem{VertexCover} am Pfad $1$--$2$--$3$ mit $k=1$.
|
|
\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{Kern.} Jede Kante $\{u,v\}$ wird zu zwei antiparallelen Bögen
|
|
$(u,v),(v,u)$; $k$ bleibt. In $G'$ entstehen die $2$-Kreise
|
|
$1\rightleftarrows 2$ und $2\rightleftarrows 3$; das Vertex Cover
|
|
$\{2\}$ trifft beide, ist also ein Feedback Vertex Set mit
|
|
$|X| = 1 \le k$.
|
|
|
|
|
|
\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|)$.
|
|
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|)$.
|
|
|
|
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{Instanz.} \problem{VertexCover} am Pfad $1$--$2$--$3$ mit $k=1$.
|
|
\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{Kern.} Jede Kante $e = \{u,v\}$ wird durch einen neuen Knoten
|
|
$w_e$ zum Dreieck $\{u,v,w_e\}$ ergänzt; $k$ bleibt. Beide Dreiecke von
|
|
$G'$ enthalten den Knoten $2$, also ist das Vertex Cover $\{2\}$ auch
|
|
eine Dreiecksüberdeckung mit $|C_\Delta| = 1 \le k$.
|
|
|
|
|
|
\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{Instanz.} \problem{3-COLOR} am Graphen $G$ aus dem einzelnen
|
|
Knoten $v$, also $\deg(v) = 0 < 3$.
|
|
\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}
|
|
|
|
\textbf{Kern.} An jeden Knoten mit Grad $< 3$ werden zwei
|
|
Diamant-Gadgets ($K_4$ ohne die Kante $\{p,s\}$) über $\{v,p\}$ und
|
|
$\{v,s\}$ angehängt. Eine 3-Färbung überträgt sich auf $G'$:
|
|
$f(v) = 1$, je Gadget $p = s = 2$, $q = 1$, $r = 3$.
|
|
|
|
|
|
\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|)$. 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. Alle Gadget-Knoten haben Grad 3: $q$ und $r$ über
|
|
drei Gadget-Kanten, $p$ und $s$ über zwei Gadget-Kanten plus die Kante zu $v$.
|
|
\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 Die angehängten Gadgets lassen die Originalkanten unverändert, also
|
|
gilt $E \subseteq E'$.
|
|
\item Somit 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|)$.
|
|
|
|
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{Instanz.} $k$-\problem{Color} mit $k = 3$ am Dreieck
|
|
$\{A,B,C\}$.
|
|
\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}
|
|
|
|
\textbf{Kern.} Zu $G$ kommt ein disjunktes $K_3$ mit vorgefärbten
|
|
Knoten $v_1,v_2,v_3$ hinzu (keine Kanten nach $G$); die Vorfärbung
|
|
$f(v_i) = i$ erzwingt nichts in $G$. Die 3-Färbung von $G$ plus
|
|
$f(v_i) = i$ ist eine gültige Färbung von $G' = G \mathbin{\dot\cup} K_3$
|
|
mit Vorgabe.
|
|
|
|
|
|
\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{Instanz.} \problem{HamiltonianPath} am folgenden Pfad $G$.
|
|
\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{Kern.} Ein neuer universeller Knoten $u$ wird mit allen Knoten
|
|
verbunden. Der Hamiltonpfad $1\!-\!2\!-\!3$ schließt sich über die
|
|
Kanten $\{3,u\}$ und $\{u,1\}$ zum Hamiltonkreis
|
|
$1\!-\!2\!-\!3\!-\!u\!-\!1$ in $G'$.
|
|
|
|
|
|
\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{Instanz.} \problem{HamiltonianCycle} am Dreieck auf
|
|
$\{v, w_1, w_2\}$.
|
|
\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{Kern.} Ein Zwilling $v^*$ erbt die Nachbarn von $v$, dazu
|
|
kommen die Grad-1-Knoten $s$ an $v$ und $t$ an $v^*$. Der Hamiltonkreis
|
|
wird bei $v$ aufgetrennt und zum Hamiltonpfad
|
|
$s\!-\!v\!-\!w_1\!-\!w_2\!-\!v^*\!-\!t$ verlängert.
|
|
|
|
|
|
\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{Instanz.} \problem{HamiltonianCycle} am Dreieck $G$ 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{Kern.} Jeder Knoten wird zur Clique $K_{43}$ mit den Portalen
|
|
$v_1,v_{43}$; jede Originalkante liefert vier Portalkanten. Damit sind alle
|
|
Grade mindestens $42$, und der Hamiltonkreis überträgt sich: jede Clique
|
|
wird als ein Portal-zu-Portal-Pfad durchlaufen.
|
|
|
|
|
|
\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{Instanz.} \problem{SubsetSum}-Instanz $c=(2,3,5)$, $K=5$, $n=3$;
|
|
Lösung $S=\{1,2\}$ mit $2+3=5$.
|
|
|
|
\textbf{Kern.} Shift $c_i'=c_i+1$ plus $n$ Padding-Items der Größe $1$:
|
|
\[
|
|
c' = (3,\,4,\,6,\;1,\,1,\,1), \qquad \text{Zielwert } K+n=8, \qquad
|
|
\text{Kardinalität } n=3.
|
|
\]
|
|
Die Bildmenge $\{1,2\}$ mit einem Padding-Item aufgefüllt ergibt
|
|
$S'=\{1,2,4\}$: Summe $3+4+1=8$ bei genau $3$ Elementen.
|
|
|
|
|
|
\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{Instanz.} \problem{SubsetSum}-Instanz $c=(2,3,5)$, $K=5$; Lösung
|
|
$S=\{1,2\}$ mit $2+3=5$.
|
|
|
|
\textbf{Kern.} Verdopple alle Größen und stelle das Ballast-Item $a_1=1$ voran:
|
|
\[
|
|
a = (1,\;4,\,6,\,10), \qquad T = 2K = 10 \qquad (a_{i+1} = 2c_i).
|
|
\]
|
|
Aus $S=\{1,2\}$ wird $I=\{2,3\}$ mit $4+6=10=T$; das einzige ungerade Item
|
|
$a_1$ bleibt ungenutzt.
|
|
|
|
|
|
\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{Instanz.} \problem{3-ExactCover} mit $U=\{u_1,\dots,u_6\}$ und den
|
|
Mengen $S_1=\{u_1,u_2,u_3\}$, $S_2=\{u_4,u_5,u_6\}$, $S_3=\{u_1,u_2,u_4\}$;
|
|
exakte Überdeckung $\{S_1,S_2\}$.
|
|
|
|
\textbf{Kern.} 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$.
|
|
\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, also sind $c_1,c_2,c_3$
|
|
paarweise verschieden -- jede Größe tritt nur einmal auf. Die Überdeckung
|
|
$\{S_1,S_2\}$ liefert $c_1+c_2=21+1344=1365=K$.
|
|
|
|
|
|
\lsg
|
|
\textbf{Konstruktion:} Sei $(U, S_1, \dots, S_n)$ eine
|
|
\problem{3-ExactCover}-Instanz mit $U = \{u_1, \dots, u_{3m}\}$, o.B.d.A.\
|
|
$S_j$ paarweise verschieden (Duplikate vorab löschen). Wir konstruieren
|
|
daraus in Basis $n+1$ eine SubsetSum-Instanz durch:
|
|
\begin{itemize}
|
|
\item $c_j = \sum_{u_i \in S_j} (n+1)^{i-1}$ für $j = 1, \dots, n$ --
|
|
Ziffer 1 an den Stellen der drei Elemente von $S_j$
|
|
\item $K = \sum_{j=0}^{3m-1} (n+1)^j$ -- an jeder Stelle eine 1
|
|
\end{itemize}
|
|
|
|
\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.
|
|
|
|
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{Instanz.} \problem{SubsetSum}-Instanz $c=(2,3,5)$, $K=5$; Lösung
|
|
$S=\{1,2\}$ mit $2+3=5$.
|
|
|
|
\textbf{Kern.} Multipliziere alle Größen und $K$ mit $3$: $c'=(6,9,15)$,
|
|
$K'=15$ -- jede Größe ist durch $3$ teilbar. Dieselbe Auswahl liefert
|
|
$6+9=15=K'$.
|
|
|
|
|
|
|
|
\lsg
|
|
\textbf{$\in$ NP:} Eingabe: Zahlen $c_1, \dots, c_n$, Zielwert $K$ und
|
|
Zertifikat $S \subseteq [n]$. Der Verifizierer arbeitet wie folgt:
|
|
\begin{itemize}
|
|
\item Prüfe für jede Größe $c_i$, ob sie durch 3 oder durch 7 teilbar
|
|
ist; lehne sonst ab.
|
|
\item Prüfe, ob $\sum_{i\in S} c_i = K$ gilt; lehne sonst ab.
|
|
\item Sonst akzeptiere.
|
|
\end{itemize}
|
|
\textbf{Korrektheit:} Ist die Instanz eine gültige Variante mit Lösung $S$,
|
|
dann gibt es ein Zertifikat dafür. Dieses wird vom Verifizierer akzeptiert
|
|
und sonst abgelehnt.
|
|
|
|
\textbf{Laufzeit:} Teilbarkeitstests, Summieren und Vergleichen -- $O(n)$.
|
|
Also liegt die Teilbarkeits-Variante in $\NP$.
|
|
|
|
\textbf{NP-schwer:} Zeige, dass die Variante NP-schwer ist durch die
|
|
Reduktion $\problem{SubsetSum} \redp$ Teilbarkeits-Variante.
|
|
\problem{SubsetSum} ist bereits als NP-vollständig bekannt.
|
|
|
|
\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 SubsetSum nach Variante:}
|
|
\begin{itemize}
|
|
\item Sei $S$ eine Lösung mit $\sum_{i\in S} c_i = K$.
|
|
\item Dann gilt
|
|
$\sum_{i\in S} c_i' = \sum_{i\in S} 3c_i
|
|
= 3 \sum_{i\in S} c_i = 3K = K'$.
|
|
\item Also ist $S$ eine Lösung der neuen Instanz.
|
|
\end{itemize}
|
|
|
|
\textbf{Beweis Variante nach SubsetSum:}
|
|
\begin{itemize}
|
|
\item Sei $S$ eine Lösung mit $\sum_{i\in S} c_i' = K'$.
|
|
\item Wegen $c_i' = 3c_i$ heißt das
|
|
$3 \sum_{i\in S} c_i = 3K$.
|
|
\item Division durch 3 liefert $\sum_{i\in S} c_i = K$.
|
|
\item Also ist $S$ eine Lösung der Original-Instanz.
|
|
\end{itemize}
|
|
|
|
\textbf{Laufzeit:} jede der $n$ Zahlen und $K$ mit 3 multiplizieren --
|
|
$O(n)$.
|
|
|
|
Da die Variante in $\NP$ liegt und NP-schwer ist, folgt: Sie ist
|
|
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{Instanz.} \problem{SubsetSum}-Instanz $c=(1,4,6)$, $K=5$; die Größen
|
|
$1=2^0$ und $4=2^2$ sind Zweierpotenzen. Lösung $S=\{1,2\}$ mit $1+4=5$.
|
|
|
|
\textbf{Kern.} Multipliziere alle Größen und $K$ mit $3$: $c'=(3,12,18)$,
|
|
$K'=15$. Jede Größe hat den Primfaktor $3$ und ist damit keine Zweierpotenz.
|
|
Dieselbe Auswahl liefert $3+12=15=K'$.
|
|
|
|
|
|
\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)$.
|
|
|
|
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{Instanz.} \problem{HamiltonianCycle}-Graphen mit $n=4$ Knoten,
|
|
angenommene Güte $\alpha=2$: Kante $\to$ Distanz $1$, Nicht-Kante $\to$
|
|
$\alpha n+1=9$ (gestrichelt).
|
|
\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}
|
|
\textbf{Kern.} Links gibt es einen Hamiltonkreis: $\OPT=n=4$, also
|
|
$A(I)\le\alpha n=8$. Rechts hat Knoten $1$ Grad $1$, also keinen: jede Tour
|
|
benutzt eine Nicht-Kante, $\OPT\ge 9+3\cdot 1=12>8$, somit $A(I)>8$. Der
|
|
Test \glqq$A(I)\le 8$?\grqq{} entscheidet \problem{HamiltonianCycle}.
|
|
|
|
|
|
\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{Instanz.} \problem{SAT}-Formel $\varphi=(x_1\vee x_2)\wedge(\neg x_1)$,
|
|
erfüllbar durch $x_1x_2=01$.
|
|
|
|
\textbf{Kern.} Die Reduktion gibt $\langle M,\langle\varphi\rangle\rangle$ aus:
|
|
die feste DTM $M$ probiert nacheinander alle Belegungen von $\varphi$, hält
|
|
bei einer erfüllenden und geht sonst in eine Endlosschleife. Hier findet $M$
|
|
die erfüllende Belegung $01$ und hält -- also
|
|
$\langle M,\langle\varphi\rangle\rangle\in\mathrm{HALT}_{\mathrm{TM}}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} \problem{Clique}-Instanz $G$ mit $|V|=5$, $|E|=6$, $k=3$.
|
|
Die Reduktion bildet den Komplementgraphen $\bar G$ mit $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}
|
|
|
|
\textbf{Kern.} Die VC-Instanz hat $|V'|=5$, $|E'|=\tbinom{5}{2}-6=4$ und
|
|
$k'=5-3=2$. Wegen $|V'|=|V|$ wäre ein $2^{o(|V'|)}$-Algorithmus für
|
|
\problem{VertexCover} zugleich ein $2^{o(|V|)}$-Algorithmus für
|
|
\problem{Clique} -- Widerspruch zur ETH. Kein $2^{o(|V'|)}$.
|
|
|
|
|
|
\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 sich ein
|
|
$2^{o(|V|)}$-Algorithmus für \problem{Clique}. Widerspruch zur ETH.
|
|
\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}
|
|
\textbf{Instanz.} 3-SAT-Formel mit $n=3$, $m=2$:
|
|
$C_1 = (x_1 \vee \bar x_2 \vee x_3)$, $C_2 = (\bar x_1 \vee x_2 \vee \bar x_3)$.
|
|
Die Reduktion liefert $F_i=\{x_i,\bar x_i\}$ pro Variable, $F_{n+j}=C_j$ pro
|
|
Klausel und $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{Kern.} Wegen $|U| = 2n = 6$ wäre ein $2^{o(|U|)}$-Algorithmus für
|
|
\problem{HittingSet} zugleich ein $2^{o(n)}$-Algorithmus für
|
|
\problem{3-SAT} -- direkter Widerspruch zur ETH. Kein $2^{o(|U|)}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} Eine \problem{3-SAT}-Formel mit $m=4$ Klauseln; die
|
|
$O$-Schranken der Reduktionen setzen wir zur Illustration 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{Kern.} Ein $2^{o(\sqrt[4]{n})}$-Algorithmus für \problem{SubsetSum}
|
|
hätte bei $n=256$ den Exponenten $\sqrt[4]{256}=4=m$ -- rückwärts durch die
|
|
Kette ergäbe er einen $2^{o(m)}$-Algorithmus für \problem{3-SAT}, den es
|
|
unter der ETH (Sparsification-Lemma) nicht gibt. Kein $2^{o(\sqrt[4]{n})}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} 3-SAT-Formel mit $n=3$, $m=2$. Die Reduktion erzeugt die
|
|
Knotenmenge $V=\{x_i,\bar x_i,v_i \mid i\in[3]\}\cup\{C_1,C_2\}\cup\{z\}$:
|
|
|
|
\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}
|
|
|
|
\textbf{Kern.} Hier ist $|V| = 3n+m+1 = 12$; wegen $n \le 3m$ gilt allgemein
|
|
$|V| = O(m)$. Ein $2^{o(|V|)}$-Algorithmus für $k$-\problem{Color} wäre damit
|
|
ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem
|
|
Sparsification-Lemma Widerspruch zur ETH. Kein $2^{o(|V|)}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} \problem{Clique}-Instanz $K_3$ (zusammenhängend): $|V|=3$,
|
|
$|E|=3$. Die Reduktion erzeugt $n = 4|V|+3|E| = 21$ Jobs und den Makespan
|
|
$T = 2|V|+2|E| = 12$.
|
|
|
|
\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}
|
|
|
|
\textbf{Kern.} Wegen $|V| \le |E|+1$ ist $n = O(|E|)$, also
|
|
$\sqrt{n} = O(\sqrt{|E|})$. Ein $2^{o(\sqrt{n})}$-Algorithmus für das
|
|
Scheduling-Problem wäre damit ein $2^{o(\sqrt{|E|})}$-Algorithmus für
|
|
\problem{Clique} -- Widerspruch zur ETH. Kein $2^{o(\sqrt{n})}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} 3-SAT-Formel mit $n=3$, $m=2$. Pro Variable ein Dreieck
|
|
$x_i,\bar x_i,d_i$; pro Klausel ein Knoten $C_j$ mit Kanten zu seinen
|
|
Literalen.
|
|
|
|
\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{Kern.} Die Kantenzahl $|E| = 3n+3m = 15$ wächst wegen $n \le 3m$ nur
|
|
\emph{linear} in $m$. Ein $2^{o(|E|)}$-Algorithmus (ohne Wurzel) für
|
|
\problem{DominatingSet} wäre damit ein $2^{o(m)}$-Algorithmus für
|
|
\problem{3-SAT} -- nach dem Sparsification-Lemma Widerspruch zur ETH. Kein
|
|
$2^{o(|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}
|
|
\textbf{Instanz.} \problem{Clique}-Instanz mit $N=|V|=4$, $|E|=5$, $k=3$. Die
|
|
Reduktion baut ein $k\times k=3\times3$-Gitter aus Mengen $S_{i,j}$:
|
|
|
|
\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{Kern.} Hier ist $X=\sum_{(i,j)}|S_{i,j}| = 3\cdot 4+6\cdot 10 = 72$;
|
|
allgemein $X = O(N^4)$, also $\sqrt[4]{X} = O(N)$. Ein
|
|
$2^{o(\sqrt[4]{X})}$-Algorithmus für \problem{GridTiling} wäre damit ein
|
|
$2^{o(N)}$-Algorithmus für \problem{Clique} -- Widerspruch zur ETH. Kein
|
|
$2^{o(\sqrt[4]{X})}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} 3-SAT-Formel mit $n=3$, $m=2$:
|
|
$\varphi=(x_1\vee x_2\vee x_3)\wedge(\bar x_1\vee\bar x_2\vee x_3)$. Die
|
|
Reduktion erzeugt $2n+2m = 10$ Items.
|
|
|
|
\textbf{Kern.} Die Klausel-Items $c_j,d_j$ teilen sich je eine Größe, also
|
|
gibt es nur $d \le 2n+m = 8$ verschiedene Itemgrößen. Wegen $n \le 3m$ ist
|
|
$d = O(m)$. Ein $2^{o(d)}$-Algorithmus für \problem{SubsetSum} wäre damit ein
|
|
$2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem Sparsification-Lemma
|
|
Widerspruch zur ETH. Kein $2^{o(d)}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} \problem{SetCover}-Instanz mit $|U|=3$ Elementen, $r=2$
|
|
Mengen und $k=1$. Der involutorische Rollentausch $F'_w=\{v \mid 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}
|
|
|
|
\textbf{Kern.} Es entsteht eine \problem{HittingSet}-Instanz mit $r'=|U|=3$
|
|
Mengen und $|U'|=r=2$ Elementen. Ein $2^{o(|U|)}$-Algorithmus für
|
|
\problem{SetCover} wäre via Rollentausch ein $2^{o(r')}$-Algorithmus für
|
|
\problem{HittingSet} -- den es unter der ETH nicht gibt. Kein $2^{o(|U|)}$.
|
|
|
|
|
|
\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}
|
|
\textbf{Instanz.} 3-SAT-Formel 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)$. Pro Literal eine $0/1$-Variable, also
|
|
$N=2n=6$ Spalten; die Reduktion erzeugt die Ungleichungen
|
|
\[
|
|
\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}
|
|
\]
|
|
|
|
\textbf{Kern.} Das sind $M = m+2n = 8$ Zeilen; wegen $n \le 3m$ ist
|
|
$M = O(m)$. Ein $2^{o(M)}$-Algorithmus für \problem{ILP-Feasibility} wäre
|
|
damit ein $2^{o(m)}$-Algorithmus für \problem{3-SAT} -- nach dem
|
|
Sparsification-Lemma Widerspruch zur ETH. Kein $2^{o(M)}$.
|
|
|
|
|
|
\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}{Klausur SS25-H, A4a+b, 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}
|
|
|
|
\bspkopf{Lower Bounds NAE-4-SAT: Parameter einsetzen}
|
|
\textbf{Instanz.} 3-SAT-Formel mit $n=3$ Variablen und $m=2$ Klauseln. Die
|
|
Reduktion hängt die frische Variable $w$ an jede Klausel an:
|
|
$n' = n+1 = 4$, $m' = m = 2$.
|
|
|
|
\textbf{Kern.} Ein $2^{o(n')}$-Algorithmus für \problem{NAE-4-SAT} wäre
|
|
wegen $n' = n+1$ ein $2^{o(n)}$-Algorithmus für \problem{3-SAT} -- direkter
|
|
Widerspruch zur ETH. Kein $2^{o(n')}$.
|
|
|
|
|
|
\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')}$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{Lower Bounds: SetSplitting}{Klausur SS25-H, A4c+d, 1+4 P.}
|
|
\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} ($n$ Variablen, $m$ Klauseln mit je
|
|
höchstens 4 Literalen): 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[a)] 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[b)] 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}
|
|
\emph{Hinweis:} \problem{NAE-4-SAT} ist unter der ETH weder in
|
|
$2^{o(n)} \cdot |I|^{O(1)}$ noch in $2^{o(m)} \cdot |I|^{O(1)}$ lösbar.
|
|
|
|
\bspkopf{Lower Bounds SetSplitting: Parameter einsetzen}
|
|
\textbf{Instanz.} NAE-4-SAT-Instanz mit $n=4$ Variablen ($x_1,x_2,x_3,w$)
|
|
und $m=2$ Klauseln: $|S| = 2n = 8$, $r = n+m = 6$.
|
|
|
|
\textbf{Kern.} Wegen $|S| = 2n$ wäre ein $2^{o(|S|)}$-Algorithmus für
|
|
\problem{SetSplitting} ein $2^{o(n)}$-Algorithmus für \problem{NAE-4-SAT}
|
|
-- unter der ETH ausgeschlossen. Kein $2^{o(|S|)}$.
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} 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{b)} 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 Nach dem Hinweis ist das unter der ETH ausgeschlossen -- Widerspruch.
|
|
\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 Nach dem Hinweis ist das unter der ETH ausgeschlossen -- Widerspruch.
|
|
\end{itemize}
|
|
Bounds: kein $2^{o(|S|)}$, kein $2^{o(r)}$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{Lower Bounds: CoverClique}{Klausur SS25-N, A4a+b, 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.
|
|
|
|
\bspkopf{Lower Bounds CoverClique: Mini-Gadget}
|
|
\textbf{Instanz.} $k$-\problem{Color}-Instanz $G=C_4$ mit $k=2$; die
|
|
Reduktion bildet den Komplementgraphen $\bar G$.
|
|
\begin{center}
|
|
\begin{tikzpicture}[plab/.style={font=\scriptsize,align=center},
|
|
mini/.style={circle,draw,inner sep=1.8pt}]
|
|
\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$};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\textbf{Kern.} Wegen $|V'|=|V|=4$ wäre ein $2^{o(|V'|)}$-Algorithmus für
|
|
\problem{CoverClique} ein $2^{o(|V|)}$-Algorithmus für $k$-\problem{Color} --
|
|
Widerspruch zur ETH. Kein $2^{o(|V'|)}$.
|
|
|
|
|
|
\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|})}$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{Lower Bounds: $\Delta$Cover}{Klausur SS25-N, A4c+d, 1+4 P.}
|
|
\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[a)] Geben Sie die Anzahl der Knoten und die Anzahl der Kanten der
|
|
$\Delta$Cover-Instanz in Abhängigkeit von der VertexCover-Instanz an.
|
|
\item[b)] 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}
|
|
\emph{Hinweis:} \problem{VertexCover} ist unter der ETH weder in
|
|
$2^{o(|V|)} \cdot |I|^{O(1)}$ noch in $2^{o(\sqrt{|E|})} \cdot |I|^{O(1)}$
|
|
lösbar.
|
|
|
|
\bspkopf{Lower Bounds $\Delta$Cover: Mini-Gadget}
|
|
\textbf{Instanz.} \problem{VertexCover}-Instanz mit der einen Kante
|
|
$\{u,v\}$; die Reduktion setzt auf jede Kante ein Dreieck mit neuem Knoten
|
|
$v_e$.
|
|
\begin{center}
|
|
\begin{tikzpicture}[plab/.style={font=\scriptsize,align=center},
|
|
mini/.style={circle,draw,inner sep=1.8pt}]
|
|
\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{Kern.} Wegen $|E'| = 3|E| = 3$ wäre ein
|
|
$2^{o(\sqrt{|E'|})}$-Algorithmus für $\Delta$\problem{Cover} ein
|
|
$2^{o(\sqrt{|E|})}$-Algorithmus für \problem{VertexCover} -- Widerspruch
|
|
zur ETH. Kein $2^{o(\sqrt{|E'|})}$.
|
|
|
|
|
|
\lsg
|
|
\textbf{a)} $|V'| = |V| + |E|$,\quad $|E'| = |E| + 2|E| = 3|E|$.
|
|
|
|
\textbf{b)} Zu zeigen ist, dass $\Delta$\problem{Cover} unter der ETH 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 -- Restkapazität 15.
|
|
\item $(3,3)$ einpacken -- Restkapazität 12.
|
|
\item $(11,13)$ passt nicht ($13 > 12$).
|
|
\item $(5,6)$ einpacken -- Restkapazität 6.
|
|
\item $(1,3)$ einpacken -- Restkapazität 3.
|
|
\item $(1,4)$ und $(1,5)$ passen nicht.
|
|
\end{itemize}
|
|
$\mathrm{GA} = 1 + 3 + 5 + 1 = 10$.
|
|
|
|
\textbf{b)} ModifiedGreedy vergleicht zwei Kandidaten:
|
|
\begin{itemize}
|
|
\item Greedy-Wert: $\mathrm{GA} = 10$.
|
|
\item Profitreichstes Einzel-Item: $(11,13)$ mit Profit $11$.
|
|
\item $\mathrm{MGA} = \max\{10,\ 11\} = 11$.
|
|
\end{itemize}
|
|
Die Lösung wechselt von $\{(1,1), (3,3), (5,6), (1,3)\}$ zum einzelnen
|
|
Item $(11,13)$.
|
|
\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)} ModifiedGreedy hat Güte 2.
|
|
|
|
Verbesserung durch $k$-Enumeration (Sahni):
|
|
\begin{itemize}
|
|
\item Probiere jede Vorauswahl aus höchstens $k$ Items.
|
|
\item Fülle jede Vorauswahl mit Greedy auf.
|
|
\item Gib die beste gefundene Lösung aus.
|
|
\end{itemize}
|
|
Das liefert Güte $1 + \frac1k$: $\frac32$ für $k = 2$ und $\frac43$ für
|
|
$k = 3$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{LPT anwenden}{Klausur SS24-H, A1a+b, 4+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?
|
|
\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$: $(8,0,0)$, \quad $7 \to M_2$: $(8,7,0)$, \quad $5 \to M_3$: $(8,7,5)$,
|
|
\item $4 \to M_3$: $(8,7,9)$, \quad $3 \to M_2$: $(8,10,9)$, \quad $2 \to M_1$: $(10,10,9)$,
|
|
\quad $1 \to M_3$: $(10,10,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}$. \hfill$\square$
|
|
|
|
\newpage
|
|
% ==================================================================
|
|
\katkopf{ListScheduling: scharfe Worst-Case-Instanzen}{Klausur SS24-H, A1c+d, 2+2 P.}
|
|
ListScheduling hat Güte $2 - \frac1m$.
|
|
\begin{enumerate}
|
|
\item[a)] Geben Sie eine Instanz für $m = 2$ an, bei der ListScheduling die
|
|
Güte $2 - \frac1m$ erreicht (mit OPT und LS-Wert).
|
|
\item[b)] Dasselbe für $m = 3$.
|
|
\end{enumerate}
|
|
|
|
\emph{Hinweis:} ListScheduling legt jeden Job in der gegebenen Reihenfolge auf
|
|
die aktuell am wenigsten belastete Maschine.
|
|
|
|
\lsg
|
|
\textbf{a)} $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{b)} $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 a)\; $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 b)\; $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{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$)}{Klausuren SS25-H A1 und SS23-N A1}
|
|
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)] Was berechnet Christofides? Nennen Sie die zwei
|
|
Zusatzeigenschaften der Eingabe, die er 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)} Christofides berechnet eine TSP-Rundreise. 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}{Klausuren SS25-N A1 und SS24-N A1}
|
|
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)] Was berechnet $\Delta$TSP1, und welche Bedingungen muss der
|
|
Graph erfüllen?
|
|
\item[c)] Begründen Sie die approximative Güte 2.
|
|
\item[d)] Ist das Entscheidungsproblem zum TSP in $P$? Kurze Begründung.
|
|
\item[e)] 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 (Kruskal): $A$--$B$ (1), $C$--$D$ (1), $B$--$C$ (2), $A$--$E$ (2);
|
|
Gewicht 6.
|
|
\item[(2)] Verdoppeln: Multigraph, Gewicht 12 -- alle Grade gerade.
|
|
\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)} $\Delta$TSP1 berechnet eine Rundreise (TSP-Tour). 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)} Güte 2, in drei Schritten:
|
|
\begin{itemize}
|
|
\item Entfernt man aus einer optimalen Tour eine Kante, entsteht ein
|
|
Spannbaum. $T$ ist ein minimaler Spannbaum, also
|
|
$w(T) \le \mathrm{OPT}$.
|
|
\item Der Eulerkreis nutzt jede MST-Kante zweimal. Seine Länge ist
|
|
$2\,w(T) \le 2\,\mathrm{OPT}$.
|
|
\item Abkürzen verlängert wegen der Dreiecksungleichung nicht.
|
|
\end{itemize}
|
|
Also gilt $d(R) \le 2\,\mathrm{OPT}$.
|
|
|
|
\textbf{d)} 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{e)} 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. Jeder Job belegt höchstens $\frac m2$ Maschinen, also laufen mindestens
|
|
zwei Jobs. Jeder belegt \emph{mehr} als $\frac m3$, also 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 zu c). 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 mindestens $k$ Jobs. Jeder belegt
|
|
$> \frac{m}{k+1}$, also höchstens $k$. Es laufen also stets genau $k$ Jobs, und
|
|
$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 mit $p_{\max} \le \mathrm{OPT}$ folgt
|
|
\[
|
|
\mathrm{LS} \;\le\; \mathrm{OPT} + \bigl(1 - \tfrac1k\bigr) p_j
|
|
\;\le\; \mathrm{OPT} + \bigl(1 - \tfrac1k\bigr) p_{\max}
|
|
\;\le\; \bigl(2 - \tfrac1k\bigr)\,\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 und $\redp$ ist transitiv. $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{Instanz.} Eingabe $w=\mathtt{abba}$ (ein Palindrom).
|
|
|
|
\textbf{Kern.} Die Maschine vergleicht wiederholt den ersten und den letzten
|
|
unmarkierten Buchstaben und ersetzt gleiche Paare durch $x$. Der Bandinhalt
|
|
läuft über $\mathtt{abba}\to\mathtt{xbbx}\to\mathtt{xxxx}$; kein unmarkierter
|
|
Buchstabe bleibt übrig -- die Maschine akzeptiert.
|
|
|
|
|
|
\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:} \emph{Invariante:} Nach jedem Durchlauf ist das äußerste unmarkierte Buchstabenpaar als gleich bestätigt und markiert. Der noch unmarkierte Rest ist genau dann ein Palindrom, wenn $w$ eines ist. Bei Ungleichheit eines Paares ist $w$ kein Palindrom -- verwerfen. Sonst bleibt am Ende in der Mitte ein oder kein Buchstabe übrig -- beides ist 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{Instanz.} Eingabe $w=\mathtt{0000}$ ($=0^{2^2}$, also in $L$).
|
|
|
|
\textbf{Kern.} Jeder Durchlauf ersetzt jede zweite $0$ durch $x$ und halbiert
|
|
so die Anzahl der Nullen: $\mathtt{0000}\to\mathtt{0x0x}\to\mathtt{0xxx}$.
|
|
Nie tritt eine ungerade Anzahl $>1$ auf, am Ende bleibt genau eine $0$ --
|
|
die Maschine akzeptiert.
|
|
|
|
|
|
\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}
|