Parcourir la source

Kantenzug-Defnition verbessert; Definition einer Schleife hinzugefügt; RectangleFreeColoring; Hierholzer-Algorithmus; Nicht-Eindeutigkeit von Eulerkreisen

Martin Thoma il y a 12 ans
Parent
commit
c66e19636b

+ 34 - 16
presentations/Diskrete-Mathematik/Handout/Handout.tex

@@ -140,7 +140,7 @@ $k$ heißt \textbf{Schlinge} $:\Leftrightarrow e_1 = e_2$
 \begin{definition}{Vollständiger Graph}
 Sei $G = (E, K)$ ein Graph.
 
-$G$ heißt \textbf{vollständig} $:\Leftrightarrow K = E \times E \setminus \Set{e \in E: \Set{e, e}}$
+$G$ heißt \textbf{vollständig} $:\Leftrightarrow K = E \times E \setminus \Set{\Set{e, e} | e \in E}$
 \end{definition}
 
 Ein vollständiger Graph mit $n$ Ecken wird als $K_n$ bezeichnet.
@@ -173,10 +173,14 @@ gilt ein \textbf{Kantenzug}, der $e_0$ und $e_s$ \textbf{verbindet} und $s$
 seine \textbf{Länge}.
 \end{definition}
 
+Ein Kantenzug wird durch den Tupel $(e_0, \dots, e_s) \in E^{s+1}$ 
+charakterisiert.
+
 \begin{definition}{Geschlossener Kantenzug}
-Sei $G = (E, K)$ ein Graph und $A = (e_0, e_1, \dots, e_s)$ ein Kantenzug.
+Sei $G = (E, K)$ ein Graph und $A = (k_1, k_2, \dots, k_s)$ ein Kantenzug
+mit $k_1 = \Set{e_0, e_1}$ und $k_s = \Set{e_{s-1}, e_s}$.
 
-A heißt \textbf{geschlossen} $:\Leftrightarrow e_s = e_0$ .
+A heißt \textbf{geschlossen} $:\Leftrightarrow e_0 = e_s$ .
 \end{definition}
 
 \begin{definition}{Weg}
@@ -191,6 +195,20 @@ Sei $G = (E, K)$ ein Graph und $A = (k_1, k_2 \dots, k_s)$ ein Kantenzug.
 A heißt \textbf{Kreis} $:\Leftrightarrow A$ ist geschlossen und ein Weg.
 \end{definition}
 
+\vspace{0.5cm}
+\begin{theorem}{Aufgabe 5}
+    ~~~
+    \begin{precondition}
+        Sei $G = (E, K)$ ein Graph, in dem jede Ecke min. Grad 2 hat.
+    \end{precondition}
+    \begin{claim}
+        Es ex. ein Kreis $C$ in $G$ mit $|C| > 0$
+    \end{claim}
+    \begin{Proof} In den Folien.
+    \end{Proof}
+\end{theorem}
+\vspace{0.5cm}
+
 \begin{definition}{Zusammenhängender Graph}
 Sei $G = (E, K)$ ein Graph.
 
@@ -226,8 +244,8 @@ Ein Graph heißt \textbf{eulersch}, wenn er einen eulerschen Kreis enthält.
         Wenn ein Graph $G$ eulersch ist, dann hat jede Ecke von $G$ geraden Grad.
     \end{claim}
     \begin{Proof} Direkt\\
