mirror of https://github.com/2martens/uni.git
207 lines
7.8 KiB
TeX
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}
|