Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified algorithmik.pdf
Binary file not shown.
138 changes: 136 additions & 2 deletions chapter03.tex
Original file line number Diff line number Diff line change
Expand Up @@ -557,8 +557,7 @@ \section{Flussprobleme}
\node (li1) at (3, -0.3) {$\in \beta(v_i)$};
\end{tipi} \\
Analog zu Fall 2.

\item Fall 4:
\item Fall 4:
\begin{tipi}[baseline]
\node (v0) at (0, 0) {};
\node (vi) at (2, 0) {$v_i$};
Expand All @@ -575,3 +574,138 @@ \section{Flussprobleme}
Analog zu Fall 1.
\end{itemize}
\end{beweis}
\begin{lemma}
Hält der Algorithmus von Fud/Fulkerson an, dann besitzt die zu diesem Zeitpunkt berechnete Flußfunktion f maximalen totalen Fluß.
\end{lemma}
\begin{beweis}
Wenn der Algorithmus anhält, dann tut er dies in Schritt 3 und t wurde nicht erreicht. Sei S die Menge der Knoten, die beim letztes Markieren markiert wurden. Auf jeden Fall ist s $\in$ S und $t \notin S$, $\overline{S} := (V,S)$.

Sei $x \rightarrow (e)y \in E_{S\overline{S}}$, dann ist f(e) = c(e) weil sonst entlang dieser kante die Markierung festgesetzt werden könnte. x<-(p)y $\in E_{S\overline{S}}$, dann muss $f(e)=0$.

Mit Lemma 3.1 folgt F=$\sum_{e \in E_{S\overline{S}}} f(e) - \sum_{e \in E_{\overline{S}S}} f(e) =
\sum_{e \in E_{S\overline{S}}} c(e) = c(S)$

Mit Lemma 3.3 folgt F maximal.
\end{beweis}

\begin{lemma}
Ist $c:= E \rightarrow \mathbb{N} $, so hält der Algorithmus immer an.
\end{lemma}

\begin{beweis}
ist $c:= E \rightarrow \mathbb{N} $ so wird in jedem Durchlauf der totale Fluß um eine natürliche Zahl $\Delta$ erhöht. Andererseits gilt $F \leq c(S)$ für eine beliebige Menge $S \subseteq V$, $s \in S$, $t \notin S$
\end{beweis}

\begin{beispiel}
Frage: c: E $\rightarrow$ Reele Zahlen : V

Beispiel: Kosten können sehr hoch werden im Fall $c:E \rightarrow \mathbb{N} $
% a
% 10^6/0 10^6/0
%s 1/0 t F = 2*10^6
% 10^6/0 10^6/0
% b

1. Markierung: $ s \rightarrow a \rightarrow b \rightarrow t, \Delta = 1$

2. Markierung: $ s \rightarrow b \rightarrow a \rightarrow t, \Delta = 1$

insgesamt $2*10^6$ Markierungssequenzen, d.h. Abhängigkeit von der kapazität.
\end{beispiel}

\begin{definition}
Satz von Edmond und karp:

Verwendet BFS beim Markieren und wählt jeweils den kürzesten Anreichungspfad, dann terminiert der Algorithmus in $O(|V|^3*E)$ Schritten. (Vorausgesetzt die vorkommenden reellen Zalen können jeweils in einem Schritt bearbeitet werden.

\end{definition}

\begin{beispiel}
x sei große Zahl, $x \in \mathbb{N}$, $\phi:= ( \sqrt{5}-1)/2$ (Lösung von $x^2+x-1=0$).

Insbesondere gilt: $\phi^2+ \phi-1=0$, also $\phi^(k+1)+ \phi^k = \phi(k-1)$, $k \ge 1$
% a
% x/phi->
% x-> 1/phi<-
%s x/1-> b t
% 1/1-phi-> x/1->
% c
% x-> phi/phi<- x->
%
%
% d

$F= 2x +1$

$1+2* \sum_{k=1}^{\infty} \phi^k = 1 + 2*(1/(1-\phi)) = 4 + \sqrt{5} <7$

Typ0: Weg $s \rightarrow b \rightarrow c \rightarrow t : \Delta =1$

Typ1: Weg $s \rightarrow d \rightarrow c \rightarrow b \rightarrow a \rightarrow t 1: \Delta = \phi, 2:\Delta = 1-\phi = \phi^2$

Typ2: Weg $s->b->c<-d->t : \Delta = \phi$

Typ3: Weg $s->a<-b->c->t : \Delta = 1:\phi^2$

Reihung 0,1,2,1,3

Berechnet:$ \Delta =1, \Delta = \phi, \Delta = \phi, \Delta = \phi^2, \Delta = \phi^2$
\end{beispiel}
\begin{definition}
Sei e eine Kante mit Flußwert $f(e)$. e heißt nützlich von u nach v, wenn gilt:
\begin{enumerate}
\item $u \rightarrow^e$ und $f(e) < c(e)$
\item $u \leftarrow^e v$ und $f(e) > 0$
\end{enumerate}
Eine Schichtung für ein Netzwerk (mit $G=(V,E)$, $c:E \rightarrow \mathbb{R}$, $s,t \in V$) und eine Flußfunktion $f$ ist definiert wie folgt:
\begin{enumerate}
\item $V_{0}:= {s}$, $i:=0$
\item T:={$v:v \notin V_{j}$ für $j \le i$ und es existiert eine nützliche Kante von einem Knoten aus $V_{i}$ zu v}
\item ist $T = \emptyset$ dann ist der jetzige totale Fluß (d.h. der von $f$) maximal, halte an.
\item Ist $t \in T$, setzte $l_{i} = i+1$, $V_{l} = {t}$, halte an
\item $V_{i+1} := T$, $i:=i+1$ und gehe zu 2)
\end{enumerate}
\end{definition}
\begin{beispiel}
\begin{center}
\begin{tipi}
\node (s) at (0, 0) [draw, shape=circle] {$s$};
\node (b) at (1.25, 1.25) [draw, shape=circle] {$b$};
\node (c) at (3, 1.25) [draw, shape=circle] {$c$};
\node (d) at (1.25, -1.25) [draw, shape=circle] {$d$};
\node (e) at (3, -1.25) [draw, shape=circle] {$e$};
\node (t) at (4.25, 0) [draw, shape=circle] {$t$};

\draw[->] (s) -- (b);
\draw[->] (s) -- (d);
\draw[->] (b) -- (d);
\draw[->] (b) -- (c);
\draw[->] (c) -- (d);
\draw[->] (d) -- (e);
\draw[->] (c) -- (t);
\draw[->] (e) -- (t);
\draw[->] (e) -- (c);

\node (l1) at (0.75, 0.4) {$e_1$};
\node (l2) at (0.75, -0.4) {$e_2$};
\node (l3) at (2.125, 1.05) {$e_4$};
\node (l6) at (2.125, -1.05) {$e_6$};
\node (l8) at (3.5, -0.4) {$e_8$};
\node (l4) at (2.75, -0.4) {$e_9$};
\node (l5) at (1.0, 0.0) {$e_3$};
\node (l7) at (3.5, 0.4) {$e_7$};
\node (l9) at (2.125, 0.4) {$e_5$};

\node(f1) at (0.25, 0.75) {$\nicefrac{5}{1}$};
\node(f2) at (0.25, -0.75) {$\nicefrac{4}{1}$};
\node(f6) at (2.125, -1.55) {$\nicefrac{3}{1}$};
\node(f4) at (2.125, 1.55) {$\nicefrac{3}{1}$};
\node(f8) at (3.9, -0.9) {$\nicefrac{5}{1}$};
\node(f7) at (3.8125, 0.8125) {$\nicefrac{3}{1}$};
\node(f3) at (1.55, 0.4) {$\nicefrac{1}{0}$};
\node(f9) at (3.30, 0.0) {$\nicefrac{1}{0}$};
\node(f5) at (2.1, -0.53) {$\nicefrac{2}{0}$};
\end{tipi}
\end{center}
Fuer dieses Beispiel sollten die Studenten die Schichtenbildung durchfuehren.
\end{beispiel}