Aufgabe 4 fertig

This commit is contained in:
Never Gude 2026-04-19 18:32:56 +02:00
parent 9d19f3cd19
commit b5eb59096b
6 changed files with 66 additions and 43 deletions

View file

@ -52,14 +52,14 @@ falsch.
\section{Kreissuche}
\begin{tasks}
\item
Wähle Startknoten $s$ und füge ihn in eine neue Queue $Q$ ein.
Wähle Startknoten $s$ und füge ihn in eine neue Queue $Q$ ein.
Nimm den vordersten Knoten $u$ aus $Q$ und füge seine noch nicht entdeckten (weißen)
Nachbarn ein und färbe sie grau. Wenn einer der Nachbarn schon entdeckt wurde,
also grau ist, gibt es einen Kreis in $G$.
Markiere den Knoten $u$ als abgeschlossen ($black$) und entferne ihn aus $Q$
Nimm den vordersten Knoten $u$ aus $Q$ und füge seine noch nicht entdeckten (weißen)
Nachbarn ein und färbe sie grau. Wenn einer der Nachbarn schon entdeckt wurde,
also grau ist, gibt es einen Kreis in $G$.
Markiere den Knoten $u$ als abgeschlossen ($black$) und entferne ihn aus $Q$
Wiederhole den Schritt solange bis $Q$ leer ist.
Wiederhole den Schritt solange bis $Q$ leer ist.
% \begin{pseudocode}[caption=Hello World Algorithmische]
% EinfacherKreis(|Graph| $G$, |Vertex| $s$)
@ -82,28 +82,28 @@ Wiederhole den Schritt solange bis $Q$ leer ist.
% else
% return $false$
% \end{pseudocode}
\begin{algorithm}[h]
\centering
\begin{algorithmic}
\alg{EinfacherKreis}{Graph $G$, Vertex $s$} \+ \\
\alg{Initialize}{$G$, $s$} \com{So wie in der Breitensuche} \\
$Q \gets$ new \alg{Queue}{} \\
$Q.$\alg{Enqueue}{$s$} \\
while $Q \neq \emptyset$ do \+ \\
$u \gets Q.$\alg{Dequeue}{} \\
$u.color \gets gray$ \\
foreach $v \in Adj[u]$ do \+ \\
\com{Füge alle noch nicht entdeckten Knoten ein} \\
if $v.color = white$ then \+ \\
$v.color \gets gray$ \\
$Q.$\alg{Enqueue}{$v$} \- \\
\com{Wenn ein Knoten schon entdeckt wurde, gibt es einen Kreis} \\
else return $true$ \- \\
$u.color \gets black$ \- \\
return $false$
\end{algorithmic}
\end{algorithm}
\begin{algorithm}[h]
\centering
\begin{algorithmic}
\alg{EinfacherKreis}{Graph $G$, Vertex $s$} \+ \\
\alg{Initialize}{$G$, $s$} \com{So wie in der Breitensuche} \\
$Q \gets$ new \alg{Queue}{} \\
$Q.$\alg{Enqueue}{$s$} \\
while $Q \neq \emptyset$ do \+ \\
$u \gets Q.$\alg{Dequeue}{} \\
$u.color \gets gray$ \\
foreach $v \in Adj[u]$ do \+ \\
\com{Füge alle noch nicht entdeckten Knoten ein} \\
if $v.color = white$ then \+ \\
$v.color \gets gray$ \\
$Q.$\alg{Enqueue}{$v$} \- \\
\com{Wenn ein Knoten schon entdeckt wurde, gibt es einen Kreis} \\
else return $true$ \- \\
$u.color \gets black$ \- \\
return $false$
\end{algorithmic}
\end{algorithm}
\points{4}
\item
Dadurch, dass wir nur Knoten
@ -116,6 +116,7 @@ Wiederhole den Schritt solange bis $Q$ leer ist.
Jeder Knoten wird nur einmal in die Queue eingefügt und nur einmal herasgenommen.
Somit läuft der Algorithmus in $\Oh(\abs{V})$.
\points{2}
\item
Solange es weiße Knoten im Graphen gibt, wählen wir einen neuen Startknoten
@ -123,6 +124,7 @@ Wiederhole den Schritt solange bis $Q$ leer ist.
Tupeln $\tup{s_i, c_i}$ zurück, wobei $s_i$ der Startknoten einer
Zusammenhangskomponente und $c_i \in \set{true, false}$ der Wahrheitswert, ob
ein Kreis in der Komponente existiert.
\points{1}
\end{tasks}
\section{Eulerwege}
@ -148,10 +150,25 @@ ungerade ist, genau $0$ oder $2$ ist.
Für alle anderen Fälle gilt, wenn ein Knoten ungeraden Grad hat, dann gibt
es keinen Weg aus dem Knoten heraus, wenn man hineingelaufen ist.
\end{itemize}
\points{4}
\section{Graphmodellierung}
\begin{quote}
Sie betreuen ein Projekt, das sich aus vielen vordefinierten Aufgaben zusammensetzt.
Manche Aufgaben können erst erledigt werden, wenn bestimmte andere Aufgaben ab-
geschlossen sind. Für jede Aufgabe ist vorher genau bekannt, von welchen Aufgaben
sie abhängt. Ihr Projektteam kann immer nur eine Aufgabe gleichzeitig bearbeiten und
eine angefangene Aufgabe wird immer abgeschlossen bevor eine neue Aufgabe begon-
nen werden kann.
\end{quote}
Wir modellieren das Problem als gerichteten Graph.
Die Aufgaben sind Knoten. Jede Aufgabe hat Kanten zu den Aufgaben, die von ihr
abhängen.
Eine Reihenfolge können wir Mithilfe einer Topologischen Sortierung finden.
\points{3}
\end{document}