From 327852879e2c8d411ddd9291adf019b52b5a0722 Mon Sep 17 00:00:00 2001 From: Thomas Ba Date: Thu, 22 Mar 2012 19:00:33 +0100 Subject: [PATCH] Bis Ford-Fulkerson-Methode --- Algorithmen/Algorithmen.tex | 42 +++--------------- Algorithmen/flussnetzwerke.tex | 78 +++++++++++++++++++--------------- 2 files changed, 50 insertions(+), 70 deletions(-) diff --git a/Algorithmen/Algorithmen.tex b/Algorithmen/Algorithmen.tex index af81883..23c4a1f 100644 --- a/Algorithmen/Algorithmen.tex +++ b/Algorithmen/Algorithmen.tex @@ -39,8 +39,8 @@ \usepackage{fancyhdr} \setlength{\parindent}{0ex} \setlength{\parskip}{2ex} -\setcounter{secnumdepth}{4} -\setcounter{tocdepth}{4} + +% Farben \definecolor{darkgreen}{rgb}{0,0.5,0} \definecolor{darkblue}{rgb}{0,0,0.5} \definecolor{greenblue}{rgb}{0,0.5,0.5} @@ -53,40 +53,8 @@ \setlength{\leftbarsep}{10pt} \colorlet{leftbarcolor}{gray} -\usepackage{pseudocode} - -\usepackage{listings} -\lstdefinelanguage{pseudo}{ - morekeywords= - { - if, else, for, in, remove, from, case, do, forever, to, - false, true, then, foreach, while, modulo, foreach - }, - sensitive=true, - morecomment=[l]\#, - morestring=[b]', - basicstyle=\ttfamily\footnotesize, - literate={<=} {$\le$}{2} {!=} {$\neq$}{2} {=} {$\leftarrow$}{2} {==} {=}{2} - {&&} {$\cap$}{2} {||} {$\cup$}{2} {lfloor} {$\lfloor$}{1} - {rfloor} {$\rfloor$}{1} {cdot} {$\cdot$}{1} -} -\lstset{ - language=pseudo, - basicstyle=\ttfamily\footnotesize, - keywordstyle=\color{red}, - commentstyle=\color{blue}, - stringstyle=\color{darkgreen}, - backgroundcolor=\color{lightgray}, - morecomment=[s][\color{blue}]{/*}{*/}, - emphstyle=\textbf, - frame=single, - showstringspaces=true, - breaklines=true, - numberstyle=\footnotesize\textcolor{gray}, - numbers=left, - tabsize=4, - captionpos=b -} +\usepackage{algorithm} +\usepackage{algpseudocode} \pagestyle{fancy} @@ -101,6 +69,7 @@ \fancyfoot[C]{Seite \thepage\ von \pageref{LastPage}} \renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie +% Eigene Befehle \newcommand{\spa}{\hspace*{4mm}} \newcommand{\defin}{\textcolor{darkgreen}{\textbf{Def.: }}} \newcommand{\satz}{\textcolor{darkblue}{\textbf{Satz: }}} @@ -118,6 +87,7 @@ \maketitle\thispagestyle{empty} \tableofcontents\thispagestyle{empty} + \listofalgorithms\thispagestyle{empty} \newpage \pagestyle{fancy} diff --git a/Algorithmen/flussnetzwerke.tex b/Algorithmen/flussnetzwerke.tex index 4fe92ca..1fecc76 100644 --- a/Algorithmen/flussnetzwerke.tex +++ b/Algorithmen/flussnetzwerke.tex @@ -19,14 +19,14 @@ Ein \underline{Fluss (im Netzwerk)} ist eine Funktion \( f: V\times V \to \mathb \subsection{Wert des Flusses} -Der Wert des Flusses $f$ ist \( \|f\| = \sum\limits_{v\in V} f(s,v) \)\\ +Der Wert des Flusses $f$ ist \( |f| = \sum\limits_{v\in V} f(s,v) \)\\ Kurzschreibweise sei \(X,Y \subseteq V\)\\ dann Def. \( f(X,Y) = \sum\limits_{x\in X} \sum\limits_{y\in Y} f(x,y) \) \underline{Maximaler Fluss} berechnen: Gegeben: \( G=(V,E), \ s,t \in V, c \)\\ -Gesucht: Fluss $f$, so dass \(\|f\|\) maximal ist. +Gesucht: Fluss $f$, so dass \(|f|\) maximal ist. Ist \((u,v) \not\in E\) und \((v,u) \not\in E\), dann ist \( c(u,v) = c(v,u) = 0 \).\\ Für \(f\) muss also gelten: @@ -64,64 +64,74 @@ Im \bsp \( c_f(p) = 4 \) \item Symmetrie gilt nach Definition \item Kirchhoffsches Gestz: Sei $u$ Knoten auf $p$\\ \includegraphics{img/restnetzwerk_p.pdf}\\ - \begin{align} + \begin{align*} \sum\limits_{v\in V} f(u,v) &= f(v,u) + f(u,v) + f(u,w) + f(w,u)\\ % TODO: Underbrace c_f(...) &= 0 - \end{align}\\ + \end{align*}\\ \end{enumerate} -Wert \(\|f_p\| = c_f(p) \) (Im \bsp \(=4\)) +Wert \(|f_p| = c_f(p) \) (Im \bsp \(=4\)) -\lemma Sei $f$ Fluss in $G$ und $f'$ Fluss in $G_f$. Dann ist \( f + f' \) ein Fluss in $G$ und der Wert \(\|f+f'\| = \|f\| + \|f'\|\). +\lemma Sei $f$ Fluss in $G$ und $f'$ Fluss in $G_f$. Dann ist \( f + f' \) ein Fluss in $G$ und der Wert \(|f+f'| = |f| + |f'|\). \bew \begin{enumerate} \item \underline{Symmetrie} - \begin{align} + \begin{align*} (f+f')(u,v) &= f(u,v) + f'(u,v)\\ &= -f(v,u) - f'(v,u)\\ &= -\left( (f+f')(v,u) \right) - \end{align} + \end{align*} \item \underline{Kapazität} - \begin{align} + \begin{align*} (f+f')(u,v) &= f(u,v) + \underbrace{f'(u,v)}_{ \le c_f(u,v) = c(u,v)-f(u,v) }\\ &\le f(u,v) + c(u,v) - f(u,v)\\ &= c(u,v) - \end{align} + \end{align*} \item \underline{Kirchhoff}: - \begin{align} + \begin{align*} \sum\limits_{v\in V} (f+f')(u,v) &= \sum\limits_{v\in V} \left(f(u,v) + f'(u,v)\right)\\ &= \sum\limits_{v\in V} f(u,v) + \sum\limits_{v\in V} f'(u,v)\\ &= 0 + 0 = 0 - \end{align} + \end{align*} \end{enumerate} -\begin{align} - \text{Wert:} \|f+f'\| &= \sum\limits_{v\in V} (f+f')(s,v)\\ +\begin{align*} + \text{Wert:} |f+f'| &= \sum\limits_{v\in V} (f+f')(s,v)\\ &= \sum\limits_{v\in V} f(s,v) + \sum\limits_{v\in V} f'(s,v)\\ - &= \|f\| + \|f'\| -\end{align} - + &= |f| + |f'| +\end{align*} +\newpage \subsection{Ford-Fulkerson-Methode} -\begin{pseudocode}[framebox]{Ford-Fulkerson-Methode}{G,s,t,c} -f \GETS 0\\ -\WHILE \text{es gibt einen Erweiterungspfad }p\text{ in }G_p -\DO \text{erhöhe den Fluss um }f_p\\ -\RETURN f -\end{pseudocode} +\begin{algorithm} + \caption{\textsc{Ford-Fulkerson-Methode} $(G,s,t,c)$} + \begin{algorithmic}[1] + \State \(f \leftarrow 0\) + \While{es gibt einen Erweiterungspfad $p$ in $G_p$} + \State erhöhe den Fluss um $f_p$ + \EndWhile\\ + \Return{f} + \end{algorithmic} +\end{algorithm} Genauer: -\begin{pseudocode}[framebox]{Ford-Fulkerson}{G,s,t,c} - \FOREACH (u,v) \in E - \DO \BEGIN - f(u,v) \GETS 0\\ - f(v,u) \GETS 0 - \END - \WHILE \text{Es gibt einen Weg } p \text{ von } s \text{ nach } t \text{ in } G_f - \DO\BEGIN - % TODO - \END -\end{pseudocode} +\begin{algorithm} + \caption{\textsc{Ford-Fulkerson} $(G,s,t,c)$} + \begin{algorithmic}[1] + \ForAll{\((u,v) \in E\)} + \State \(f(u,v) \leftarrow 0\) + \State \(f(v,u) \leftarrow 0\) + \EndFor + \While{Es gibt einen Weg \(p\) von \(s\) nach \(t\) in \(G_f\)} + \State \(G_f(P) \leftarrow min\{ c_f(u,v) \mid (u,v) \in P \} \) + \ForAll{\((u,v) \in P\)} + \State \(f(u,v) \leftarrow f(u,v) + c_f(P) \) + \State \(f(v,u) \leftarrow -f(u,v) \) + \EndFor + \EndWhile + \end{algorithmic} +\end{algorithm} + % vim: ft=tex :