Eulerkreisproblem.tex 5.6 KB

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