54 lines
2 KiB
TeX
54 lines
2 KiB
TeX
\section{Paarungen (Matchings) in Bäumen}
|
|
\begin{tasks}
|
|
\item
|
|
\label{1a}
|
|
Ein Baum ist ein kreisfreier, zusammenhängender Graph. Ein Baum besitzt ein
|
|
perfektes Matching genau dann, wenn die Anzahl der Knoten gerade ist und
|
|
jedes Blatt keine Geschwisterknoten hat.
|
|
|
|
Die Anzahl der Knoten muss gerade sein, da in einem perfekten Match\-ing jeder
|
|
Knoten mit einem anderen gematcht wird.
|
|
|
|
Jedes Blatt muss Einzelblatt sein, da der Elternknoten nur mit einem Blatt
|
|
gematcht werden kann.
|
|
|
|
Also ist ein perfektes Matching im Baum eindeutig, da jedes Blatt mit seinem
|
|
Elternknoten gematcht werden muss. Die Kante ist sicher im Matching enthalten
|
|
und kann aus dem Graphen entfernt werden. So entsteht ein neues Blatt, für das
|
|
die selbe Regel gilt.
|
|
\points{3}
|
|
\item
|
|
Der \autoref{alg:treematching} berechnet ein größtes Matching.
|
|
|
|
Der Algorithmus ist korrekt, da der Baum $T$ entweder eine gerade Anzahl an
|
|
Knoten hat, und somit ein perfektes Matching berechnet (Siehe \autoref{1a}) oder genau einen Knoten
|
|
zu wenig hat und somit das größte Matching um eins kleiner ist, als das perfekte
|
|
Matching des nächst größeren Baums.
|
|
|
|
Die Laufzeit liegt in $\Oh(E)$, da jede Kante maximal einmal zum Matching hinzugefügt
|
|
und dann aus dem Baum entfernt wird.
|
|
\begin{algorithm}
|
|
\centering
|
|
\caption{Größtes Matching in Bäumen}
|
|
\label{alg:treematching}
|
|
\begin{algorithmic}
|
|
\alg{MatchaTee}{$T = \tup{V, E}$} \+ \\
|
|
\com{Wurzeln} \\
|
|
$r \gets V[1]$ \\
|
|
\com{Wenn Knoten Blatt ist, dann die Kante zum Elternknoten zurückgeben.} \\
|
|
if $deg(r) = 1$ then \+ \\
|
|
\com{Die Kante aus dem Baum entfernen.} \\
|
|
$E \gets E \setminus \set{\set{r, Adj[r]}}$ \\
|
|
$V \gets V \setminus \set{r}$ \\
|
|
return $\set{\set{r, Adj[r]}}$ \- \\
|
|
\com{Rekursiv für die Kinder aufrufen} \\
|
|
$m \gets \emptyset$ \\
|
|
foreach $v \in Adj[r]$ do \+ \\
|
|
$m \gets m \cup \text{\alg{MatchaTee}{T}}$ \- \\
|
|
return $m$
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
\points{5}
|
|
\item
|
|
\points{5}
|
|
\end{tasks}
|