Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132934 views
License: OTHER
1
\subsection{Eulerkreisproblem}
2
3
\begin{frame}{Eulerkreisproblem}{Eulerian path}
4
\begin{block}{Erklärung}
5
Ein Eulerkreis ist ein Kreis in einem Graphen, in dem jede Kante genau einmal benutzt wird.
6
\end{block}
7
\end{frame}
8
9
\begin{frame}{Eulerkreisproblem}{Bedingungen}
10
\begin{block}{Im ungerichteten Graph}
11
Es existiert ein Eulerkreis\\
12
$\Leftrightarrow$ Der Graph ist zusammenhängend und jeder Knoten hat geraden Grad
13
\end{block}
14
15
\begin{block}{Im gerichteten Graph}
16
Es existiert ein Eulerkreis\\
17
$\Leftrightarrow$ Der Graph ist stark zusammenhängend und für jeden Knoten gilt: Eingangsgrad = Ausgangsgrad
18
\end{block}
19
\end{frame}
20
21
\begin{frame}{Algorithmus von Fleury}
22
Das Eulerkreisproblem ist effizient lösbar:
23
24
Algorithmus von Fleury $\in {\cal O}(|E|^2) $:
25
26
\begin{enumerate}
27
\item Start bei einem beliebigen Knoten
28
\item Wähle eine unmarkierte von dem Knoten ausgehende Kante, die wenn möglich im Restgraphen keine Brückenkante ist. Wenn es nur Brückenkanten gibt, dann dann wird die Kante zu dem Knoten genommen, der den höhere Ausgangsgrad hat
29
\item Markiere diese Kante, füge sie der Kreis hinzu
30
\item Wähle den zu der markierten Kante adjazenten Knoten
31
\item Wenn dieser Knoten noch unmarkierte Kanten besitzt: \\GOTO 2.
32
\end{enumerate}
33
\end{frame}
34
35
%\begin{frame}{Algorithmus von Fleury}{Anwendungsbeispiel}
36
% Wortmenge: $\{$as, man, meet, nets, set, sum, tea, team$\}$
37
%
38
% Menge der Anfangs- und Endbuchstaben: $\{$a, m, n, s, t$\}$
39
% \begin{figure}
40
% \begin{tikzpicture}[->,scale=1.8, auto,swap]
41
% % Draw a 7,11 network
42
% % First we draw the vertices
43
% \foreach \pos/\name in {{(0,0)/a}, {(0,2)/s},
44
% {(4,0)/m}, {(2,2)/t}, {(3,2)/n}}
45
% \node[vertex] (\name) at \pos {$\name$};
46
% % Connect vertices with edges and draw weights
47
% \foreach \source/ \dest /\foo /\pos in {a/s/as/,s/m/sum/bend right,
48
% s/t/set/, m/t/meet/bend left,m/n/man/bend right,
49
% t/a/tea/bend left, t/m/team/bend left, n/s/nets/bend right}
50
% \path (\source) edge [\pos] node {\foo} (\dest);
51
% \end{tikzpicture}
52
% \end{figure}
53
%\end{frame}
54
55
\begin{frame}{Algorithmus von Fleury}{Anwendungsbeispiel}
56
\begin{figure}
57
\begin{tikzpicture}[->,scale=1.7, auto,swap]
58
% Draw a 7,11 network
59
% First we draw the vertices
60
\foreach \pos/\name in {{(0,1)/a}, {(2,0)/c}, {(2,3)/b},
61
{(4,3)/d}, {(4,1)/e}, {(6,2)/f}, {(6,0)/g}}
62
\node[vertex] (\name) at \pos {$\name$};
63
% Connect vertices with edges and draw weights
64
\foreach \source/ \dest /\pos in {b/a/,c/a/,a/d/,a/e/,c/b/, d/b/, b/e/, e/c/, g/c/, e/d/, d/f/, f/g/}
65
\path (\source) edge [\pos] node {} (\dest);
66
% Start animating the edge selection.
67
% For convenience we use a background layer to highlight edges
68
% This way we don't have to worry about the highlighting covering
69
% weight labels.
70
\begin{pgfonlayer}{background}
71
\foreach \source / \dest / \fr / \pos in {a/a/1/, a/e/2/, e/d/3/, d/b/4/, b/a/5/,
72
a/d/6/, d/f/7/, f/g/8/, g/c/9/, c/b/10/,
73
b/e/11/, e/c/12/, c/a/13/}
74
\path<\fr->[selected edge] (\source.center) edge [\pos] node {} (\dest.center);
75
\end{pgfonlayer}
76
\end{tikzpicture}
77
\end{figure}
78
\end{frame}
79
80
\begin{frame}{Algorithmus von Hierholz}
81
Effizienter als Fleury
82
83
\begin{enumerate}
84
\item Start bei einem beliebigen Knoten v
85
\item Folge so lange Kanten, bis man wieder in v ist
86
\item Wiederhole diesen Schritt bei einem Knoten, der bereits in einem Kreis ist und der noch unmarkierte Kanten hat
87
\end{enumerate}
88
\end{frame}
89
90
\begin{frame}{Algorithmus von Hierholz}{Anwendungsbeispiel}
91
\begin{figure}
92
\begin{tikzpicture}[->,scale=1.7, auto,swap]
93
% Draw a 7,11 network
94
% First we draw the vertices
95
\foreach \pos/\name in {{(0,1)/a}, {(2,0)/c}, {(2,3)/b},
96
{(4,3)/d}, {(4,1)/e}, {(6,2)/f}, {(6,0)/g}}
97
\node[vertex] (\name) at \pos {$\name$};
98
% Connect vertices with edges and draw weights
99
\foreach \source/ \dest /\pos in {b/a/,c/a/,a/d/,a/e/,c/b/, d/b/, b/e/, e/c/, g/c/, e/d/, d/f/, f/g/}
100
\path (\source) edge [\pos] node {} (\dest);
101
% Start animating the edge selection.
102
% For convenience we use a background layer to highlight edges
103
% This way we don't have to worry about the highlighting covering
104
% weight labels.
105
\begin{pgfonlayer}{background}
106
\foreach \source / \dest / \fr / \pos in {a/a/1/, a/e/2/, e/d/3/, d/b/4/, b/a/5/,
107
e/c/6/, c/b/7/, b/e/8/, d/f/9/, f/g/10/,
108
g/c/11/, c/a/12/, a/d/13/}
109
\path<\fr->[selected edge] (\source.center) edge [\pos] node {} (\dest.center);
110
\end{pgfonlayer}
111
\end{tikzpicture}
112
\end{figure}
113
\end{frame}
114
115
\begin{frame}{Eulerpfad}
116
\begin{figure}
117
\begin{tikzpicture}[,scale=1.8, auto,swap]
118
% Draw a 7,11 network
119
% First we draw the vertices
120
\foreach \pos/\name in {{(0,0)/a}, {(2,0)/b}, {(0,2)/c},
121
{(2,2)/d}, {(1,3)/e}}
122
\node[vertex] (\name) at \pos {$\name$};
123
% Connect vertices with edges and draw weights
124
\foreach \source/ \dest /\pos in {a/b/,b/c/, c/d/, d/e/, a/c/, a/d/, b/d/, c/e/}
125
\path (\source) edge [\pos] node {} (\dest);
126
% Start animating the edge selection.
127
% For convenience we use a background layer to highlight edges
128
% This way we don't have to worry about the highlighting covering
129
% weight labels.
130
\begin{pgfonlayer}{background}
131
\foreach \source / \dest / \fr / \pos in {a/a/1/, b/d/2/, d/c/3/, c/e/4/, e/d/5/, d/a/6/,
132
a/b/7/, b/c/8/, c/a/9/}
133
\path<\fr->[selected edge] (\source.center) edge [\pos] node {} (\dest.center);
134
\end{pgfonlayer}
135
\end{tikzpicture}
136
\end{figure}
137
Es kann einen Eulerpfad, aber keinen Eulerkreis geben
138
\end{frame}
139