-        Sei $C = (e_0, \dots, e_n, e_0)$ ein Eulerkreis in $G$
-        $\Rightarrow $ Es gilt: $\forall e \in E \exists i \in \Set{0, \dots, n}: e = e_i$ und alle Kanten aus $G$ sind genau ein mal in $C$.\\
+        Sei $C = (e_0, \dots, e_n, e_0) \in E^{n+2}$ ein Eulerkreis in $G$
+        $\Rightarrow $ Es gilt: $\forall e \in E\;\exists i \in \Set{0, \dots, n}: e = e_i$ und alle Kanten aus $G$ sind genau ein einziges Mal in $C$.\\
         Außerdem gilt: 
         \[\text{Grad}(e_i) = \begin{cases}
             2 \cdot \text{Anzahl der Vorkommen von } e_i \text{ in } C & \text{falls } i\neq 0\\
@@ -269,13 +287,13 @@ Ein Graph heißt \textbf{eulersch}, wenn er einen eulerschen Kreis enthält.
 
         Es gilt: 
         \begin{itemize}
-            \item Jede Ecke in $G^*$ hat geraden Grad
-            \item Jede Zusammenhangskomponente hat weniger als $m$ Knoten
-            \item[$\Rightarrow$] I.V. ist auf jede Zusammenhangskomponente anwendbar
-            \item[$\Rightarrow$] Jede Zusammenhangskomponente hat einen Eulerkreis
-            \item[$\Rightarrow$] Man kann den Kreis $C$ durch die Eulerkreise erweitern und erhält insgesamt einen Eulerkreis
+            \item Jede Ecke in $G^*$ hat geraden Grad.
+            \item Jede Zusammenhangskomponente hat weniger als $m$ Knoten.
+            \item[$\Rightarrow$] I.V. ist auf jede Zusammenhangskomponente anwendbar.
+            \item[$\Rightarrow$] Jede Zusammenhangskomponente hat einen Eulerkreis.
+            \item[$\Rightarrow$] Der Kreis $C$ kann durch die Eulerkreise erweitern werden. So erhält man insgesamt einen Eulerkreis.
         \end{itemize}
-        $\Rightarrow$ $G$ ist eulersch 
+        $\Rightarrow$ $G$ ist eulersch.
     \end{Proof}
 \end{theorem}
 \vspace{0.5cm}
@@ -295,11 +313,11 @@ in $G$ kommt genau ein mal in $A$ vor.
     \begin{claim}
         $G$ hat eine offene eulersche Linie $:\Leftrightarrow G$ hat genau zwei Ecken ungeraden Grades
     \end{claim}
-    \begin{Proof} Direkt von \enquote{$\Rightarrow$}, Rückrichtung \enquote{$\Leftarrow$} analog\\
-        Sei $L=(e_0, \dots, e_s)$ in $G$  eine offene eulerschle Linie in $G$.\\
-        $\Leftrightarrow G^* = (E, K \cup \Set{e_s, e_0})$ hat einen Eulerkreis\\
-        $\Leftrightarrow G^*$ hat nur Knoten geraden Grades\\
-        $\Leftrightarrow G$ hat genau zwei Knoten ($e_0, e_s$) ungeraden Grades
+    \begin{Proof} Direkt von \enquote{$\Rightarrow$}; Rückrichtung \enquote{$\Leftarrow$} analog\\
+        Sei $L=(e_0, \dots, e_s)$ in $G$  eine offene eulersche Linie in $G$.\\
+        $\Leftrightarrow G^* = (E, K \cup \Set{e_s, e_0})$ hat einen Eulerkreis.\\
+        $\Leftrightarrow G^*$ hat nur Knoten geraden Grades.\\
+        $\Leftrightarrow G$ hat genau zwei Knoten ($e_0, e_s$) ungeraden Grades.
     \end{Proof}
 \end{theorem}
 

+ 60 - 0
presentations/Diskrete-Mathematik/LaTeX/Ende.tex

@@ -212,6 +212,66 @@ Gebe $G_n$ formal an.
 
 \end{frame}
 
+\begin{frame}{{\sc RectangleFreeColoring}}
+    \begin{block}{{\sc RectangleFreeColoring}}
+        Gegeben ist $n, m \in \mathbb{N}_{\geq 1}$ und ein 
+        ungerichteter Graph $G = (E, K)$ mit 
+            \[E = \Set{e_{x,y} | 1 \leq x \leq n} \land 1 \leq y \leq m\]
+        und
+            \[K = \Set{k=\Set{e_{x,y}, e_{x',y'}} \in E \times E : |x-x'| + |y-y'| = 1} \]
+        
+        Färbe die Ecken von $G$ min einer minimalen Anzahl von Farben so, dass gilt:
+            \[\forall e_{x,y}, e_{x',y'} \in E: \neg(c(e_{x,y}) = c(e_{x',y'}) = c(e_{x',y}) = c(e_{x,y'}))\]
+    \end{block}
+\end{frame}
+
+\begin{frame}{{\sc RectangleFreeColoring}}
+    $4 \times 4$ - Instanz:\\
+
+    \vspace{1cm}
+    \begin{tikzpicture}
+        \newcommand{\n}{4}
+        \newcommand{\m}{4}
+        \foreach \x in {1, ..., \n}{
+            \foreach \y in {1, ..., \m}{
+                \node[vertex] (n-\x-\y) at (\x,\y) {};
+            }
+        }
+
+        \foreach \x in {1, ..., \n}{
+            \foreach \y in {1, ..., \m}{
+                \ifthenelse{\x<\n}{\draw (\x,\y) -- (\x+1,\y);}{}
+            }
+        }
+        \foreach \y in {1, ..., \m}{
+            \foreach \x in {1, ..., \n}{
+                \ifthenelse{\y<\m}{\draw (\x,\y) -- (\x,\y+1);}{}
+            }
+        }
+
+        \node[vertex,blue] (n-1-1) at (1,1) {};
+        \node[vertex,blue] (n-2-1) at (2,1) {};
+        \node[vertex,blue] (n-3-1) at (3,1) {};
+        \node[vertex,red]  (n-4-1) at (4,1) {};
+
+        \node[vertex,blue] (n-1-1) at (1,2) {};
+        \node[vertex,red]  (n-2-1) at (2,2) {};
+        \node[vertex,red]  (n-3-1) at (3,2) {};
+        \node[vertex,blue] (n-4-1) at (4,2) {};
+
+        \node[vertex,red]  (n-1-1) at (1,3) {};
+        \node[vertex,blue] (n-2-1) at (2,3) {};
+        \node[vertex,red]  (n-3-1) at (3,3) {};
+        \node[vertex,blue] (n-4-1) at (4,3) {};
+
+
+        \node[vertex,red]  (n-1-1) at (1,4) {};
+        \node[vertex,red]  (n-2-1) at (2,4) {};
+        \node[vertex,blue] (n-3-1) at (3,4) {};
+        \node[vertex,blue] (n-4-1) at (4,4) {};
+    \end{tikzpicture}
+\end{frame}
+
 \subsection{Bildquellen}
 \begin{frame}{Bildquellen}
 \begin{itemize}

BIN
presentations/Diskrete-Mathematik/LaTeX/Graphentheorie-I.pdf


+ 0 - 4
presentations/Diskrete-Mathematik/LaTeX/Graphentheorie-I.tex

@@ -18,10 +18,6 @@
     \setcounter{tocdepth}{2}
 }
 
