\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}