\subsection{Königsberger Brückenproblem}

\framedgraphic{Königsberg heute}{../images/koenigsberg-bruecken-luftbild}

\framedgraphic{Königsberger Brückenproblem}{../images/Konigsberg_bridges.png}

\framedgraphic{Übersetzung in einen Graphen}{../images/Konigsberg_bridges-graph.png}

\begin{frame}{Übersetzung in einen Graphen}
\begin{center}
\adjustbox{max size={\textwidth}{0.8\textheight}}{
\input{koenigsberg/koenigsberg-1}
}
\end{center}
\end{frame}

\begin{frame}{Eulerscher Kreis}
\begin{block}{Eulerscher Kreis}
Sei $G$ ein Graph und $A$ ein Kreis in $G$.

$A$ heißt \textbf{eulerscher Kreis} $:\Leftrightarrow \forall_{k \in K}: k \in A$.
\end{block}

\begin{block}{Eulerscher Graph}
Ein Graph heißt \textbf{eulersch}, wenn er einen eulerschen Kreis enthält.
\end{block}
\end{frame}

\begin{frame}{Hamiltonkreis}
\begin{alertblock}{Achtung}
Verwechslungsgefahr: Hamiltonkreis $\neq$ Eulerkreis
\end{alertblock}
\pause
\begin{block}{Hamiltonkreis}
Sei $G$ ein Graph und $A$ ein Kreis in $G$.

$A$ heißt \textbf{Hamilton-Kreis} $:\Leftrightarrow \forall_{e \in E}: e \text{ ist genau ein mal in } A$.
\end{block}

\begin{block}{Eulerscher Kreis}
Sei $G$ ein Graph und $A$ ein Kreis in $G$.

$A$ heißt \textbf{eulerscher Kreis} $:\Leftrightarrow \forall_{k \in K}: k \in A$.
\end{block}
\end{frame}

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\begin{frame}{Eulerscher Kreis}
    \newcommand\n{5}
    \begin{center}
    \adjustbox{max size={\textwidth}{0.8\textheight}}{
    \begin{tikzpicture}
        \foreach \number in {1,...,\n}{
            \node[vertex] (N-\number) at ({\number*(360/\n)}:5.4cm) {};
        }

        \foreach \number in {1,...,\n}{
            \foreach \y in {1,...,\n}{
                \draw (N-\number) -- (N-\y);
            }
        }

        \node<2->[vertex,red] (N-1) at ({1*(360/\n)}:5.4cm) {};

        \begin{pgfonlayer}{background}
            \path<2->[selected edge] (N-1.center) edge node {} (N-2.center);
            \path<3->[selected edge] (N-2.center) edge node {} (N-3.center);
            \path<4->[selected edge] (N-3.center) edge node {} (N-4.center);
            \path<5->[selected edge] (N-4.center) edge node {} (N-5.center);
            \path<6->[selected edge] (N-5.center) edge node {} (N-1.center);
            \path<7->[selected edge] (N-1.center) edge node {} (N-3.center);
            \path<8->[selected edge] (N-3.center) edge node {} (N-5.center);
            \path<9->[selected edge] (N-5.center) edge node {} (N-2.center);
            \path<10->[selected edge] (N-2.center) edge node {} (N-4.center);
            \path<11->[selected edge](N-4.center) edge node {} (N-1.center);
        \end{pgfonlayer}
    \end{tikzpicture}
    }
    \end{center}
\end{frame}

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\begin{frame}{Hamilton-Kreis, kein EK}
    \begin{center}
    \adjustbox{max size={\textwidth}{0.8\textheight}}{
      \begin{tikzpicture}
          \node (a)[vertex] at (0,0) {};
          \node (b)[vertex] at (2,0) {};
          \node (c)[vertex] at (2,2) {};
          \node (d)[vertex] at (0,2) {};

          \foreach \from/\to in {a/b,b/c,c/d,d/a,a/c,b/d}
            \draw[line width=2pt] (\from) -- (\to);

        \node<2->[vertex,red] (a) at (0,0) {};
        \node<3->[vertex,red] (b) at (2,0) {};
        \node<4->[vertex,red] (c) at (2,2) {};
        \node<5->[vertex,red] (d) at (0,2) {};
        \begin{pgfonlayer}{background}
            \path<3->[selected edge,black!50] (a.center) edge node {} (b.center);
            \path<4->[selected edge,black!50] (b.center) edge node {} (c.center);
            \path<5->[selected edge,black!50] (c.center) edge node {} (d.center);
            \path<6->[selected edge,black!50] (d.center) edge node {} (a.center);
        \end{pgfonlayer}
      \end{tikzpicture}
    }
    \end{center}
