BinPacking

This commit is contained in:
Marco Ammon 2020-10-16 21:02:54 +02:00
parent fc38c96dac
commit 34a09b247d
2 changed files with 29 additions and 0 deletions

Binary file not shown.

View File

@ -106,6 +106,10 @@
\newcommand{\vertexcover}{\problem{VertexCover}} \newcommand{\vertexcover}{\problem{VertexCover}}
\newcommand{\greedyvc}{\algo{GreedyVC}} \newcommand{\greedyvc}{\algo{GreedyVC}}
% BinPacking
\newcommand{\binpacking}{\problem{BinPacking}}
\newcommand{\nextfit}{\algo{NextFit}}
% Beweisumgebungen % Beweisumgebungen
\newtheorem*{satz}{Satz} \newtheorem*{satz}{Satz}
\newtheorem*{lemma}{Lemma} \newtheorem*{lemma}{Lemma}
@ -237,6 +241,14 @@ Spezialfall von \setcover:
\ziel &= \min \ziel &= \min
\end{align*} \end{align*}
\subsubsection{Das Behälterproblem \binpacking}
\begin{align*}
\domain &= \{M \mid M = \left\{a_1,\dots, a_n\right\}, 1 \ge s(a_1)\ge\dots\ge s(a_n)\ge 0\}\\
\solution(M) &= \{ B \mid B = \{B_1, \dots,B_k\}, \cupdot_{B_i\in B} B_i = M, \forall B_i \in B: s(B_i)\le 1\}\\
f(M) &= \abs{M}\\
\ziel &= \min
\end{align*}
\subsection{$t(n)$-Zeit-Approximationsalgorithmus} \subsection{$t(n)$-Zeit-Approximationsalgorithmus}
Berechnet ein Algorithmus $A$ in Zeit $t(\abs{I})$ eine Ausgabe $\sigma_I^A \in \solution(I)$ für Eingabe $I \in \domain$, wird er als $t(n)$-Zeit-Approximationsalgorithmus bezeichnet. Es gilt die Schreibweise $A(I) = f(\sigma_I^A)$. Berechnet ein Algorithmus $A$ in Zeit $t(\abs{I})$ eine Ausgabe $\sigma_I^A \in \solution(I)$ für Eingabe $I \in \domain$, wird er als $t(n)$-Zeit-Approximationsalgorithmus bezeichnet. Es gilt die Schreibweise $A(I) = f(\sigma_I^A)$.
@ -649,6 +661,23 @@ Sei $\Pi$ ein Optimierungsproblem und $A$ ein Approximationsalgorithmus für $\P
Wenn \greedyvc{} zwei Knoten hinzufügt, könnte es auch ausreichen, nur eine einzelne Kante aufzunehmen. Wenn \greedyvc{} zwei Knoten hinzufügt, könnte es auch ausreichen, nur eine einzelne Kante aufzunehmen.
\end{proof} \end{proof}
\section{\nextfit{} für \binpacking}
\begin{algorithmic}[1]
\State $k = 1$
\State $B_1 = \emptyset$
\ForAll{$i \in \{1,\dots,n\}$}
\If{$s(a_i)+ s(B_k) > 1$}
\State $k = k+1$
\State $B_k = \emptyset$
\EndIf
\State $B_k = B_k \cup \{a_i\}$
\EndFor
\State \Return $(B_1,\dots,B_k)$
\end{algorithmic}
\begin{satz}
\nextfit{} approximiert \binpacking mit relativer Gütegarantie $\rho_\nextfit = 2$.
\end{satz}
\section{Christofides' Algorithmus \algo{CH} für $\deltatsp$} \section{Christofides' Algorithmus \algo{CH} für $\deltatsp$}
Ein Matching $M$ eines kantengewichteten Graphen $G$ ist ein Teilgraph von $G$ mit $\Delta(G) \le 1$. Ist $G$ ein vollständiger Graph mit $\abs{V}$ gerade, dann gibt es perfekte Matchings. In einem perfekten Matching haben alle Knoten genau den Grad 1. Ein perfektes Matching mit kleinstmöglichem Gewicht wird als leichtestes Matching bezeichnet. Ein solches leichtestes Matching kann in $\bigO(n^{2.5}\cdot (\log n)^4)$ berechnet werden. Ein Matching $M$ eines kantengewichteten Graphen $G$ ist ein Teilgraph von $G$ mit $\Delta(G) \le 1$. Ist $G$ ein vollständiger Graph mit $\abs{V}$ gerade, dann gibt es perfekte Matchings. In einem perfekten Matching haben alle Knoten genau den Grad 1. Ein perfektes Matching mit kleinstmöglichem Gewicht wird als leichtestes Matching bezeichnet. Ein solches leichtestes Matching kann in $\bigO(n^{2.5}\cdot (\log n)^4)$ berechnet werden.