-%\AtBeginSection[]{
-%    \InsertToC[sections={\thesection}]  % shows only subsubsections of one subsection
-%}
-
 \section{Grundlagen}
 \input{Grundlagen}
 

+ 90 - 2
presentations/Diskrete-Mathematik/LaTeX/Koenigsberger-Brueckenproblem.tex

@@ -27,7 +27,9 @@ Ein Graph heißt \textbf{eulersch}, wenn er einen eulerschen Kreis enthält.
 \end{frame}
 
 \begin{frame}{Hamiltonkreis}
-ACHTUNG, VERWECHSLUNGSGEFAHR:
+\begin{alertblock}{Achtung}
+Verwechslungsgefahr: Hamiltonkreis $\neq$ Eulerkreis
+\end{alertblock}
 
 \begin{block}{Hamiltonkreis}
 Sei $G$ ein Graph und $A$ ein Kreis in $G$.
@@ -122,6 +124,23 @@ $A$ heißt \textbf{eulerscher Kreis} $:\Leftrightarrow \forall_{k \in K}: k \in
           \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}
@@ -164,7 +183,7 @@ ist $G$ eulersch.
 \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\\ % Anzeichnen
+$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 
@@ -203,6 +222,75 @@ $\Rightarrow$ $C_1, \dots, C_n$ können in $C$ \enquote{eingehängt} werden\\
 $\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}