\end{frame}

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\begin{frame}{Eulerkreis, kein HK}
    \begin{center}
    \adjustbox{max size={\textwidth}{0.8\textheight}}{
      \begin{tikzpicture}
          \node (a)[vertex] at (0,0) {};
          \node (b)[vertex] at (2,0) {};
          \node (c)[vertex] at (2,2) {};
          \node (d)[vertex] at (0,2) {};
          \node (e)[vertex] at (1,1) {};

          \foreach \from/\to in {a/b,b/c,c/d,d/a,b/e,e/d}
            \draw[line width=2pt] (\from) -- (\to);
          \draw[line width=2pt] (b) to[bend right] (d);

            \node<2->[vertex,lime] (d) at (0,2) {};
            \node<3->[vertex,red] (a) at (0,0) {};
            \node<4->[vertex,red] (b) at (2,0) {};
            \node<5->[vertex,red] (c) at (2,2) {};
            \node<6->[vertex,lime] (d) at (0,2) {};
            \node<7->[vertex,red] (e) at (1,1) {};
            \node<8->[vertex,red] (b) at (2,0) {};
            \begin{pgfonlayer}{background}
                \path<3->[selected edge,black!50] (d.center) edge node {} (a.center);
                \path<4->[selected edge,black!50] (a.center) edge node {} (b.center);
                \path<5->[selected edge,black!50] (b.center) edge node {} (c.center);
                \path<6->[selected edge,black!50] (c.center) edge node {} (d.center);
                \path<7->[selected edge,black!50] (d.center) edge node {} (e.center);
                \path<8->[selected edge,black!50] (e.center) edge node {} (b.center);
                \path<9->[selected edge,black!50] (b.center) to[bend right] (d.center);
            \end{pgfonlayer}
      \end{tikzpicture}
    }
    \end{center}
\end{frame}

\subsection{Satz von Euler}
\begin{frame}{Satz von Euler}
\begin{block}{Satz von Euler}
Wenn ein Graph $G$ eulersch ist, dann hat jede Ecke von $G$ geraden Grad.
\end{block}

\pause

$\Rightarrow$ Wenn $G$ eine Ecke mit ungeraden Grad hat, ist $G$ nicht eulersch.

\pause

\begin{gallery}
    \galleryimage{vollstaendig/k-5}
    \galleryimage{koenigsberg/koenigsberg-1}
\end{gallery}
\end{frame}

\begin{frame}{Beweis: Satz von Euler}
\textbf{Beh.:} $G$ ist eulersch $\Rightarrow \forall e \in E: $ Grad($e$) $\equiv 0 \mod 2$ \pause \\
\textbf{Bew.:} Eulerkreis geht durch jede Ecke $e \in E$\pause,  \\
also geht der Eulerkreis (eventuell mehrfach) in $e$ hinein und hinaus \pause \\
$\Rightarrow$ Grad($e$) $\equiv 0 \mod 2$
\end{frame}

\begin{frame}{Umkehrung des Satzes von Euler}
\begin{block}{Umkehrung des Satzes von Euler}
Wenn in einem zusammenhängenden Graphen $G$ jede Ecke geraden Grad hat, dann
ist $G$ eulersch.
\end{block}
\pause
\underline{Beweis:} Induktion über Anzahl $m$ der Kanten\\
\pause
\underline{I.A.:} $m=0$: $G$ ist eulersch. \cmark\\
\pause
$m=1$: Es gibt keinen Graphen in dem jede Ecke geraden Grad hat. \cmark\\
\pause
$m=2$: Nur ein Graph möglich. Dieser ist eulersch. \cmark\\
\pause

\underline{I.V.:} Sei $m \in \mathbb{N}_0$ beliebig, aber fest und
es gelte: Für
alle zusammenhängenden Graphen $G$ mit höchstens $m$ Kanten, bei
denen jede Ecke geraden Grad hat, ist $G$ eulersch.

