diff --git a/school/di-ma/20181120_1-hamiltonkreise.md b/school/di-ma/20181120_1-hamiltonkreise.md index 29182da..4e9f635 100644 --- a/school/di-ma/20181120_1-hamiltonkreise.md +++ b/school/di-ma/20181120_1-hamiltonkreise.md @@ -127,6 +127,7 @@ $$ Der Beweis liefert auch einen Algorithmus, um für solche Graphen effizient Hamiltonkreise zu finden. + **Idee**: Gegeben $G=(V,E)$. Starte mit beliebigen Hamiltonkreis $k=(v_1,...v_n)$ wobei nicht alle Kanten in $E$ liegen (kein Hamiltonkreis in $G$). diff --git a/school/di-ma/20181121_1-doublenikolaus.dot b/school/di-ma/20181121_1-doublenikolaus.dot new file mode 100644 index 0000000..8f544d5 --- /dev/null +++ b/school/di-ma/20181121_1-doublenikolaus.dot @@ -0,0 +1,21 @@ +graph g { + rankdir="LR"; + node [ shape="circle" ]; + { + rank="same"; + 2; + 3; + } + { + rank="same"; + 4; + 5; + } + + 1 -- 2 -- 4 -- 6; + 1 -- 3 -- 5 -- 6; + 2 -- 3; + 4 -- 5; + 2 -- 5; + 3 -- 4; +} diff --git a/school/di-ma/20181121_1-euler.dot b/school/di-ma/20181121_1-euler.dot new file mode 100644 index 0000000..07fa286 --- /dev/null +++ b/school/di-ma/20181121_1-euler.dot @@ -0,0 +1,15 @@ +graph g { + node [ shape="circle" ]; + { + rank="same"; + 1; + 3; + 5; + 6; + } + + 2 -- 1 -- 4; + 2 -- 3 -- 4; + 2 -- 5 -- 4; + 2 -- 6 -- 4; +} diff --git a/school/di-ma/20181121_1-eulertouren.md b/school/di-ma/20181121_1-eulertouren.md new file mode 100644 index 0000000..0960515 --- /dev/null +++ b/school/di-ma/20181121_1-eulertouren.md @@ -0,0 +1,110 @@ +--- +title: Eulertouren +date: 2018-11-21 +--- + +**Frage**: Gibt es einen Rundweg, auf dem man jede Brücke genau einmal +überquert? + +Entspricht der Frage, ob es in dem Graph (der leider kein Graph in unserem +Sinne ist) einen Weg gibt, der + +i) jede Kante enthält +i) Start- und Endknoten gleich sind + +# Definition (Eulertour) + +Sei $G=(V,E)$ ein zusammenhängender Graph. + +i) Eine **Eulertour** in $G$ ist ein Weg, der jede Kante genau einmal +durchläuft und bei dem Start- und Endknoten gleich sind + +i) Ein Graph, der eine Eulertour enthält, heißt **eulersch** + + +**Beispiel**: + +a) ![Eulerscher Graph](20181121_1-euler.png) ist eulersch, da +$(1,4,3,2,6,4,5,2,1)$ eine Eulertour ist + +a) ![Haus vom Nikolaus](20181121_1-nikolaus.png) enthält zwar einen Weg, der + alle Kanten genau einmal besucht, aber **keine** Eulertour $\Rightarrow$ nicht + eulersch. + + Warum nicht eulersch? + + Betrachte Knoten $1$, $deg(1) = 3$ + + 1) Falls $1$ Startknoten ist, dann kann $1$ nicht Endknoten sein, da es + keine nicht benutzte Kante mehr gibt, die zu $1$ hinführt, nachdem $1$ + 2-mal besucht wurde + + 2) Falls $1$ nicht Startknoten, dann endet die Tour entweder in $1$ oder + eine zu $1$ inzidente Kante wird nicht besucht + + $\Rightarrow$ Falls $G$ eulesch gilt $2 | deg(v), \forall v \in V$ + + Diese Bedingung ist nicht nur notwendig, sondern auch hinreichend. + + +# Satz + +Sei $G=(V,E)$ ein zusammenhängender Graph. Dann ist $G$ eulersch, genau dann, +wenn $2 | deg(v), \forall v \in V$ ($deg(v)$ ist gerade). + + +# Beweis + +"$\Rightarrow$" siehe oben + +"$\Leftarrow$" Sei $G=(V,E)$ ein zusammenhängender Graph mit $2 | deg(v), +\forall v \in V$. Wir müssen zeigen, dass $G$ eine Eulertour enthält. Wir +konstruieren diese wie folgt: + +* wähle einen beliebigen Knoten $v_0 \in V$ und setzen $W_0 = (v_0)$, $i + \leftarrow 0$ + +* solange (es gibt noch eine Kante, die in $W_i$ nicht besucht wurde) + + i) wähle Knoten $v_k \in W_i$, der zu einer Kante $\{v_k,u\}$ inzident ist, + die noch nicht besucht wurde + + i) konstruiere einen Weg $W' = (v_k, u=u_0,u_1,...,u_s,v_k)$ aus Kanten, + die in $W_i$ noch nicht benutzt wurden und der wieder in $v_k$ endet + + i) setze $W_{i+1}$ auf den aus $W_i$ und $W'$ zusammengesetzten Weg, d.h. + für $W_i = (v_0,...,v_0)$ setze $W_{i+1} = + (v_0,...,v_k,u_0,...,u_s,v_k,v_{k-1},...,v_0)$ + + i) setze $i \leftarrow i + 1$ + + +Der Algorithmus ist korrekt, denn + +i) bei Terminierung ist $W_i$ eine Eulertour + +i) Der Weg $W'$ kann immer konstruiert werden, da + + a) Die Anzahl der besuchten Kanten in $W_i$ ist für jeden Knoten gerade. Da + $deg(v)$ gerade ist, ist auch die Anzahl der nicht besuchten Kanten pro + Knoten gerade + + a) Daher können wir aus jedem besuchten Knoten in $W'$ weiterlaufen, bis + wir wieder in $v_k$ landen. + +$$ +\tag*{$\Box$} +$$ + + +**Beispiel**: ![Doppelter Nikolaus](20181121_1-doublenikolaus.png) + +* starte mit $(1)$ +* dann $W' = (1,3,2,1)$, $W_1 = (1,3,2,1)$ +* dann $W' = (2,4,5,2)$, $W_2 = (1,3,2,4,5,2,1)$ +* dann $W' = (3,5,6,4,3)$ + +$\Rightarrow$ $W_3 = (1,3,5,6,4,3,2,4,5,2,1)$ als Eulertour in $G$. + + +**Laufzeit**: $O(|E|)$ diff --git a/school/di-ma/20181121_1-nikolaus.dot b/school/di-ma/20181121_1-nikolaus.dot new file mode 100644 index 0000000..1b0c221 --- /dev/null +++ b/school/di-ma/20181121_1-nikolaus.dot @@ -0,0 +1,21 @@ +graph g { + node [ shape="circle" ]; + + { + rank="same"; + 4; + 3; + } + { + rank="same"; + 1; + 2; + } + + 5 -- 4 -- 1; + 5 -- 3 -- 2; + 4 -- 3; + 1 -- 2; + 4 -- 2; + 3 -- 1; +} diff --git a/school/di-ma/20181121_2-k23.dot b/school/di-ma/20181121_2-k23.dot new file mode 100644 index 0000000..2923569 --- /dev/null +++ b/school/di-ma/20181121_2-k23.dot @@ -0,0 +1,21 @@ +graph k23 { + rankdir="LR"; + node [ shape="point" ]; + { + rank="same"; + 1; + 2; + } + { + rank="same"; + 3; + 4; + 5; + } + 1 -- 3; + 1 -- 4; + 1 -- 5; + 2 -- 3; + 2 -- 4; + 2 -- 5; +} diff --git a/school/di-ma/20181121_2-k3.dot b/school/di-ma/20181121_2-k3.dot new file mode 100644 index 0000000..894ec51 --- /dev/null +++ b/school/di-ma/20181121_2-k3.dot @@ -0,0 +1,11 @@ +graph g { + node [ shape="point" ]; + { + rank="same"; + 2; + 3; + } + 1 -- 2; + 1 -- 3; + 2 -- 3; +} diff --git a/school/di-ma/20181121_2-k33.dot b/school/di-ma/20181121_2-k33.dot new file mode 100644 index 0000000..478c238 --- /dev/null +++ b/school/di-ma/20181121_2-k33.dot @@ -0,0 +1,25 @@ +graph k33 { + rankdir="LR"; + node [ shape="point" ]; + { + rank="same"; + 1; + 2; + 3; + } + { + rank="same"; + 4; + 5; + 6; + } + 1 -- 4; + 1 -- 5; + 1 -- 6; + 2 -- 4; + 2 -- 5; + 2 -- 6; + 3 -- 4; + 3 -- 5; + 3 -- 6; +} diff --git a/school/di-ma/20181121_2-k4.dot b/school/di-ma/20181121_2-k4.dot new file mode 100644 index 0000000..01b1a31 --- /dev/null +++ b/school/di-ma/20181121_2-k4.dot @@ -0,0 +1,17 @@ +graph k4 { + splines=false; + node [ shape="point" ]; + { + rank="same"; + 3; + 5 [ style="invis" ]; + 4; + } + 1 -- 2; + 1 -- 3; + 1 -- 4; + 2 -- 3; + 2 -- 4; + 3 -- 5; + 5 -- 4; +} diff --git a/school/di-ma/20181121_2-k4_unterteilung.dot b/school/di-ma/20181121_2-k4_unterteilung.dot new file mode 100644 index 0000000..43a701a --- /dev/null +++ b/school/di-ma/20181121_2-k4_unterteilung.dot @@ -0,0 +1,17 @@ +graph k4 { + splines=false; + node [ shape="point" ]; + { + rank="same"; + 3; + 5; + 4; + } + 1 -- 6 -- 2; + 1 -- 3; + 1 -- 4; + 2 -- 3; + 2 -- 4; + 3 -- 5; + 5 -- 4; +} diff --git a/school/di-ma/20181121_2-k5.dot b/school/di-ma/20181121_2-k5.dot new file mode 100644 index 0000000..6db6ec2 --- /dev/null +++ b/school/di-ma/20181121_2-k5.dot @@ -0,0 +1,26 @@ +graph k5 { + splines=false; + node [ shape="point" ]; + { + rank="same"; + 2; + 6 [ style="invis" ]; + 3; + } + { + rank="same"; + 4 + 5; + } + + 1 -- 2 -- 4; + 1 -- 3 -- 5; + 1 -- 4; + 1 -- 5; + 2 -- 6; + 6 -- 3; + 4 -- 5; + 2 -- 5; + 3 -- 4; + +} diff --git a/school/di-ma/20181121_2-planare_graphen.md b/school/di-ma/20181121_2-planare_graphen.md new file mode 100644 index 0000000..34abad1 --- /dev/null +++ b/school/di-ma/20181121_2-planare_graphen.md @@ -0,0 +1,273 @@ +--- +title: Planare Graphen +date: 2018-11-21 +--- + +**Frage**: Welche Graphen kann man besonders "schön" zeichnen? + +Genauer: Welche Graphen kann man so zeichnen, dass sich keine Kanten schneiden? + + +# Definition (Planarer Graph) + +Ein Graph $G=(V,E)$ heißt planar, falls er so in die Ebene eingebettet werden +kann, dass sich keine Kanten schneiden. + + +**Beispiel**: + +i) $K_3$ ![$K_3$](20181121_2-k3.png) ist planar +i) $K_4$ ![$K_4$](20181121_2-k4.png) ist planar +i) $K_5$ ![$K_5$](20181121_2-k5.png) ist nicht planar + + +**Bemerkungen**: + +i) Planar ist Eigenschaft des Graphen, nicht der Einbettung (Auch planare +Graphen können nicht planar Gezeichnet werden) + +i) Zu zeigen, dass ein Graph **nicht** planar ist, ist (erstmal) nicht so +einfach + + +**Weitere Beispiele**: + +Vollständige bipartite Graphen $K_{n,m}=(V,E)$ bestehen aus 2 disjunkten +Knotenmengen $V_1, V_2$ mit $|V_1| = n, |V_2| = m$ und $V = V_1 \biguplus V_2$ +wobei $E = \{ \{u,v\} | u \in V_1, v \in V_2 \}$ + +i) $K_{2,3}$: ![$K_{2,3}$](20181121_2-k23.png) ist planar ($\{1,4\}$ und +$\{1,5\}$ außen zeichnen) + +i) $K_{3,3}$: ![$K_{3,3}$](20181121_2-k33.png) ist nicht planar + + +Wir betrachten als nächstes die Gebiete/Flächen in die die planare Einbettung +eines planaren Graphen die Ebene unterteilt. + +**Beispiel**: + +i) $K_3$ unterteilt die Ebene in 2 Flächen (eine innere und eine äußere) +i) $K_4$ unterteilt die Ebene in 4 Flächen +i) $K_{2,3}$ unterteilt die Ebene in 3 Flächen + +Die Anzahl der Flächen/Gebiete ist unabhängig von der genauen planaren +Einbettung. + +# Satz (Eulersche Polyederformel) + +Sei $G=(V,E)$ ein zusammenhängender planarer Graph. Sei $f$ die Anzahl der +Gebiete einer planaren Einbettung von $G$. Dann gilt $f = |E| - |V| + 2$ + +# Beweis (Eulersche Polyederformel) + +(per Induktion über $|E|$) + +**Induktionsanfang**: Da $G$ zusammenhängend gilt $|E| \geq |V| - 1$. Daher +Induktionsanfang für $|E| = |V| - 1$. Damit ist $G$ ein Baum und die Anzahl der +Gebiete $f$ ist 1 (1 äußeres, 0 innere). Es gilt + +$$ +\begin{align*} +1 = f &= |E| - |V| + 2 \\ +&= (|V| - 1) - |V| + 2 = 1 +\end{align*} +$$ + +**Induktionsschritt**: Sei nun $|E| > |V| - 1$. Dann enthält $G$ einen Kreis +und sei $c = \{u,v\} \in E$ eine Kreiskante. Betrachte $G' = (V, E \setminus +\{c\})$. Dann gilt (nach Induktionsanfang): + +i) $f' = |E'| - |V| + 2 = (|E| - 1) - |V| + 2$ +i) $f' = f - 1$ da durch Wegnahme von $c$ zwei Gebiete von $G$ zusammenfallen + +$\Rightarrow$ $f - 1 = f' = |E| - |V| + 1$ + +$\Rightarrow$ $f = |E| - |V| + 2$ + +$$ +\tag*{$\Box$} +$$ + + +Verallgemeinerung des obigen Satzes: + +# Satz + +Sei $G=(V,E)$ ein planarer Graph mit $k$ Zusammenhangskomponenten. Sei $f$ die +Anzahl der Gebiete eines planaren Diagrammes, dann gilt + +$$ +f = |E| - |V| + k + 1 +$$ + + +# Beweis + +Seien $G_i = (V_i,E_i)$, $i \in \{1,...,k\}$ die Zusammenhangskomponenten von +$G$. Dann gilt + +$$ +\begin{align*} +V &= \biguplus\limits_{i \in \{1,...,k\}} V_i \\ +E &= \biguplus\limits_{i \in \{1,...,k\}} E_i +\end{align*} +$$ + +Sei $f_i$ die Anzahl der Gebiete von $G_i$, dann gilt + +i) $f_i = |E_i| - |V_i| + 2$ (Satz von oben, Zusammenhangskomponenten sind +zusammenhängend) + +i) $f = \sum\limits_{i=1}^k f_i - (k-1)$, da wir in $\sum\limits_{i=1}^k f_i$ +das äußere Gebiet $k$-mal gezählt haben. + +$$ +\begin{align*} +\Rightarrow f &= \sum\limits_{i=1}^k (|E_i| - |V_i| - 2) - (k-1) \\ +&= \sum\limits_{i=1}^k |E_i| - \sum\limits_{i=1}^k |V_i| + 2k -(k-1) \\ +&= |E| - |V| + k + 1 +\end{align*} +$$ + +$$ +\tag*{$\Box$} +$$ + + +Der folgende Satz zeigt, dass planare Graphen für gegebenes $|V|$ nicht zu viele +Kanten haben können. + +# Satz + +Sei $G=(V,E)$ planar mit $|V| \geq 3$. Dann gilt $|E| \leq 3 |V| - 6$ + + +## Beispiel + +$K_5$ hat $|V|=5$ Knoten und $|E|=\binom{5}{2} = \frac{5\cdot 4}{2} = 10$ +Kanten und es gilt $3 * |V| - 6 = 9 < 10 = |E|$ + +$\Rightarrow$ $K_5$ ist nicht planar + + +# Beweis + +Sei ohne Einschränkung $G=(V,E)$ zusammenhängend. Seien $R_1,...,R_f$ die +Gebiete eines planaren Diagrammes von $G$ und $E = \{ e_1,...e_m \}$ die +Kanten. Betrachte folgende Matrix: + +$$ +A = a_{i,j} = \begin{cases} +1 & \text{falls } e_i \text{ das Gebiet } R_i \text{ berandet} \\ +0 & \text{sonst} +\end{cases} +$$ + +Dann gilt + +i) Zeilensummen sind $\leq 2$ +i) Spaltensummen sind $\geq 3$ + +Doppeltes Abzählen liefert $ef \leq 2 |E|$ + +$\Rightarrow$ $f = \frac{2}{3} |E|$ und da $f = |E| -|V|+2$ gibt, folgt + +$\Rightarrow$ $|E|-|V|+2 \leq \frac{2}{3} |E|$ + +$\Rightarrow$ $\frac{1}{3}|E| \leq |V|-2$ + +$\Rightarrow$ $|E| \leq 3 |V| -6$ + +$$ +\tag*{$\Box$} +$$ + + + +Für $K_{3,3}$ reicht der Satz nicht aus, denn $|V| = 6$ und $|E|=9$ und +$3|V|-6=12>9=|E|$. Aus dem Satz folgt nicht, dass $K_{3,3}$ nicht planar ist. +Aber es stimmt trotzdem. + +# Erweiterung des Satzes + +Sei $G$ ein planarer Graph, der keinen Kreis der Länge 3 enthält. Dann gilt + +$$ +|R| \leq 2|V| -4 +$$ + +In diesem Fall wird dieses Gebiet von mindestens 4 Kanten umrandet. Der Beweis +folgt dann analog zu oben. + +$K_{3,3}$ enthält keinen Kreis der Länge 3 und $2|V| - 4 = 2 \cdot 6 - 4 = 8 < +9 = |E|$. + +$\Rightarrow$ $K_{3,3}$ ist nicht planar. + + +# Korollar + +$K_5$ und $K_{3,3}$ sind nicht planar. + + +a) Im wesentlichen sind das alle. Klar ist, dass jeder Graph $G=(V,E)$, der +$K_5$ oder $K_{3,3}$ als Teilgraph enthält nicht planar ist. Denn jeder +Teilgraph eines planaren Graphen ist planar + +a) **Unterteilungen** eines Graphen $G=(V,E)$ entstehen durch ersetzen einer + Kante durch einen Pfad (und entsprechend Einfügen von neuen Knoten). + + **Beispiel**: $K_4$ ![$K_4$](20181121_2-k4_unterteilung.png) + + Unterteilungen des $K_5$ und $K_{3,3}$ sind nicht planar. + + **Allgemein**: Unterteilungen von nicht planaren Graphen sind nicht planar + (und umgekehrt). + + +Diese beiden Punkte a) und b) zusammen mit $K_5$ und $K_{3,3}$ nicht planar +charakterisieren alle nicht planaren Graphen (ohne Beweis) + + +# Satz (Nicht-planar) + +Sei $G=(V,E)$ ein Graph. G ist nicht-planar genau dann, wenn G eine +Unterteilung des $K_5$ oder $K_{3,3}$ als Teilgraph enthält + +"$\Leftarrow$" haben wir gezeigt + +"$\Rightarrow$" schwer + + +## Bemerkung + +Es gibt Algorithmen, die in Laufzeit $O(|V|+|E|)§ entscheiden, ob $G=(V,E)$ +planar ist, oder nicht, und die, falls $G$ planar ist, ein planares Diagramm +von $G$ berechnen + +Das folgende Korollar werden wir später nutzen + +## Korollar + +$Sei $G=(V,E)$ ein planarer zusammenhängender Graph. Dann gibt es ein $v \in V$ +mit $deg(v) \leq 5$ + +## Beweis + +Für $|V| < 3$ ist diese Aussage trivial. Sei also $|V| \geq 3$ und $d = +\min\limits_{v \in V} deg(v)$. Dann gilt + +$$ +\begin{align*} +d * |V| \leq \sum\limits_{v \in V} deg(v) = 2*|E| &\leq 2 * (3 * |V| - 6) \\ +&= 6 * |V| - 12 \\ +&< 6*|V| +\end{align*} +$$ + +$\Rightarrow$ $d < 6$ $\Rightarrow$ $\exists v \in V: deg(v) < 6$ + +$$ +\tag*{$\Box$} +$$ diff --git a/school/di-ma/20181128_1-faerbung.dot b/school/di-ma/20181128_1-faerbung.dot new file mode 100644 index 0000000..f91589d --- /dev/null +++ b/school/di-ma/20181128_1-faerbung.dot @@ -0,0 +1,20 @@ +graph g { + node [ shape="circle" ]; + { + rank="same"; + 1; + 3; + } + { + rank="same"; + 2; + 4; + } + + 1 -- 3; + 1 -- 2; + 1 -- 5; + 2 -- 5; + 4 -- 5; + 3 -- 4; +} diff --git a/school/di-ma/20181128_1-knotenfaerbung.md b/school/di-ma/20181128_1-knotenfaerbung.md new file mode 100644 index 0000000..6abb9cd --- /dev/null +++ b/school/di-ma/20181128_1-knotenfaerbung.md @@ -0,0 +1,80 @@ +--- +title: Knoten-Färbung +date: 2018-11-28 +--- + +# Motivation + +a) Mobilfunk: Masten/Frequenzen + + i) Mobilfunkmasten, deren Sendebereich überlappt, brauchen verschiedene + Frequenzen zum senden. + + i) Wir wollen insgesamt möglichst wenige Frequenzen nutzen + + **Als Graph**: Mobilfunkmasten $\widehat{=}$ Knoten. Kanten zwischen + Knoten, falls Sendebereich überlappt. Frequenzen zuweisen, so dass + benachbarte Knoten unterschiedliche Frequenzen haben + +a) Compilerbau: Zur selben Zeit genutzte Variablen sollen in unterschiedlichen +Registern gespeichert werden + +a) Landkarten: Benachbarte Länder sollen unterschiedliche Farben bekommen. +Länder $\widehat{=}$ Knoten. Kanten zu Knoten, falls Länder eine gemeinsame +Grenze haben (hier: planare Graphen). + + +# Definition (Knoten-Färbung) + +Sei $k \in \mathbb{N}$ und $G=(V,E)$ Graph + +i) Eine $k$-Färbung von $G$ ist eine Abbildung + + $$ + C: v \rightarrow \{1,...,k\} + $$ + + mit der Eigenschaft $\forall \{u,v\} \in E : c(u) \neq c(v)$ + +i) $G$ heist **$k$-färbbar**, falls es eine $k$-Färbung von $G$ gibt + +i) Die **chromatische Zahl** $\chi(G)$ von $G$ ist definiert als + + $$ + \chi(G) = \min \{ k\in \mathbb{N} | G \text{ ist } k \text{-färbbar} \} + $$ + + +## Beispiel + +a) ![Graph](20181128_1-faerbung.png) + + $$ + c(1) = 1 \\ + c(2) = 3 \\ + c(3) = 2 \\ + c(4) = 1 \\ + c(5) = 2 \\ + \\ + \chi(G) = 3 + $$ + +a) Jeder Graph $G=(V,E)$ miz $|V|=n$ ist $n$-färbbar + +a) Es gilt $\chi(K_n) = n$ + +a) Kreise $C_n$ + + i) falls $n$ gerade ist $\chi(C_n) = 2$ + + i) falls $n$ ungerade ist $\chi(C_n) = 3$ + +a) Bipartite Graphen: Bipartiter Graph $G=(V,E)$. Es gibt eine Partition von +$V$ in $V_1$ und $V_2$. $V = V_1 \biguplus V_2$ und $E \subseteq \{ \{u,v\} | u +\in V_1, v \in V_2 \}$. Bipartite Graphen haben $\chi(G) = 2$ und es gilt +sogar: + + +# Satz + +Ein Graph $G=(V,E)$ hat $\chi(G) = 2$ $\Leftrightarrow$ $G$ ist bipratit. diff --git a/school/di-ma/index.md b/school/di-ma/index.md index 16d4ef2..a663c0c 100644 --- a/school/di-ma/index.md +++ b/school/di-ma/index.md @@ -24,3 +24,6 @@ subtitle: > - [2018-11-14 Tiefensuche](20181114_3-tiefensuche) - [2018-11-14 Wurzelbäume](20181114_4-wurzelbaeume) - [2018-11-20 Hamiltonkreise](20181120_1-hamiltonkreise) +- [2018-11-21 Eulertouren](20181121_1-eulertouren) +- [2018-11-21 Planare Graphen](20181121_2-planare_graphen) +- [2018-11-28 Knoten-Färbung](20181128_1-knotenfaerbung)