+    $\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.

+ 1 - 1
presentations/Diskrete-Mathematik/LaTeX/Spezielle-Graphen.tex

@@ -3,7 +3,7 @@
 \begin{block}{Vollständiger Graph}
 Sei $G = (E, K)$ ein Graph.
 
-$G$ heißt \textbf{vollständig} $:\Leftrightarrow K = E \times E \setminus \Set{e \in E: \Set{e, e}}$
+$G$ heißt \textbf{vollständig} $:\Leftrightarrow K = E \times E \setminus \Set{\Set{e, e} | e \in E}$
 \end{block}
 
 Ein vollständiger Graph mit $n$ Ecken wird als $K_n$ bezeichnet.

+ 6 - 2
presentations/Diskrete-Mathematik/LaTeX/Strukturen.tex

@@ -53,11 +53,15 @@ seine \textbf{Länge}.
 
 \begin{frame}{Geschlossener Kantenzug}
 \begin{block}{Geschlossener Kantenzug}
-Sei $G = (E, K)$ ein Graph und $A = (e_0, e_1, \dots, e_s)$ ein Kantenzug.
+Sei $G = (E, K)$ ein Graph und $A = (k_1, k_2, \dots, k_s)$ ein Kantenzug
+mit $k_1 = \Set{e_0, e_1}$ und $k_s = \Set{e_{s-1}, e_s}$.
 
-A heißt \textbf{geschlossen} $:\Leftrightarrow e_s = e_0$ .
+A heißt \textbf{geschlossen} $:\Leftrightarrow e_0 = e_s$ .
 \end{block}
 
+Ein Kantenzug wird durch den Tupel $(e_0, \dots, e_s) \in E^{s+1}$ 
+charakterisiert.
+
 \begin{gallery}
     \galleryimage{walks/walk-1}
     \galleryimage{walks/walk-2}

+ 8 - 0
presentations/Diskrete-Mathematik/LaTeX/graphs/Makefile

@@ -0,0 +1,8 @@
+SOURCE = euler-nicht-eindeutig
+
+make:
+	pdflatex -shell-escape $(SOURCE).tex -output-format=pdf # shellescape wird fürs logo benötigt
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux *.out *.glo *.glg *.gls *.ist *.xdy *.1 *.toc *.snm *.nav *.vrb *.fls *.fdb_latexmk *.pyg

+ 57 - 0
presentations/Diskrete-Mathematik/LaTeX/graphs/euler-nicht-eindeutig.tex

@@ -0,0 +1,57 @@
+\documentclass[hyperref={pdfpagelabels=false},usepdftitle=false]{beamer}
+\usepackage{../../templates/myStyle}
+
+\begin{document}
+
+\title{\titleText}
+\subtitle{}
+\author{\tutor}
+\date{2. Juli 2013}
+\subject{Diskrete Mathematik}
+
+\tikzstyle{vertex}=[draw,circle,fill,minimum size=10pt,inner sep=0pt]
+\tikzstyle{edge}=[red, very thick]
+\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},->]
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+\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}
+\end{frame}
+\end{document}

+ 3 - 3
presentations/Diskrete-Mathematik/templates/myStyle.sty

@@ -13,16 +13,16 @@
 \usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
 \usepackage{verbatim}
 \usepackage{tikz}
-\usetikzlibrary{arrows,shapes}
+\usetikzlibrary{arrows,shapes,decorations.pathmorphing}
 \usepackage{relsize}
 \usepackage{subfigure}
-\usepackage{algorithm,algpseudocode}
+\usepackage[Algorithmus]{algorithm}
+\usepackage{algpseudocode}
 \usepackage{minted}         % needed for the inclusion of source code
 \usepackage{menukeys}
 \usepackage{xcolor}
 \usepackage{pifont}% http://ctan.org/pkg/pifont
 \usepackage{soul}
-\usepackage{algorithm,algpseudocode}
 \usepackage{braket}
 
 % Define some styles for graphs