\pause

\underline{I.S.:} Sei $G=(E,K)$ mit $2 \leq m  = |K|$. $G$ ist zus. \pause
$\Rightarrow$ Jede Ecke von $G$ hat min. Grad 2. \pause
$\xRightarrow[]{A. 5}$ Es gibt einen Kreis $C$ in $G$.\pause

\dots

\end{frame}

\begin{frame}{Umkehrung des Satzes von Euler}
\begin{block}{Umkehrung des Satzes von Euler}
Wenn in einem zusammenhängenden Graphen $G$ jede Ecke geraden Grad hat, dann
ist $G$ eulersch.
\end{block}
\dots

Sei
\[G_C = (E_C, K_C) \]
Graph zu Kreis $C$ und

\[G^* = (E, K \setminus K_C).\] \pause
$\Rightarrow$ Alle Knoten jeder Zusammenhangskomponente in $G^*$ haben geraden Grad\\
\pause
$\xRightarrow[]{I.V.}$ Alle $n$ Zhsgk. haben Eulerkreise $C_1, \dots, C_n$\\
\pause
$\Rightarrow$ $C_1, \dots, C_n$ können in $C$ \enquote{eingehängt} werden\\
\pause
$\Rightarrow G$ ist eulersch\pause $\Rightarrow $ Beh.
\end{frame}

\begin{frame}{Wie findet man Eulerkreise?}
    \begin{algorithm}[H]
        \begin{algorithmic}
            \Require $G = (E, K)$ ein eulerscher Graph.
            \\
            \State $C \gets$ leerer Kreis
            \Repeat
                \State $C_\text{tmp} \gets \text{ein beliebiger Kreis}$ \Comment{vgl. Aufgabe 5}
                \State $C \gets C $ vereinigt mit $C_\text{tmp}$
                \State Entferne Kanten in $C_\text{tmp}$ aus $G$
                \State Entferne isolierte Ecken
            \Until{$C$ ist Eulerkreis}
            \\
            \State \textbf{Ergebnis:} Eulerkreis $C$
        \end{algorithmic}
    \caption{Algorithmus von Hierholzer}
    \label{alg:Hierholzer}
    \end{algorithm}
\end{frame}

\begin{frame}{Sind Eulerkreise eindeutig?}
    \begin{center}
        \large Sind Eulerkreise bis auf Rotation und Symmetrie eindeutig?
    \end{center}
\end{frame}

\tikzstyle{markedCircle}=[blue,line width=1pt,rotate=90,decorate,decoration={snake, segment length=2mm, amplitude=0.4mm},->]
\tikzstyle{markedCircle2}=[red,line width=1pt,rotate=90,decorate,decoration={snake, segment length=3mm, amplitude=0.4mm},->]
\begin{frame}{Sind Eulerkreise eindeutig?}
    \begin{tikzpicture}[scale=1.9]
        \node[vertex,label=$a_1$] (a1) at (1,2) {};
        \node[vertex,label=$b_1$] (b1) at (3,2) {};
        \node[vertex,label=$c_1$] (c1) at (2,1) {};

        \node[vertex,label=$b_2$] (b2) at (0,2) {};
        \node[vertex,label=$c_2$] (c2) at (1,3) {};

        \node[vertex,label=$c_3$] (c3) at (3,3) {};
        \node[vertex,label=$a_3$] (a3) at (4,2) {};

        \draw (a1) -- (b1) -- (c1) -- (a1) -- cycle;
        \draw (a1) -- (b2) -- (c2) -- (a1) -- cycle;
        \draw (b1) -- (c3) -- (a3) -- (b1) -- cycle;

        \node<2->[vertex, red] (a1) at (1,2) {};

        \draw<2->[color=blue, markedCircle,->] (a1.center) -- (b2.center);
        \draw<3->[color=blue, markedCircle] (b2.center) -- (c2.center);
        \draw<4->[color=blue, markedCircle] (c2.center) -- (a1.center);
        \draw<5->[color=blue, markedCircle] (a1.center) -- (b1.center);
        \draw<6->[color=blue, markedCircle] (b1.center) -- (c3.center);
        \draw<7->[color=blue, markedCircle] (c3.center) -- (a3.center);
        \draw<8->[color=blue, markedCircle] (a3.center) -- (b1.center);
        \draw<9->[color=blue, markedCircle] (b1.center) -- (c1.center);
        \draw<10->[color=blue, markedCircle] (c1.center) -- (a1.center);

        \draw<11->[markedCircle2] (a1) -- (b2.center);
        \draw<12->[markedCircle2] (b2.center) -- (c2.center);
        \draw<13->[markedCircle2] (c2.center) -- (a1.center);
        \draw<14->[markedCircle2] (a1.center) -- (b1.center);
        \draw<15->[markedCircle2] (b1.center) -- (a3.center);
        \draw<16->[markedCircle2] (a3.center) -- (c3.center);
        \draw<17->[markedCircle2] (c3.center) -- (b1.center);
        \draw<18->[markedCircle2] (b1.center) -- (c1.center);
        \draw<19->[markedCircle2] (c1.center) -- (a1.center);
    \end{tikzpicture}

    \pause
    $\Rightarrow$ Eulerkreise sind im Allgemeinen nicht eindeutig
