\documentclass{ngexrcs} \usepackage{hyperref} \title{1. Übungsblatt} \subject{Algorithmische Graphentheorie} \author{Jasper Gude \and Pia Rötgers} \begin{document} \maketitle \points[\qquad]{20} \section{Spannbäume \& Breitensuche} Sei $G = \tup{V, E}$ ein zusammenhängender Graph mit Kantengewichten $w: E \to \NN$ und $s \in V \deg$ ein ausgezeichneter Knoten. \begin{enumerate} \item \begin{quote} Wenn $w(e) = 1$ für alle $e \in E$, dann ist der Breitensuchbaum mit Quelle $s$ ein minimaler Spannbaum. \end{quote} Die Breitensuche berechnet in diesem Fall den kürzesten Weg von jedem Knoten zum Knoten $s$, also den Breitensuchbaum. Dieser spannt also einen minimalen Spannbaum auf. \points{2} \item \begin{quote} Wenn $w(e) = 1$ für alle $e \in E$, dann ist jeder minimale Spannbaum von $G$ ein Breitensuchbaum mit Quelle $s$. \end{quote} Falsch, siehe \autoref{fig:msb}. \points{2} \begin{figure}[h] \centering \includegraphics[width=0.2\textwidth]{msb.eps} \caption{$\pi$-Zeiger des Breitensuchbaums und MSB blau hinterlegt.} \label{fig:msb} \end{figure} \item \begin{quote} Wenn $w(e) \in \set{1, 2, 3}$ für alle $e \in E$, dann ist jeder minimale Spannbaum von $G$ ein Tiefensuchbaum mit Quelle $s$. \end{quote} Sei $w(e) = 1$ für alle $e \in E$ so gilt das Gegenbeispiel von oben. Also ist die Aussage falsch. \points{2} \end{enumerate} \section{Kreissuche} \begin{enumerate} \item Wähle Startknoten $s$ und füge ihn in eine neue Queue $Q$ ein. Nimm den vordersten Knoten aus $Q$ und füge seine noch nicht verbrauchten Nachbarn ein. Markiere diesen Knoten anschließend als verbraucht ($black$). Wiederhole den Schritt solange bis $Q$ leer ist. Merke dir dabei die zwei letzten entnommenen Knoten. Sind sie gleich, hat der Graph einen einfachen Kreis. \begin{algorithmic} \alg{EinfacherKreis}(Graph $G$, Vertex $s$) \+ \\ \alg{Initialize}($G$, $s$) \\ $Q \gets$ new \alg{Queue}() \\ $Q.$\alg{Enqueue}($s$) \\ $t_1 \gets nil$ \\ $t_2 \gets s$ \\ while $Q \neq \emptyset$ do \+ \\ $u \gets Q.$\alg{Dequeue}() \\ $t_1 \gets t_2$ \\ $t_2 \gets u$ \\ foreach $v \in Adj[u]$ do \+ \\ if $v.color = white$ then \+ \\ $Q.$\alg{Enqueue}($v$) \-\- \\ $u.color \gets black$ \- \\ if $t_1 = t_2$ then \+ \\ return $true$ \- \\ else \+ \\ return $false$ \end{algorithmic} \end{enumerate} \section{Eulerwege} \section{Graphmodellierung} \end{document}