\documentclass{bschlangaul-aufgabe}
\bLadePakete{graph,syntax}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 8},
  Thematik = {dfs-number Graph s,a-h},
  Referenz = 46115-2014-H.T1-A8,
  RelativerPfad = Examen/46115/2014/09/Thema-1/Aufgabe-8.tex,
  ZitatSchluessel = examen:46115:2014:09,
  ZitatBeschreibung = {Thema 1 Aufgabe 8},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Tiefensuche, Stapel (Stack)},
  EinzelpruefungsNr = 46115,
  Jahr = 2014,
  Monat = 09,
  ThemaNr = 1,
  AufgabeNr = 8,
}

\section{Aufgabe 8
\index{Tiefensuche}
\footcite[Thema 1 Aufgabe 8]{examen:46115:2014:09}
}

\begin{bGraphenFormat}
a: 8 3
b: 2 3
c: 2 1
d: 0 1
e: 7 5
f: 7 2
g: 5 0
h: 0 5
s: 5 3
a -- e
a -- f
a -- s
b -- c
b -- d
b -- h
c -- d
c -- h
c -- s
d -- h
e -- f
f -- s
g -- s
h -- s
\end{bGraphenFormat}

\begin{enumerate}

%%
% (a)
%%

\item Führen Sie auf dem folgenden ungerichteten Graphen \texttt{G} eine
Tiefensuche ab dem Knoten \texttt{s} aus (graphische Umsetzung).
Unbesuchte Nachbarn eines Knotens sollen dabei in \emph{alphabetischer
Reihenfolge} abgearbeitet werden. Die Tiefensuche soll auf Basis eines
\emph{Stacks}\index{Stapel (Stack)} umgesetzt werden. Geben Sie die
Reihenfolge der besuchten Knoten, also die \texttt{dfs-number} der
Knoten, und den Inhalt des Stacks in jedem Schritt an.
\footcite[Seite 2: Tiefensuche, Breitensuche, Aufgabe 3]{aud:ab:6}

\begin{center}
\begin{tikzpicture}[li graph]
\node (a) at (8,3) {a};
\node (b) at (2,3) {b};
\node (c) at (2,1) {c};
\node (d) at (0,1) {d};
\node (e) at (7,5) {e};
\node (f) at (7,2) {f};
\node (g) at (5,0) {g};
\node (h) at (0,5) {h};
\node (s) at (5,3) {s};

\path (a) edge node {} (e);
\path (a) edge node {} (f);
\path (a) edge node {} (s);
\path (b) edge node {} (c);
\path (b) edge node {} (d);
\path (b) edge node {} (h);
\path (c) edge node {} (d);
\path (c) edge node {} (h);
\path (c) edge node {} (s);
\path (d) edge node {} (h);
\path (e) edge node {} (f);
\path (f) edge node {} (s);
\path (g) edge node {} (s);
\path (h) edge node {} (s);
\end{tikzpicture}
\end{center}

\begin{bAntwort}
In der Musterlösung auf Seite 3 lautet das Ergebnis s, a, e, f, c, b, d, h, g.
Ich glaube jedoch diese Lösung ist richtig:

\textbf{fett:} Knoten, der entnommen wird.

\textit{kursiv:} Knoten, die zum Stapel hinzugefügt werden.

\begin{tabular}{|r|r|l|}
\hline
\textbf{Reihenfolge} & \textbf{Stapel} & \textbf{besucht} \\\hline\hline
1 & \textit{\textbf{s}} & s \\\hline
2 & \textit{a, c, f, g, \textbf{h}} & h \\\hline
3 & a, c, f, g, \textit{b, \textbf{d}} & d \\\hline
4 & a, c, f, g, \textbf{b} & b \\\hline
5 & a, c, f, \textbf{g} & g \\\hline
6 & a, c, \textbf{f} & f \\\hline
7 & a, c, \textbf{e} & e \\\hline
8 & a, \textbf{c} & c \\\hline
9 & \textbf{a} & a \\\hline
\end{tabular}
\end{bAntwort}

%%
% (b)
%%

\item Führen Sie nun eine Breitensuche auf dem gegebenen Graphen aus,
diese soll mit einer Queue umgesetzt werden. Als Startknoten wird wieder
$s$ verwendet. Geben Sie auch hier die Reihenfolge der besuchten Knoten
und den Inhalt der Queue bei jedem Schritt an.

\begin{bAntwort}
\textbf{fett:} Knoten, der entnommen wird.

\textit{kursiv:} Knoten, die zur Warteschlange hinzugefügt werden.

\begin{tabular}{|r|l|l|}
\hline
\textbf{Reihenfolge} & \textbf{Warteschlange} & \textbf{besucht} \\\hline\hline
1 & \textit{\textbf{s}} & s\\\hline
2 & \textit{\textbf{a}, c, f, g, h} & a\\\hline
3 & \textbf{c}, f, g, h, \textit{e} & c\\\hline
4 & \textbf{f}, g, h, e, \textit{b, d} & f\\\hline
5 & \textbf{g}, h, e, b, d & g\\\hline
6 & \textbf{h}, e, b, d & h\\\hline
7 & \textbf{e}, b, d & e\\\hline
8 & \textbf{b}, d & b\\\hline
9 & \textbf{d} & d\\\hline
\end{tabular}
\end{bAntwort}

%%
% (c)
%%

\item Geben Sie in Pseudocode den Ablauf von Tiefen- und Breitensuche
an, wenn diese wie beschrieben mit einem Stack bzw. einer Queue
implementiert werden.

\end{enumerate}
\end{document}