\end{frame}

\begin{frame}{Offene eulersche Linie}
\begin{block}{Offene eulersche Linie}
Sei $G$ ein Graph und $A$ ein Weg, der kein Kreis ist.

$A$ heißt \textbf{offene eulersche Linie} von $G :\Leftrightarrow$ Jede Kante
in $G$ kommt genau ein mal in $A$ vor.
\end{block}

Ein Graph kann genau dann "`in einem Zug"' gezeichnet werden, wenn er eine
offene eulersche Linie besitzt.
\end{frame}

\begin{frame}{Offene eulersche Linie}
\begin{block}{Satz 8.2.3}
Sei $G$ ein zusammenhängender Graph.

$G$ hat eine offene eulersche Linie $:\Leftrightarrow G$ hat genau zwei Ecken
ungeraden Grades.
\end{block}

\pause

\begin{block}{Beweis "`$\Rightarrow"'$}
Sei $G=(E, K)$ ein zusammenhängender Graph und $L = (e_0, \dots, e_s)$ eine offene
eulersche Linie. \pause
Sei $G^* = (E, K \cup \Set{e_s, e_0})$. \pause
Es gibt einen Eulerkreis in $G^*$ \pause \\
$\xLeftrightarrow{\text{Satz von Euler}}$ In $G^*$ hat jede Ecke geraden Grad \pause \\
Der Grad von nur zwei Kanten wurde um jeweils 1 erhöht \pause \\
$\Leftrightarrow$ in $G$ haben genau 2 Ecken ungeraden Grad. Diese heißen $e_0, e_s$. $\blacksquare$
\end{block}

\pause
Rückrichtung analog
\end{frame}

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\begin{frame}{Haus des Nikolaus}
    \tikzstyle{selected edge} = [draw,line width=5pt,-,red!50]
    \begin{center}
    \adjustbox{max size={\textwidth}{0.8\textheight}}{
    \begin{tikzpicture}
        \node[vertex] (a) at (0,0) {};
        \node[vertex] (b) at (2,0) {};
        \node[vertex] (c) at (2,2) {};
        \node[vertex] (d) at (0,2) {};
        \node[vertex] (e) at (1,4) {};

        \draw (a) -- (d);
        \draw (d) -- (b);
        \draw (b) -- (c);
        \draw (c) -- (d);
        \draw (d) -- (e);
        \draw (e) -- (c);
        \draw (c) -- (a);
        \draw (a) -- (b);

        \node<2->[vertex, red] (a) at (0,0) {};

        \begin{pgfonlayer}{background}
            \path<2->[selected edge] (a.center) edge node {} (d.center);
            \path<3->[selected edge] (d.center) edge node {} (b.center);
            \path<4->[selected edge] (b.center) edge node {} (c.center);
            \path<5->[selected edge] (c.center) edge node {} (d.center);
            \path<6->[selected edge] (d.center) edge node {} (e.center);
            \path<7->[selected edge] (e.center) edge node {} (c.center);
            \path<8->[selected edge] (c.center) edge node {} (a.center);
            \path<9->[selected edge] (a.center) edge node {} (b.center);
        \end{pgfonlayer}
    \end{tikzpicture}
    }
    \end{center}
\end{frame}
