lindenmannm@0
|
1 |
\documentclass[a4paper,11pt,twoside]{article}
|
lindenmannm@0
|
2 |
|
lindenmannm@0
|
3 |
\usepackage[ngerman]{babel}
|
lindenmannm@0
|
4 |
\usepackage[T1]{fontenc}
|
lindenmannm@0
|
5 |
\usepackage[latin1]{inputenc}
|
lindenmannm@0
|
6 |
\usepackage[colorlinks=true,linkcolor=black]{hyperref}
|
lindenmannm@0
|
7 |
|
lindenmannm@0
|
8 |
\usepackage{vaucanson-g}
|
lindenmannm@0
|
9 |
\usepackage{hyperref}
|
lindenmannm@0
|
10 |
\usepackage{hypcap}
|
lindenmannm@0
|
11 |
\usepackage{fancyhdr}
|
lindenmannm@0
|
12 |
\usepackage{graphicx}
|
lindenmannm@0
|
13 |
\usepackage{lastpage}
|
lindenmannm@0
|
14 |
\usepackage[cm]{fullpage}
|
lindenmannm@0
|
15 |
\usepackage{amsthm, amsmath, amsfonts}
|
lindenmannm@0
|
16 |
\usepackage{float}
|
lindenmannm@0
|
17 |
\usepackage{paralist}
|
lindenmannm@0
|
18 |
\usepackage{listings}
|
lindenmannm@0
|
19 |
\usepackage{color}
|
lindenmannm@0
|
20 |
\usepackage{bookmark}
|
lindenmannm@0
|
21 |
|
lindenmannm@0
|
22 |
% Festlegung Art der Zitierung - Havardmethode: Abkuerzung Autor + Jahr
|
lindenmannm@0
|
23 |
\bibliographystyle{alphadin}
|
lindenmannm@0
|
24 |
|
lindenmannm@0
|
25 |
\title{\underline{Exzerpt Algorithmentheorie WS10/11}}
|
lindenmannm@0
|
26 |
\author{Markus Lindenmann}
|
lindenmannm@0
|
27 |
\date{\today{} }
|
lindenmannm@0
|
28 |
|
lindenmannm@0
|
29 |
\begin{document}
|
lindenmannm@0
|
30 |
\maketitle
|
lindenmannm@0
|
31 |
|
lindenmannm@0
|
32 |
\tableofcontents
|
lindenmannm@0
|
33 |
\newpage
|
lindenmannm@0
|
34 |
|
lindenmannm@0
|
35 |
\section{Einleitung}\label{sec:intro}
|
lindenmannm@0
|
36 |
Dozent: Matthias Westermann\\
|
lindenmannm@1
|
37 |
Website: \url{http://lak.informatik.uni-freiburg.de}\\
|
lindenmannm@0
|
38 |
Klausur: 09.03.2011\\
|
lindenmannm@0
|
39 |
Hilfsmittel: Ein auf beiden Seiten handbeschriebenes DIN-A4-Blatt
|
lindenmannm@0
|
40 |
\subsection{Themen:}
|
lindenmannm@0
|
41 |
\begin{itemize}
|
lindenmannm@0
|
42 |
\item[$\bullet$] Divide and Conquer
|
lindenmannm@0
|
43 |
\item[$\bullet$] Greedy Prinzip
|
lindenmannm@0
|
44 |
\item[$\bullet$] Dynamische Programmierung
|
lindenmannm@0
|
45 |
\item[$\bullet$] Randomisierung
|
lindenmannm@0
|
46 |
\item[$\bullet$] Amortisierte Analyse
|
lindenmannm@0
|
47 |
\end{itemize}
|
lindenmannm@0
|
48 |
\subsection{Problem-/Anwendungsbereiche:}
|
lindenmannm@0
|
49 |
\begin{itemize}
|
lindenmannm@0
|
50 |
\item[$\bullet$] Geometrische Algorithmen
|
lindenmannm@0
|
51 |
\item[$\bullet$] Algebraische Algorithmen
|
lindenmannm@0
|
52 |
\item[$\bullet$] Graphenalgorithmen
|
lindenmannm@0
|
53 |
\item[$\bullet$] Datenstrukturen
|
lindenmannm@0
|
54 |
\item[$\bullet$] Internet-Algorithmen
|
lindenmannm@0
|
55 |
\item[$\bullet$] ptimierungs-Verfahren
|
lindenmannm@0
|
56 |
\item[$\bullet$] Zeichenkettenverarbeitung
|
lindenmannm@0
|
57 |
\end{itemize}
|
lindenmannm@0
|
58 |
\subsection{Literatur:}
|
lindenmannm@0
|
59 |
\bibliography{literatur}
|
lindenmannm@1
|
60 |
\nocite{*}
|
lindenmannm@0
|
61 |
|
lindenmannm@0
|
62 |
\newpage
|
lindenmannm@0
|
63 |
\section{Divide and Conquer}\label{sec:div&conq}
|
lindenmannm@0
|
64 |
\begin{itemize}
|
lindenmannm@0
|
65 |
\item[$\bullet$] Quicksort
|
lindenmannm@0
|
66 |
\item[$\bullet$] Formulierung und Analyse des Prinzips
|
lindenmannm@0
|
67 |
\item[$\bullet$] Geometrisches Devide and Conquer
|
lindenmannm@0
|
68 |
\begin{itemize}
|
lindenmannm@0
|
69 |
\item[-] Closest-Pair
|
lindenmannm@0
|
70 |
\item[-] Segmentschnitt
|
lindenmannm@0
|
71 |
\end{itemize}
|
lindenmannm@0
|
72 |
\end{itemize}
|
lindenmannm@0
|
73 |
|
lindenmannm@0
|
74 |
\subsection{Formulierung des Divide and Conquer Prinzips}
|
lindenmannm@0
|
75 |
D\&C Verfahren zur Lösung eines Problems der Größe $n$
|
lindenmannm@0
|
76 |
\begin{itemize}
|
lindenmannm@0
|
77 |
\item[1.] Divide\\$n>2$: Teile das Problem in $k$ Teilprobleme der Größe $n_1,\ldots n_k$ ($k\geq2$)\\$n\leq c:$ Löse das Problem direkt
|
lindenmannm@0
|
78 |
\item[2.] Conquer\\Löse die $k$ Teilprobleme auf dieselbe Art (rekursiv)
|
lindenmannm@0
|
79 |
\item[3.] Merge\\Füge die berechneten Teillösungen zu einer Gesamtlösung zusammen
|
lindenmannm@0
|
80 |
\end{itemize}
|
lindenmannm@0
|
81 |
|
lindenmannm@0
|
82 |
\subsection{Quicksort}
|
lindenmannm@0
|
83 |
Wähle beliebiges Pivot Element $v$ und sortiere alle Elemente aus der Menge, die größer sind als $v$ rechts von $v$ ein, die anderen links. Verfahre im selben Muster mit den neuen Teilmengen links und rechts des Pivot Elements. Wenn die zu sortierende Folge $F$ nur ein Element beinhaltet, gebe $F$ zurück.
|
lindenmannm@0
|
84 |
|
lindenmannm@0
|
85 |
\subsubsection{Analyse}
|
lindenmannm@0
|
86 |
$T(n)$ - maximale Anzahl von Schritten, um ein Problem der Größe $n$ zu lösen.
|
lindenmannm@0
|
87 |
\[T(n)=\begin{cases}n\neq c&a \\ n>c&T(n_1+\ldots+T(n_k)+\text{Divide- und Mergeaufwand}\end{cases}\]
|
lindenmannm@0
|
88 |
Best Case: $k=2, n_1=n_2=\frac{n}{2}$\\
|
lindenmannm@0
|
89 |
Divide- und Mergeaufwand: $DM(n)$\\
|
lindenmannm@0
|
90 |
$T(1)=a$\\
|
lindenmannm@0
|
91 |
$T(n)=2T(\frac{n}{2})+DM(n)$
|
lindenmannm@0
|
92 |
|
lindenmannm@0
|
93 |
\subsection{Nächste Paare}
|
lindenmannm@0
|
94 |
Eingabe: $n$ Punkte in Ebene\\
|
lindenmannm@0
|
95 |
Ausgabe: Punkt-Paar $q,r$ mit geringstem Abstand\\
|
lindenmannm@0
|
96 |
Abstand: $d(q,r)$ bechreibt Abstand zwischen Punkten $q$ und $r$
|
lindenmannm@0
|
97 |
\subsubsection{Algorithmus}
|
lindenmannm@0
|
98 |
\begin{itemize}
|
lindenmannm@0
|
99 |
\item[$\bullet$] sortiere Punktmenge nach x-Koordinate
|
lindenmannm@0
|
100 |
\item[$\bullet$] Teile Punktmenge in der Mitte L in die Mengen Q und R
|
lindenmannm@0
|
101 |
\item[$\bullet$] Löse rekursiv auf Q und R
|
lindenmannm@0
|
102 |
\item[$\bullet$] Sortiere Punkte nach y-Koordinate
|
lindenmannm@0
|
103 |
\item[$\bullet$] Teste alle Paare, deren Abstand in der Sortierung kleiner als 16 ist (siehe unten)
|
lindenmannm@0
|
104 |
\item[$\bullet$] Füge zusammen
|
lindenmannm@0
|
105 |
\end{itemize}
|
lindenmannm@0
|
106 |
|
lindenmannm@0
|
107 |
$\delta=$ Minimum der Teillösungen\\
|
lindenmannm@0
|
108 |
Gibt es $q\in Q$ und $r\in R$ mit $d(q,r)<\delta$, dann sind sowohl $q$ als auch $r$ höchstens $\delta$ von $L$ (Mitte) entfernt.\\
|
lindenmannm@0
|
109 |
\textbf{Problem:} alle Punkte können innerhalb der $\delta$-Zone liegen\\
|
lindenmannm@0
|
110 |
\textbf{Lösung:}\begin{itemize}
|
lindenmannm@0
|
111 |
\item[$\bullet$] Sortiere Punkte in $\delta$ Zone nach $y$-Abstand
|
lindenmannm@0
|
112 |
\item[$\bullet$] Liegen in dieser Sortierung mehr als $c$ Punkte zwischen $q$ und $r$, dann kann $(q,r)$ nicht nächstes Paar sein
|
lindenmannm@0
|
113 |
\end{itemize}
|
lindenmannm@0
|
114 |
|
lindenmannm@0
|
115 |
Dies kann für $c=15$ bewiesen werden (vgl. Abbildung \ref{cl_pair}):
|
lindenmannm@0
|
116 |
\begin{itemize}
|
lindenmannm@0
|
117 |
\item[$\bullet$] Seien min. 15 Punkte zwischen $q$ und $r$
|
lindenmannm@0
|
118 |
\item[$\bullet$] Dann sind mindestens 3 Reihen Quadrate zwischen $q,r$, weil in jedem Quadrat höchstens ein Punkt ist.
|
lindenmannm@0
|
119 |
\item[$\rightarrow$] Dann muss $d(q,r)$ mindestens $\frac{3}{2}\delta > \delta$ sein.
|
lindenmannm@0
|
120 |
\end{itemize}
|
lindenmannm@0
|
121 |
|
lindenmannm@0
|
122 |
\begin{figure}[H]
|
lindenmannm@0
|
123 |
\centering
|
lindenmannm@0
|
124 |
\includegraphics[scale=0.5]{img/cl_pair}
|
lindenmannm@0
|
125 |
\caption{Nächste Paare: Prüf Distanz}
|
lindenmannm@0
|
126 |
\label{cl_pair}
|
lindenmannm@0
|
127 |
\end{figure}
|
lindenmannm@0
|
128 |
|
lindenmannm@0
|
129 |
\subsubsection{Analyse}
|
lindenmannm@0
|
130 |
\[T(n)=\begin{cases}n\leq3&a \\ n>3&2T(\frac{n}{2})+an\end{cases}\]
|
lindenmannm@0
|
131 |
\[T(n)\leq an \log n \]
|
lindenmannm@0
|
132 |
|
lindenmannm@0
|
133 |
\subsection{Segmentschnitt}
|
lindenmannm@0
|
134 |
Eingabe: Menge S bestehend aus vertikalen Segmenten und Endpunkten vn horizontalen Segmenten\\
|
lindenmannm@0
|
135 |
Ausgabe: Alle Schnittpunkte von vertikalen Segmenten mit horizontalen Segmenten, von denen mindesens ein Endpunkt in S ist
|
lindenmannm@0
|
136 |
|
lindenmannm@0
|
137 |
\subsubsection{Algorithmus}
|
lindenmannm@0
|
138 |
\textbf{Divide \& Conquer:}\\Fallunterscheidung
|
lindenmannm@0
|
139 |
\begin{itemize}
|
lindenmannm@0
|
140 |
\item[1.] $\left| S\right| > 1$:\\ Teile S mittels einer vertikalen Gerade G in 2 gleichgroße Mengen $S_1$ (links von G) und $S_2$ (rechts von G). Führe rekursiv auf beiden Hälften aus.
|
lindenmannm@0
|
141 |
\item[2.] else: S enthält keine Schnitte
|
lindenmannm@0
|
142 |
\end{itemize}
|
lindenmannm@0
|
143 |
|
lindenmannm@0
|
144 |
\textbf{Merge}\\
|
lindenmannm@0
|
145 |
Bilde L(S), R(S) und V(S) (Definition am Beispiel $i=1,2$ berechnet: $S=S_1\cup S_2$):
|
lindenmannm@0
|
146 |
\begin{itemize}
|
lindenmannm@0
|
147 |
\item[$\bullet$] L(S): y-Koordinate aller linken Endpunkte in S, deren rechter Partner nicht in S\\$=L(S_2)\cup(L(S_1)-R(S_2))$
|
lindenmannm@0
|
148 |
\item[$\bullet$] R(S): y-Koordinate aller rechten Endpunkte in S, deren linker Partner nicht in S\\$=R(S_1)\cup(R(S_2)-L(S_1))$
|
lindenmannm@0
|
149 |
\item[$\bullet$] V(S): y-Intervalle der vertikalen Segmente in S\\$=V(S_1)\cup V(S_2)$
|
lindenmannm@0
|
150 |
\end{itemize}
|
lindenmannm@0
|
151 |
L,R sortiert nach steigender y-Koordinate\\
|
lindenmannm@0
|
152 |
V sortiert nach steigendem unteren Endpunkt\\
|
lindenmannm@0
|
153 |
\medskip
|
lindenmannm@0
|
154 |
|
lindenmannm@0
|
155 |
\textbf{Basisfälle}\\
|
lindenmannm@0
|
156 |
S enthält nur ein Element s. Fallunterscheidung:
|
lindenmannm@0
|
157 |
\begin{itemize}
|
lindenmannm@0
|
158 |
\item[1.] $s=(x,y)$ ist ein linker Endpunkt:\\$L(S)=\{y\},\qquad R(S)=\emptyset,\qquad V(S)=\emptyset$
|
lindenmannm@0
|
159 |
\item[2.] $s=(x,y)$ ist ein rechter Endpunkt:\\$L(S)=\emptyset,\qquad R(S)=\{y\},\qquad V(S)=\emptyset$
|
lindenmannm@0
|
160 |
\item[3.] $s=(x,y_1,y_2)$ ist ein vertikales Segment:\\$L(S)=\emptyset,\qquad R(S)=\emptyset,\qquad V(S)=\{[y_1,y_2]\}$
|
lindenmannm@0
|
161 |
\end{itemize}
|
lindenmannm@0
|
162 |
|
lindenmannm@0
|
163 |
\subsubsection{Analyse}
|
lindenmannm@0
|
164 |
Eingabe wird Anfangs sortiert und in Array gespeichert
|
lindenmannm@0
|
165 |
\[T(n)=2T(\frac{n}{2}+an+\text{Größe der Ausgabe}\]
|
lindenmannm@0
|
166 |
\[T(1)=O(1)\]
|
lindenmannm@0
|
167 |
\[O(n \log n + k \mid k=\#Schnittpunkte\]
|
lindenmannm@0
|
168 |
|
lindenmannm@0
|
169 |
\subsection{Polynomprodukt und Fast Fourier-Transformation}
|
lindenmannm@0
|
170 |
|
lindenmannm@0
|
171 |
|
lindenmannm@1
|
172 |
\newpage
|
lindenmannm@0
|
173 |
\section{Randomisierung}
|
lindenmannm@0
|
174 |
\subsection{Hashing}
|
lindenmannm@0
|
175 |
|
lindenmannm@0
|
176 |
\newpage
|
lindenmannm@0
|
177 |
\section{Amortisierte Analyse}
|
lindenmannm@0
|
178 |
\subsection{Binomial Heaps}
|
lindenmannm@0
|
179 |
\subsection{Fibonacci Heaps}
|
lindenmannm@0
|
180 |
\subsection{Union Find}
|
lindenmannm@0
|
181 |
|
lindenmannm@0
|
182 |
\newpage
|
lindenmannm@0
|
183 |
\section{Greedy}
|
lindenmannm@1
|
184 |
\subsection{Kürzeste (billigste) Wege}
|
lindenmannm@0
|
185 |
|
lindenmannm@0
|
186 |
\newpage
|
lindenmannm@1
|
187 |
\section{Bin Packing}
|
lindenmannm@1
|
188 |
\textbf{Problembeschreibung:}\\
|
lindenmannm@1
|
189 |
Man hat $n$ Objekte verschiedener Größe mit $0<s_i\leq1\mid 1\leq i\leq n$. Gesucht ist die kleinst mögliche Anzahl an Kisten (Bins) der Größe 1, mit der alle Objekte verpackt werden können.
|
lindenmannm@1
|
190 |
\subsection{Online Verfahren}
|
lindenmannm@1
|
191 |
Jedes (ankommende) Objekt muss verpackt sein, bevor das nächste Objekt betrachtet wird. Ein Objekt verbleibt in derjenigen Kiste, in die es zuerst gepackt wird.\\
|
lindenmannm@1
|
192 |
Kein Online Bin Packing Verfahren kann stets eine optimale Lösung finden!\\
|
lindenmannm@1
|
193 |
\textbf{Satz 1}: Es gibt Eingaben, die jeden Online Bin Packing Algorithmus zwingen, wenigstens $\frac{4}{3} OPT$ Bins zu verwenden, wobei $OPT$ die minimal mögliche Binzahl ist.\\
|
lindenmannm@1
|
194 |
\textbf{Beweis} Annahme: Online Bin Packing Algorithmus benötigt stets weniger als $\frac{4}{3}OPT$ Bins.\\
|
lindenmannm@1
|
195 |
Es wird eine Eingabe mit $2m$ Objekten angenommen. Die ersten $m$ sind um $\epsilon$ kleiner als $\frac{1}{2}$, die zweiten $m$ um $\epsilon$ größer. Die optimale Lösung sind $m$ Kisten, da immer ein großes mit einem kleinen Paket kombiniert werden kann. Nun teilt man die Analyse in zwei Zeitpunkte: nach $m$ Objekten und nach $2m$ Objekten. Laut Annahme gilt nach nach $m$ Objekten, dass die Anzahl der Bins $b$ nur maximal $\frac{4}{3} OPT$ groß sein darf. Mit $OPT=\frac{m}{2}$ gilt somit: $b=\frac{4}{3}\cdot\frac{m}{2}=\frac{2}{3}m$. Sei $b=b_1+b_2\mid b_1=\#$Bins mit einem Objekt, $b_2=\#$Bins mit zwei Objekten, so folgt $b_1+2b_2=m\implies b_1=m-2b_2\implies b=b_1+b_2=m-b_2$. Nach $2m$ Objekten ist $OPT=m$, wie zuvor beschrieben. $b_1$ Bins können zu diesem Zeitpunkt mit Objekten des zweiten Bereichs gefüllt werden, für die verbleibenden muss man neue Bins öffnen. Die Anzahl der neu zu öffnenden beträgt damit genau $b_2\implies \#$Bins $\geq b+m-b_1=m+b_2$. Die Annahme besagt $m+b_2\leq\#$Bins $<\frac{4}{3}m \wedge b_2<\frac{m}{3}$. Dies ist nur möglich, wenn $b=m-b_2>\frac{2}{3}m$ - Dies führt zu einem \underline{Widerspruch}, da $b$ zum Zeitpunkt 1, nach $m$ Objekten $<\frac{2}{3}m$ sein muss.
|
lindenmannm@1
|
196 |
|
lindenmannm@1
|
197 |
\subsubsection{Next Fit (NF)}
|
lindenmannm@1
|
198 |
Verpacke das nächste Objekt in dieselbe Kiste wie das vorherige, wenn es dort noch hineinpasst, sonst öffne eine neue Kiste und verpacke es dort.\\
|
lindenmannm@1
|
199 |
\textbf{Satz 2}: (a) Für alle Inputfolgen $I$ gilt: $NF(I)\leq2OPT(I)$. (b) Es gibt Inputfolgen I mit $NF(I)\geq2OPT(I)-2$.\\
|
lindenmannm@1
|
200 |
\textbf{Beweis}\\
|
lindenmannm@1
|
201 |
(a) Betrachte zwei beliebige aufeinanderfolgende Kisten $B_{2k-1}, B_{2k}$. Man weiß, dass die beinhalteten Objekte eine Summengröße $>1$ haben, sonst wären selbige in einer Kiste. Daraus folgt, man kann nicht mehr als die doppelte Anzahl an Kisten als beim Optimum erreichen!\\
|
lindenmannm@1
|
202 |
(b) Inputfolge: $0.5, \frac{2}{n}, 0.5, \frac{2}{n}, 0.5, \frac{2}{n}, \ldots 0.5, \frac{2}{n}$.\\Next-Fit liefert nun immer Bins gefüllt mit $0.5 + \frac{2}{n}$. Darausfolgt $NF(I)=\frac{n}{2}$ und $OPT=\frac{n}{4}+1$ (weil $\frac{n}{2}$ mal 0.5er Objekte in $=\frac{n}{4}$ Kisten passen und $\frac{n}{2}$ $\frac{2}{n}$er Objekte in eine Kiste passen)\\
|
lindenmannm@1
|
203 |
Laufzeit für Inputfolgen der Länge $n$: NF $O(n)$
|
lindenmannm@1
|
204 |
\subsubsection{First-Fit (FF)}
|
lindenmannm@1
|
205 |
Packe nächstes Objekt in die erste Kiste, in die es noch hineinpasst, wenn es eine solche Kiste gibt, sonst in eine neue Kiste.\\
|
lindenmannm@1
|
206 |
\textbf{Beobachtung}: Zu jedem Zeitpunkt kann es höchstens eine Kiste geben, die weniger als halb voll ist. ($\implies FF(I) \leq 2OPT(I)$)\\
|
lindenmannm@1
|
207 |
\textbf{Satz 3}: (a) Für alle Inputfolgen $I$ gilt $FF(I)\leq \lceil\frac{17}{10} OPT(I)\rceil$. (b) Es gibt Inputfolgen $I$ mit $FF(I)\geq\frac{17}{10}(OPT(I)-1)$. (b') Es gibt Inputfolgen $I$ mit $FF(I)=\frac{10}{6}OPT(I)$.\\
|
lindenmannm@1
|
208 |
\textbf{Beweis}\\
|
lindenmannm@1
|
209 |
(b') Inputfolge der Länge $3\cdot6m$. Dabei je $6m$ Objekte der Größen $\frac{1}{7}+\epsilon, \frac{1}{3}+\epsilon, \frac{1}{2}+\epsilon$, welche in gegebener Reihenfolge in Gruppen eingegeben werden. FF liefert hierbei $m$ Kisten gefüllt mit den Objekten der Größe $\frac{1}{7}+\epsilon$ (jeweils 6 pro Kiste) gefolgt von $\frac{6m}{2}=3m$ Kisten gefüllt mit Objekten der Größe $\frac{1}{3}+\epsilon$ (jeweils 2 pro Kiste) und schlussendlich $6m$ Kisten mit je einem Objekt der Größe $\frac{1}{2}+\epsilon$. Das macht in der Summe $10m$ Kisten. Die optimale Lösung packt je ein Objekt jeder Größe in eine Kiste und benötigt somit nur $6m$ Kisten.\\
|
lindenmannm@1
|
210 |
Laufzeit für Inputfolgen der Länge $n$: FF $O(n^2) \rightarrow O(n \log n)$
|
lindenmannm@1
|
211 |
\subsubsection{Best-Fit (BF)}
|
lindenmannm@1
|
212 |
Verpacke das nächste Objekt in diejenige Kiste, in die es am besten passt (d.h. den geringsten Platz ungenutzt lässt).
|
lindenmannm@1
|
213 |
Verhalten von BF ähnlich zu FF.
|
lindenmannm@1
|
214 |
Laufzeit für Inputfolgen der Länge $n$: BF $O(n^2) \rightarrow O(n \log n)$
|
lindenmannm@1
|
215 |
\subsection{Offline Verfahren}
|
lindenmannm@1
|
216 |
\underline{NP-schwieriges Problem! Entscheidungsproblem ist NP-vollständig!}\\
|
lindenmannm@1
|
217 |
Zunächst wird die Anzahl $n$ und alle $n$ Objekte vorgegeben. Dann beginnt die Verpackung.\\
|
lindenmannm@1
|
218 |
$n$ und $s_1, ..., s_n$ sind gegeben, bevor die Verpackung beginnt!\\
|
lindenmannm@1
|
219 |
$\rightarrow$ \underline{Optimale Verpackung} kann durch erschöpfende Suche bestimmt werden. ABER: Benötigt exponentielle Zeit! Daher Approximimationsalgorithmen, die schneller sind aber dafür unter Umständen nicht optimal!\\
|
lindenmannm@1
|
220 |
Idee für Offline Approximationsalgorithmen: Sortiere die Objekte zunächst nach abnhemender Größe und verpacke größere Objekte zuerst!
|
lindenmannm@1
|
221 |
\subsubsection{First Fit Decreasing (FFD oder FFNI)}
|
lindenmannm@1
|
222 |
\textbf{Lemma 1}: Sei $I$ eine Folge von $n$ Objekten mit Größen $s_1\geq s_2\geq\ldots\geq s_n$ und sei $m=OPT(I)$. Dann haben alle von FFD in den Bins $B_{m+1},B_{m+2},\ldots,B_{FFD(I)}$ verpackten Objekte eine Größe von höchstens $\frac{1}{3}$.\\
|
lindenmannm@1
|
223 |
\textbf{Beweis}: \$\$\$TODO:Elsässer hat das in seiner VL gemacht - aber hässlich lang\$\$\$\\
|
lindenmannm@1
|
224 |
\textbf{Lemma 2}: Sei $I$ eine Folge von $n$ Objekten mit Größen $s_1\geq s_2\geq\ldots\geq s_n$ und sei $m=OPT(I)$. Dann ist die Anzahl der Objekte, die FFD in die Kisten $B_{m+1},B_{m+2},\ldots,B_{FFD(I)}$ verpackt, höchstens $m-1$.\\
|
lindenmannm@1
|
225 |
\textbf{Beweis}: Annahme: Es gibt mehr als $m-1$ Objekte. $x_1,\ldots,x_m$ in $I$, die FFD in extra Kisten verpacken. Dies führt zu einem Widerspruch. \$\$\$TODO:Warum?\$\$\$\\
|
lindenmannm@1
|
226 |
\textbf{Satz}: Für alle Inputfolgen I gilt $FFD(I)\leq(4 OPT(I)+\frac{1}{3})$.\\
|
lindenmannm@1
|
227 |
\textbf{Satz}:
|
lindenmannm@1
|
228 |
\begin{itemize}
|
lindenmannm@1
|
229 |
\item[1.] Für alle Inputfolgen $I$ gilt: $FFD(I)\leq \frac{11}{9} OPT(I)+4$
|
lindenmannm@1
|
230 |
\item[2.] Es gibt Inputfolgen $I$ mit: $FFD(I)=\frac{11}{9}OPT(I)$.
|
lindenmannm@1
|
231 |
\end{itemize}
|
lindenmannm@1
|
232 |
\textbf{Beweis}: \$\$\$TODO\$\$\$
|
lindenmannm@1
|
233 |
\subsubsection{Best Fit Decreasing (BFD)}
|
lindenmannm@1
|
234 |
Nicht im Script???
|
lindenmannm@1
|
235 |
|
lindenmannm@1
|
236 |
\newpage
|
lindenmannm@1
|
237 |
\section{Dynamische Programmierung}
|
lindenmannm@1
|
238 |
|
lindenmannm@1
|
239 |
|
lindenmannm@1
|
240 |
\newpage
|
lindenmannm@1
|
241 |
\begin{appendix}
|
lindenmannm@1
|
242 |
\section{Landau-Symbole}
|
lindenmannm@0
|
243 |
\begin{figure}[H]
|
lindenmannm@0
|
244 |
\centering
|
lindenmannm@0
|
245 |
\includegraphics[scale=0.45]{img/landau_sym}
|
lindenmannm@0
|
246 |
\caption{Definition der Landau Symbole}
|
lindenmannm@0
|
247 |
\label{fig:landau_sym}
|
lindenmannm@0
|
248 |
\end{figure}
|
lindenmannm@1
|
249 |
\end{appendix}
|
sawine@2
|
250 |
\end{document}
|