Bis Ford-Fulkerson-Methode

main
Thomas Ba. 13 years ago
parent def2390131
commit 327852879e

@ -39,8 +39,8 @@
\usepackage{fancyhdr} \usepackage{fancyhdr}
\setlength{\parindent}{0ex} \setlength{\parindent}{0ex}
\setlength{\parskip}{2ex} \setlength{\parskip}{2ex}
\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{4} % Farben
\definecolor{darkgreen}{rgb}{0,0.5,0} \definecolor{darkgreen}{rgb}{0,0.5,0}
\definecolor{darkblue}{rgb}{0,0,0.5} \definecolor{darkblue}{rgb}{0,0,0.5}
\definecolor{greenblue}{rgb}{0,0.5,0.5} \definecolor{greenblue}{rgb}{0,0.5,0.5}
@ -53,40 +53,8 @@
\setlength{\leftbarsep}{10pt} \setlength{\leftbarsep}{10pt}
\colorlet{leftbarcolor}{gray} \colorlet{leftbarcolor}{gray}
\usepackage{pseudocode} \usepackage{algorithm}
\usepackage{algpseudocode}
\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
}
\pagestyle{fancy} \pagestyle{fancy}
@ -101,6 +69,7 @@
\fancyfoot[C]{Seite \thepage\ von \pageref{LastPage}} \fancyfoot[C]{Seite \thepage\ von \pageref{LastPage}}
\renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie \renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie
% Eigene Befehle
\newcommand{\spa}{\hspace*{4mm}} \newcommand{\spa}{\hspace*{4mm}}
\newcommand{\defin}{\textcolor{darkgreen}{\textbf{Def.: }}} \newcommand{\defin}{\textcolor{darkgreen}{\textbf{Def.: }}}
\newcommand{\satz}{\textcolor{darkblue}{\textbf{Satz: }}} \newcommand{\satz}{\textcolor{darkblue}{\textbf{Satz: }}}
@ -118,6 +87,7 @@
\maketitle\thispagestyle{empty} \maketitle\thispagestyle{empty}
\tableofcontents\thispagestyle{empty} \tableofcontents\thispagestyle{empty}
\listofalgorithms\thispagestyle{empty}
\newpage \newpage
\pagestyle{fancy} \pagestyle{fancy}

@ -19,14 +19,14 @@ Ein \underline{Fluss (im Netzwerk)} ist eine Funktion \( f: V\times V \to \mathb
\subsection{Wert des Flusses} \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\)\\ Kurzschreibweise sei \(X,Y \subseteq V\)\\
dann Def. \( f(X,Y) = \sum\limits_{x\in X} \sum\limits_{y\in Y} f(x,y) \) dann Def. \( f(X,Y) = \sum\limits_{x\in X} \sum\limits_{y\in Y} f(x,y) \)
\underline{Maximaler Fluss} berechnen: \underline{Maximaler Fluss} berechnen:
Gegeben: \( G=(V,E), \ s,t \in V, c \)\\ 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 \).\\ 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: Für \(f\) muss also gelten:
@ -64,64 +64,74 @@ Im \bsp \( c_f(p) = 4 \)
\item Symmetrie gilt nach Definition \item Symmetrie gilt nach Definition
\item Kirchhoffsches Gestz: Sei $u$ Knoten auf $p$\\ \item Kirchhoffsches Gestz: Sei $u$ Knoten auf $p$\\
\includegraphics{img/restnetzwerk_p.pdf}\\ \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(...) \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 &= 0
\end{align}\\ \end{align*}\\
\end{enumerate} \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 \bew
\begin{enumerate} \begin{enumerate}
\item \underline{Symmetrie} \item \underline{Symmetrie}
\begin{align} \begin{align*}
(f+f')(u,v) &= f(u,v) + f'(u,v)\\ (f+f')(u,v) &= f(u,v) + f'(u,v)\\
&= -f(v,u) - f'(v,u)\\ &= -f(v,u) - f'(v,u)\\
&= -\left( (f+f')(v,u) \right) &= -\left( (f+f')(v,u) \right)
\end{align} \end{align*}
\item \underline{Kapazität} \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) }\\ (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)\\ &\le f(u,v) + c(u,v) - f(u,v)\\
&= c(u,v) &= c(u,v)
\end{align} \end{align*}
\item \underline{Kirchhoff}: \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+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)\\ &= \sum\limits_{v\in V} f(u,v) + \sum\limits_{v\in V} f'(u,v)\\
&= 0 + 0 = 0 &= 0 + 0 = 0
\end{align} \end{align*}
\end{enumerate} \end{enumerate}
\begin{align} \begin{align*}
\text{Wert:} \|f+f'\| &= \sum\limits_{v\in V} (f+f')(s,v)\\ \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)\\ &= \sum\limits_{v\in V} f(s,v) + \sum\limits_{v\in V} f'(s,v)\\
&= \|f\| + \|f'\| &= |f| + |f'|
\end{align} \end{align*}
\newpage
\subsection{Ford-Fulkerson-Methode} \subsection{Ford-Fulkerson-Methode}
\begin{pseudocode}[framebox]{Ford-Fulkerson-Methode}{G,s,t,c} \begin{algorithm}
f \GETS 0\\ \caption{\textsc{Ford-Fulkerson-Methode} $(G,s,t,c)$}
\WHILE \text{es gibt einen Erweiterungspfad }p\text{ in }G_p \begin{algorithmic}[1]
\DO \text{erhöhe den Fluss um }f_p\\ \State \(f \leftarrow 0\)
\RETURN f \While{es gibt einen Erweiterungspfad $p$ in $G_p$}
\end{pseudocode} \State erhöhe den Fluss um $f_p$
\EndWhile\\
\Return{f}
\end{algorithmic}
\end{algorithm}
Genauer: Genauer:
\begin{pseudocode}[framebox]{Ford-Fulkerson}{G,s,t,c} \begin{algorithm}
\FOREACH (u,v) \in E \caption{\textsc{Ford-Fulkerson} $(G,s,t,c)$}
\DO \BEGIN \begin{algorithmic}[1]
f(u,v) \GETS 0\\ \ForAll{\((u,v) \in E\)}
f(v,u) \GETS 0 \State \(f(u,v) \leftarrow 0\)
\END \State \(f(v,u) \leftarrow 0\)
\WHILE \text{Es gibt einen Weg } p \text{ von } s \text{ nach } t \text{ in } G_f \EndFor
\DO\BEGIN \While{Es gibt einen Weg \(p\) von \(s\) nach \(t\) in \(G_f\)}
% TODO \State \(G_f(P) \leftarrow min\{ c_f(u,v) \mid (u,v) \in P \} \)
\END \ForAll{\((u,v) \in P\)}
\end{pseudocode} \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 : % vim: ft=tex :

Loading…
Cancel
Save