diff --git a/übung_6/agt_übung_6.pdf b/übung_6/agt_übung_6.pdf index e725206..acf564b 100644 Binary files a/übung_6/agt_übung_6.pdf and b/übung_6/agt_übung_6.pdf differ diff --git a/übung_6/aufgabe_3.tex b/übung_6/aufgabe_3.tex index d525d63..dd21680 100644 --- a/übung_6/aufgabe_3.tex +++ b/übung_6/aufgabe_3.tex @@ -1,8 +1,41 @@ \section{Matchings in allgemeinen Graphen} \begin{tasks} \item + + \begin{pseudocode} + M = $\emptyset$ + visited = Array von False der Größe $|V|$ // Markiert gematchte Knoten + + for e in E do + if nicht visited[u] und nicht visited[v] then + M = $M \cup \{e\}$ + visited[u] = True + visited[v] = True + + return M + \end{pseudocode} + + Angenommen M wäre erweiterbar (d.h. es gibt eine Kante \{u,v\} mit u,v $\notin$ V(M)). Dann wurden sowohl u als auch v während des Algorithmus beim Durchlaufen der Kante \{u,v\} als frei angesehen und wäre somit der Menge M hinzugefügt worden. Das ist eine Widerspruch. \\\\ + \textbf{Laufzeit:} \\ + Initialisierung des Arrays: $\Oh(V)$\\ + Schleife: Jede Kante wird genau einmal betrachtet ($\Oh(V)$) und die Überprüfung und Markierung passieren in $\Oh(1)$. Also insgesamt $\Oh(E)$\\ + Das ergibt eine Gesamtlaufzeit von $\Oh(V+E)$ + + \points{3} \item + + + + \points{3} \item + + \points{2} \item + + \points{3} \item + + \points{2} + + \end{tasks}