exzerpt.tex
author Eugen Sawin <sawine@me73.com>
Tue, 22 Feb 2011 18:58:21 +0100
changeset 2 7b0f43733557
parent 1 ceae9bb06f42
permissions -rw-r--r--
Added example hacks for some algorithms.
     1 \documentclass[a4paper,11pt,twoside]{article}
     2 
     3 \usepackage[ngerman]{babel}
     4 \usepackage[T1]{fontenc}
     5 \usepackage[latin1]{inputenc}
     6 \usepackage[colorlinks=true,linkcolor=black]{hyperref}
     7 
     8 \usepackage{vaucanson-g}
     9 \usepackage{hyperref}
    10 \usepackage{hypcap}
    11 \usepackage{fancyhdr}
    12 \usepackage{graphicx}
    13 \usepackage{lastpage}
    14 \usepackage[cm]{fullpage}
    15 \usepackage{amsthm, amsmath, amsfonts}
    16 \usepackage{float}
    17 \usepackage{paralist}
    18 \usepackage{listings}
    19 \usepackage{color}
    20 \usepackage{bookmark}
    21 
    22 % Festlegung Art der Zitierung - Havardmethode: Abkuerzung Autor + Jahr
    23 \bibliographystyle{alphadin}
    24 
    25 \title{\underline{Exzerpt Algorithmentheorie WS10/11}}
    26 \author{Markus Lindenmann}
    27 \date{\today{} }
    28 
    29 \begin{document}
    30     \maketitle
    31     
    32     \tableofcontents
    33     \newpage
    34 
    35     \section{Einleitung}\label{sec:intro}
    36         Dozent:     Matthias Westermann\\
    37         Website:    \url{http://lak.informatik.uni-freiburg.de}\\
    38         Klausur:    09.03.2011\\
    39         Hilfsmittel:    Ein auf beiden Seiten handbeschriebenes DIN-A4-Blatt
    40         \subsection{Themen:}
    41             \begin{itemize}
    42                 \item[$\bullet$] Divide and Conquer
    43                 \item[$\bullet$] Greedy Prinzip
    44                 \item[$\bullet$] Dynamische Programmierung
    45                 \item[$\bullet$] Randomisierung
    46                 \item[$\bullet$] Amortisierte Analyse
    47             \end{itemize}
    48         \subsection{Problem-/Anwendungsbereiche:}
    49             \begin{itemize}
    50                 \item[$\bullet$] Geometrische Algorithmen
    51                 \item[$\bullet$] Algebraische Algorithmen
    52                 \item[$\bullet$] Graphenalgorithmen
    53                 \item[$\bullet$] Datenstrukturen
    54                 \item[$\bullet$] Internet-Algorithmen
    55                 \item[$\bullet$] ptimierungs-Verfahren
    56                 \item[$\bullet$] Zeichenkettenverarbeitung
    57             \end{itemize}
    58         \subsection{Literatur:}
    59             \bibliography{literatur}
    60             \nocite{*}
    61     
    62     \newpage
    63     \section{Divide and Conquer}\label{sec:div&conq}
    64         \begin{itemize}
    65             \item[$\bullet$] Quicksort
    66             \item[$\bullet$] Formulierung und Analyse des Prinzips
    67             \item[$\bullet$] Geometrisches Devide and Conquer
    68             \begin{itemize}
    69                 \item[-] Closest-Pair
    70                 \item[-] Segmentschnitt
    71             \end{itemize}
    72         \end{itemize}
    73         
    74         \subsection{Formulierung des Divide and Conquer Prinzips}
    75             D\&C Verfahren zur Lösung eines Problems der Größe $n$
    76             \begin{itemize}
    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
    78                 \item[2.]   Conquer\\Löse die $k$ Teilprobleme auf dieselbe Art (rekursiv)
    79                 \item[3.]   Merge\\Füge die berechneten Teillösungen zu einer Gesamtlösung zusammen
    80             \end{itemize}
    81         
    82         \subsection{Quicksort}
    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.
    84 			
    85             \subsubsection{Analyse}
    86                 $T(n)$ - maximale Anzahl von Schritten, um ein Problem der Größe $n$ zu lösen.
    87                 \[T(n)=\begin{cases}n\neq c&a \\ n>c&T(n_1+\ldots+T(n_k)+\text{Divide- und Mergeaufwand}\end{cases}\]
    88                 Best Case: $k=2, n_1=n_2=\frac{n}{2}$\\
    89                 Divide- und Mergeaufwand: $DM(n)$\\
    90                 $T(1)=a$\\
    91                 $T(n)=2T(\frac{n}{2})+DM(n)$
    92         
    93         \subsection{Nächste Paare}
    94             Eingabe:    $n$ Punkte in Ebene\\
    95             Ausgabe:    Punkt-Paar $q,r$ mit geringstem Abstand\\
    96             Abstand:    $d(q,r)$ bechreibt Abstand zwischen Punkten $q$ und $r$
    97             \subsubsection{Algorithmus}
    98                 \begin{itemize}
    99                     \item[$\bullet$] sortiere Punktmenge nach x-Koordinate
   100                     \item[$\bullet$] Teile Punktmenge in der Mitte L in die Mengen Q und R
   101                     \item[$\bullet$] Löse rekursiv auf Q und R
   102                     \item[$\bullet$] Sortiere Punkte nach y-Koordinate
   103                     \item[$\bullet$] Teste alle Paare, deren Abstand in der Sortierung kleiner als 16 ist (siehe unten)
   104                     \item[$\bullet$] Füge zusammen
   105                 \end{itemize}
   106             
   107                 $\delta=$ Minimum der Teillösungen\\
   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.\\
   109                 \textbf{Problem:} alle Punkte können innerhalb der $\delta$-Zone liegen\\
   110                 \textbf{Lösung:}\begin{itemize}
   111                     \item[$\bullet$] Sortiere Punkte in $\delta$ Zone nach $y$-Abstand
   112                     \item[$\bullet$] Liegen in dieser Sortierung mehr als $c$ Punkte zwischen $q$ und $r$, dann kann $(q,r)$ nicht nächstes Paar sein
   113                 \end{itemize}
   114                 
   115                 Dies kann für $c=15$ bewiesen werden (vgl. Abbildung \ref{cl_pair}):
   116                 \begin{itemize}
   117                     \item[$\bullet$] Seien min. 15 Punkte zwischen $q$ und $r$
   118                     \item[$\bullet$] Dann sind mindestens 3 Reihen Quadrate zwischen $q,r$, weil in jedem Quadrat höchstens ein Punkt ist.
   119                     \item[$\rightarrow$] Dann muss $d(q,r)$ mindestens $\frac{3}{2}\delta > \delta$ sein.
   120                 \end{itemize}
   121                 
   122                 \begin{figure}[H]
   123                     \centering
   124                     \includegraphics[scale=0.5]{img/cl_pair}
   125                     \caption{Nächste Paare: Prüf Distanz}
   126                     \label{cl_pair}
   127                 \end{figure}
   128 
   129             \subsubsection{Analyse}
   130                 \[T(n)=\begin{cases}n\leq3&a \\ n>3&2T(\frac{n}{2})+an\end{cases}\]
   131                 \[T(n)\leq an \log n \]
   132 
   133         \subsection{Segmentschnitt}
   134             Eingabe:    Menge S bestehend aus vertikalen Segmenten und Endpunkten vn horizontalen Segmenten\\
   135             Ausgabe:    Alle Schnittpunkte von vertikalen Segmenten mit horizontalen Segmenten, von denen mindesens ein Endpunkt in S ist
   136             
   137             \subsubsection{Algorithmus}
   138                 \textbf{Divide \& Conquer:}\\Fallunterscheidung
   139                 \begin{itemize}
   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.
   141                     \item[2.] else: S enthält keine Schnitte
   142                 \end{itemize}
   143                 
   144                 \textbf{Merge}\\
   145                 Bilde L(S), R(S) und V(S) (Definition am Beispiel $i=1,2$ berechnet: $S=S_1\cup S_2$):
   146                 \begin{itemize}
   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))$
   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))$
   149                     \item[$\bullet$] V(S): y-Intervalle der vertikalen Segmente in S\\$=V(S_1)\cup V(S_2)$
   150                 \end{itemize}
   151                 L,R sortiert nach steigender y-Koordinate\\
   152                 V sortiert nach steigendem unteren Endpunkt\\
   153                 \medskip
   154                 
   155                 \textbf{Basisfälle}\\
   156                 S enthält nur ein Element s. Fallunterscheidung:
   157                 \begin{itemize}
   158                     \item[1.] $s=(x,y)$ ist ein linker Endpunkt:\\$L(S)=\{y\},\qquad R(S)=\emptyset,\qquad V(S)=\emptyset$
   159                     \item[2.] $s=(x,y)$ ist ein rechter Endpunkt:\\$L(S)=\emptyset,\qquad R(S)=\{y\},\qquad V(S)=\emptyset$
   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]\}$
   161                 \end{itemize}
   162             
   163             \subsubsection{Analyse}
   164                 Eingabe wird Anfangs sortiert und in Array gespeichert
   165                 \[T(n)=2T(\frac{n}{2}+an+\text{Größe der Ausgabe}\]
   166                 \[T(1)=O(1)\]
   167                 \[O(n \log n + k \mid k=\#Schnittpunkte\]
   168         
   169         \subsection{Polynomprodukt und Fast Fourier-Transformation}
   170             
   171             
   172 	  \newpage
   173     \section{Randomisierung}
   174         \subsection{Hashing}
   175     
   176     \newpage
   177     \section{Amortisierte Analyse}
   178         \subsection{Binomial Heaps}
   179         \subsection{Fibonacci Heaps}
   180         \subsection{Union Find}
   181     
   182     \newpage
   183     \section{Greedy}
   184         \subsection{Kürzeste (billigste) Wege}
   185     
   186     \newpage
   187     \section{Bin Packing}
   188         \textbf{Problembeschreibung:}\\
   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.
   190         \subsection{Online Verfahren}
   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.\\
   192             Kein Online Bin Packing Verfahren kann stets eine optimale Lösung finden!\\            
   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.\\
   194             \textbf{Beweis} Annahme: Online Bin Packing Algorithmus benötigt stets weniger als $\frac{4}{3}OPT$ Bins.\\
   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.
   196             
   197             \subsubsection{Next Fit (NF)}
   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.\\
   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$.\\
   200                 \textbf{Beweis}\\
   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!\\
   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)\\
   203                 Laufzeit für Inputfolgen der Länge $n$: NF $O(n)$
   204             \subsubsection{First-Fit (FF)}
   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.\\
   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)$)\\
   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)$.\\
   208                 \textbf{Beweis}\\
   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.\\
   210                 Laufzeit für Inputfolgen der Länge $n$: FF $O(n^2) \rightarrow O(n \log n)$
   211             \subsubsection{Best-Fit (BF)}
   212                 Verpacke das nächste Objekt in diejenige Kiste, in die es am besten passt (d.h. den geringsten Platz ungenutzt lässt).
   213                 Verhalten von BF ähnlich zu FF.
   214                 Laufzeit für Inputfolgen der Länge $n$: BF $O(n^2) \rightarrow O(n \log n)$
   215         \subsection{Offline Verfahren}
   216             \underline{NP-schwieriges Problem! Entscheidungsproblem ist NP-vollständig!}\\
   217             Zunächst wird die Anzahl $n$ und alle $n$ Objekte vorgegeben. Dann beginnt die Verpackung.\\
   218             $n$ und $s_1, ..., s_n$ sind gegeben, bevor die Verpackung beginnt!\\
   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!\\
   220             Idee für Offline Approximationsalgorithmen: Sortiere die Objekte zunächst nach abnhemender Größe und verpacke größere Objekte zuerst!
   221             \subsubsection{First Fit Decreasing (FFD oder FFNI)}
   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}$.\\
   223                 \textbf{Beweis}: \$\$\$TODO:Elsässer hat das in seiner VL gemacht - aber hässlich lang\$\$\$\\
   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$.\\
   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?\$\$\$\\
   226                 \textbf{Satz}: Für alle Inputfolgen I gilt $FFD(I)\leq(4 OPT(I)+\frac{1}{3})$.\\
   227                 \textbf{Satz}:
   228                 \begin{itemize}
   229                     \item[1.] Für alle Inputfolgen $I$ gilt: $FFD(I)\leq \frac{11}{9} OPT(I)+4$
   230                     \item[2.] Es gibt Inputfolgen $I$ mit: $FFD(I)=\frac{11}{9}OPT(I)$.
   231                 \end{itemize}
   232                 \textbf{Beweis}: \$\$\$TODO\$\$\$
   233             \subsubsection{Best Fit Decreasing (BFD)}
   234                 Nicht im Script???
   235     
   236     \newpage
   237     \section{Dynamische Programmierung}
   238         
   239         
   240     \newpage
   241     \begin{appendix}
   242         \section{Landau-Symbole}
   243             \begin{figure}[H]
   244                 \centering
   245                 \includegraphics[scale=0.45]{img/landau_sym}
   246                 \caption{Definition der Landau Symbole}
   247                 \label{fig:landau_sym}
   248             \end{figure}
   249     \end{appendix}
   250 \end{document}