\documentclass{bschlangaul-aufgabe}
\bLadePakete{syntax}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 7},
  Thematik = {Pseudo-Code Dijkstra},
  Referenz = 66115-2015-F.T2-A7,
  RelativerPfad = Examen/66115/2015/03/Thema-2/Aufgabe-7.tex,
  ZitatSchluessel = examen:66115:2015:03,
  BearbeitungsStand = nur Angabe,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Algorithmus von Dijkstra},
  EinzelpruefungsNr = 66115,
  Jahr = 2015,
  Monat = 03,
  ThemaNr = 2,
  AufgabeNr = 7,
}

Auf folgendem ungerichteten, gewichteten Graphen wurde der
Dijkstra-Algorithmus (wie auf der nächsten Seite beschrieben)
ausgeführt, doch wir wissen lediglich, welcher Knoten als letztes
schwarz (black) wurde (Nr. 8) und was seine Distanz zum Startknoten (Nr.
1) ist. Die Gewichte der Kanten sind angegeben.\index{Algorithmus von Dijkstra}
\footcite{examen:66115:2015:03}

Finden Sie zunächst den Startknoten, nummerieren Sie anschließend die
Knoten in der Reihenfolge, in der sie schwarz wurden, und geben Sie in
jedem Knoten die Distanz zum Startknoten an.

Hinweis: Der Startknoten ist eindeutig.

Dijkstra(WeightedGraph G, Vertex s)

\begin{minted}{md}
Initialize(G, s);
S=ß;
Q = new PriorityQueue(V, d) ;
while not Q.Empty() do
  u = Q.ExtractMin() ;
  S = S U {u};
  foreach v € Adj[u| do
    Relax(u, v; w);

  u.color = black;
\end{minted}

Initialize(Graph G, Vertex s)

\begin{minted}{md}
foreach u € V do
  u.color = white;
  u.d = 00;
s.color = gray;
s.d = 0;
\end{minted}

Relax(u, v; w)

\begin{minted}{md}
if v.d> u.d+ w(u,v) then
  v.color = gray;
  v.d = u.d + w(u,v);
  Q.DecreaseKey(v, v.d);
\end{minted}

\end{document}
