uni/ad/AD-Gruppe_8_Koehler_Krabbe_...

207 lines
7.8 KiB
TeX

\documentclass[10pt,a4paper,oneside,ngerman,numbers=noenddot]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{bytefield}
\usepackage{paralist}
\usepackage{gauss}
\usepackage{pgfplots}
\usepackage{textcomp}
\usepackage[locale=DE,exponent-product=\cdot,detect-all]{siunitx}
\usepackage{tikz}
\usepackage{algpseudocode}
\usepackage{algorithm}
%\usepackage{algorithmic}
%\usepackage{minted}
\usetikzlibrary{automata,matrix,fadings,calc,positioning,decorations.pathreplacing,arrows,decorations.markings}
\usepackage{polynom}
\polyset{style=C, div=:,vars=x}
\pgfplotsset{compat=1.8}
\pagenumbering{arabic}
\def\thesection{\arabic{section})}
\def\thesubsection{(\alph{subsection})}
\def\thesubsubsection{(\roman{subsubsection})}
\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{%
\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\array{#1}}
\makeatother
\parskip 12pt plus 1pt minus 1pt
\parindent 0pt
\begin{document}
\author{Reinhard Köhler (6425686), Tronje Krabbe (6435002), \\
Jim Martens (6420323)}
\title{Hausaufgaben zum 15. Januar}
\subtitle{Gruppe 8}
\maketitle
\section{} %1
\subsection{} %a
\begin{tabular}{c|c|c|c|c|c|c|c|c}
EXTRACT & 1 & 2 & 3 & 4 & 5 & 6 & 7 &\\
\hline
- & 0 & $\infty$ & $\infty$ & $\infty$ & $\infty$ & $\infty$ & $\infty$ & (v.dist) \\
& - & - & - & - & - & - & - & (v.$\pi$) \\
\hline
1 & 0 & 4 & $\infty$ & $\infty$ & $\infty$ & 5 & $\infty$ & \\
& - & 1 & - & - & - & 1 & - & \\
\hline
2 & 0 & 4 & 14 & $\infty$ & $\infty$ & 5 & 7 & \\
& - & 1 & 2 & - & - & 1 & 2 & \\
\hline
6 & 0 & 4 & 14 & $\infty$ & 14 & 5 & 7 & \\
& - & 1 & 2 & - & 6 & 1 & 2 & \\
\hline
7 & 0 & 4 & 13 & $\infty$ & 10 & 5 & 7 & \\
& - & 1 & 7 & - & 7 & 1 & 2 & \\
\hline
5 & 0 & 4 & 12 & 15 & 10 & 5 & 7 & \\
& - & 1 & 5 & 5 & 7 & 1 & 2 & \\
\hline
3 & 0 & 4 & 12 & 14 & 10 & 5 & 7 & \\
& - & 1 & 5 & 3 & 7 & 1 & 2 & \\
\hline
4 & 0 & 4 & 12 & 14 & 10 & 5 & 7 & \\
& - & 1 & 5 & 3 & 7 & 1 & 2 &
\end{tabular}
Der kürzeste Pfad von 1 nach 4 verläuft über 2, 7, 5 und 3 nach 4. Insgesamt kostet der Pfad 14.
\subsection{} %b
In $G_{2}$ ist 3 die Quelle.
\begin{tabular}{c|c|c|c|c|c|c|c|c}
EXTRACT & 3 & 1 & 2 & 4 & 5 &\\
\hline
- & 0 & $\infty$ & $\infty$ & $\infty$ & $\infty$ & (v.dist) \\
& - & - & - & - & - & (v.$\pi$) \\
\hline
3 & 0 & $\infty$ & 9 & 4 & $\infty$ & \\
& - & - & 3 & 3 & - & \\
\hline
4 & 0 & 5 & 8 & 4 & 6 & \\
& - & 4 & 4 & 3 & 4 & \\
\hline
1 & 0 & 5 & 8 & 4 & 6 & \\
& - & 4 & 4 & 3 & 4 & \\
\hline
5 & 0 & 1 & 8 & 4 & 6 & \\
& - & 5 & 4 & 3 & 4 & \\
\end{tabular}
Durch die negative Kante von 5 nach 1, würde sich der kürzeste Pfad von 1 von 5 auf 1 ändern, was jedoch nicht geht, da 1 bereits besucht wurde. Daher liefert Dijkstra für das Single-Source-Shortest-Path Problem in $G_{2}$ ein falsches Ergebnis.
\section{} %2
\begin{algorithm}
\caption{Relax}
\begin{algorithmic}[1]
\Procedure{Relax}{$u,v$}
\State $maxWeight \gets max(u.maxWeight, w(u,v))$
\If{$maxWeight < v.maxWeight$}
\State $v.maxWeight \gets w(u,v)$
\State $v.\pi \gets u$
\EndIf
\EndProcedure
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{Initialize single source}
\begin{algorithmic}[1]
\Procedure{InitializeSingleSource}{$G,s$}
\ForAll{$v \in V$}
\State $v.maxWeight \gets \infty$
\State $v.\pi \gets NIL$
\EndFor
\State $s.maxWeight \gets 0$
\EndProcedure
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{Dijkstra für leichtest mögliche schwerste Kanten}
\begin{algorithmic}[1]
\Procedure{Dijkstra}{$G,w,s$}
\State $\Call{InitializeSingleSource}{G,s}$
\State $Q \gets (V, V.maxWeight)$\Comment{ordered by the maximum weight (edge with highest weight) per path in ascending order}
\While{$Q \neq \emptyset$}
\State $u \gets \Call{Extract}{Q}$
\ForAll{v adjacent to u}
\State $\Call{Relax}{u,v}$ and update the keys in Q accordingly
\EndFor
\EndWhile
\EndProcedure
\end{algorithmic}
\end{algorithm}
\section{} %3
\subsection{} %a
Es sei $B(k)$ die in der Aufgabenstellung formulierte Behauptung in Abhängigkeit von $k$.
\textbf{Behauptung}\\ $B(k)$ gilt für alle $k \in \mathbb{N}_{\geq 0}$.
\textbf{Induktionsanfang}\\ Zu Zeigen: Es gilt $B(0)$.
$A^0$ ist die Einheitsmatrix $E$. Ein Eintrag in $E$ ist genau dann 1, wenn er auf der Hauptdiagonalen liegt, andernfalls ist er 0.
Das bedeutet, dass es über 0 Kanten jeweils genau einen Pfad von einem Knoten $i$ zu einem Knoten $j$ gibt, wenn $i = j$ gilt. Bei 0 Kanten sind
dies genau die Pfade, die in einem beliebigen Graphen möglich sind, da ein Weg zu einem anderen Knoten über mindestens eine Kante gehen würde.
Die Matrix $A^0$ ist also korrekt und $B(0)$ gilt.
\textbf{Induktionsschritt} Wir nehmen an, dass $B(k)$ gilt. Zu zeigen ist, dass daraus $B(k+1)$ folgt.
Sei $X$ eine Matrix, die erfüllt, dass jeder Eintrag $X[i,j]$ die Anzahl der verschiedenen Pfade vom Knoten $i$ über $k+1$ Kanten zum Knoten $j$ repräsentiert.
Nun ist zu zeigen, dass $X=A^{k+1}$ gilt.
Wir betrachten nun einen beliebigen Eintrag $L[i,j]$. Um einen solchen Eintrag zu berechnen, summieren wir zunächst die Anzahlen aller Möglichkeiten,
über $k$ Kanten vom Knoten $i$ zu einem beliebigen Knoten $h$ zu gelangen. Laut Induktionsannahme finden wir genau diese in der Matrix $A$,
im Eintrag $A^k[i,h]$. Die Summe aller dieser Möglichkeiten ist wie folgt definiert:
$$\sum_{h=1}^{n}{A^k[i,h]}$$
Jetzt wollen wir eine Möglichkeit nur betrachten, wenn eine Kante $(h,j)$ existiert.
Also betrachten wir nur noch die Möglichkeiten, über $k+1$ Kanten vom Knoten $i$ zum Knoten $j$ zu gelangen. Wir definieren das $n$-Tupel $Z$:
$$ Z=(z_0, z_1, \cdots, z_n), z_h = \left\{
\begin{array}{l}
1: (h,j) \in G \\
0: (h,j) \notin G
\end{array}\right.$$
Wir definieren nun die Einträge der Matrix $X$, in denen jeweils alle korrekten Möglichkeiten aufsummiert werden:
$$\sum_{h=1}^{n}{A^k[i,h] \cdot z_h} $$
Nun entspricht ein Eintrag der Adjazenzmatrix $A$ an der Stelle $A[h,j]$ laut ihrer Definition genau dem Eintrag $z_h$ in dem $j$ zugehörigen Tupel $Z$.
Wir können also genauso schreiben:
$$ \sum_{h=1}^{n}{A^k[i,h] \cdot A[h,j]}$$
Dies ist nach der Definition der Matrixmultiplikation äquivalent mit:
$$ X = A^k \cdot A = A^{k+1} $$
Es wurde also gezeigt, dass $X = A^{k+1}$ gilt, und somit jede Matrix, die unsere Forderungen erfüllt, $A^{k+1}$ sein muss.
Demnach gilt $B(k) \Rightarrow B(k+1)$.
Damit ist die Induktion abgeschlossen und die Behauptung bewiesen.$\square$
\subsection{} %b
\subsection{} %c
\section{} %4
\subsection{} %a
Wäre die Last in $W$ aboslut gleich verteilt, hätte natürlich jede Kante die gleiche Last.
$ \sum_{p \in W} l(p) $ ist die Summe aller Pfadlängen, also die Anzahl aller verwendeten Kanten.
Diese Anzahl wird in einem optimierten Pfadsystem gleichmäßig verteilt, also ergibt sich
$ \frac{1}{|E|} \sum_{p \in W} l(p) $ als untere Grenze von $ c(W) $.
Ist $ W $ jedoch nicht optimal, ist $ c(W) $ natürlich größer. Somit gilt
$ c(W) \ge \frac{1}{|E|} \sum_{p \in W} l(p) $.
\newpage
\subsection{} %b
$ c(W) $ ist die größte Kantenlast unter Berücksichtigung aller Kanten in allen Pfaden in $N$. $ c(W^*) $ ist die größte Kantenlast
unter Berücksichtigung aller Kanten in allen kürzesten Pfaden in $N$. Dies bedeutet, dass $ c(W) $ die absolute Maximalkantenlast ist,
während $ c(W) $ nicht unbedingt alle Kanten berücksichtigt, deswegen auch nicht unbedingt gleich $ c(W) $ ist.
\end{document}