\documentclass{bschlangaul-aufgabe} \bLadePakete{graph,mathe} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 5}, Thematik = {Städte gemischt gerichtet / ungerichtet}, Referenz = 66112-2004-F.T1-A5, RelativerPfad = Examen/66112/2004/03/Thema-1/Aufgabe-5.tex, ZitatSchluessel = examen:66112:2004:03, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Algorithmus von Dijkstra, Adjazenzmatrix}, EinzelpruefungsNr = 66112, Jahr = 2004, Monat = 03, ThemaNr = 1, AufgabeNr = 5, } Ein\index{Algorithmus von Dijkstra} \footcite{examen:66112:2004:03} wichtiges Problem im Bereich der Graphalgorithmen ist die Berechnung kürzester Wege. Gegeben sei der folgende Graph, in dem Städte durch Kanten verbunden sind. Die Kantengewichte geben Fahrzeiten an. Außer den durch Pfeile als nur in eine Richtung befahrbar gekennzeichneten Straßen sind alle Straßen in beiden Richtungen befahrbar. \footcite[Aufgabe 1]{aud:pu:6} \begin{bGraphenFormat} A: 2 5 B: 3 3 C: 0 3 D: 5 1 E: 4 5 F: 7 1 G: 1 0 H: 6 4 A -- B: 10 A -> C: 70 A -- E: 40 B -- C: 50 B -- D: 90 B -- G: 20 B -- H: 90 C -- G: 20 D -- F: 80 D -- G: 75 E -- H: 5 F -- H: 10 H -> D: 10 \end{bGraphenFormat} \begin{center} \begin{tikzpicture}[li graph] \node (A) at (2,5) {A}; \node (B) at (3,3) {B}; \node (C) at (0,3) {C}; \node (D) at (5,1) {D}; \node (E) at (4,5) {E}; \node (F) at (7,1) {F}; \node (G) at (1,0) {G}; \node (H) at (6,4) {H}; \path (A) edge node {10} (B); \path[->] (A) edge node {70} (C); \path (A) edge node {40} (E); \path (B) edge node {50} (C); \path (B) edge node {90} (D); \path (B) edge node {20} (G); \path (B) edge node {90} (H); \path (C) edge node {20} (G); \path (D) edge node {80} (F); \path (D) edge node {75} (G); \path (E) edge node {5} (H); \path (F) edge node {10} (H); \path[->] (H) edge node {10} (D); \end{tikzpicture} \end{center} \begin{enumerate} %% % a) %% \item Geben Sie zu dem obigen Graphen zunächst eine Darstellung als Adjazenzmatix an. \index{Adjazenzmatrix} \begin{bAntwort} \[ \begin{blockarray}{ccccccccc} & A & B & C & D & E & F & G & H \\ \begin{block}{c(cccccccc)} A & * & 10 & 70 & - & 40 & - & - & - \\ B & 10 & * & 50 & 90 & - & - & 20 & 90 \\ C & - & 50 & * & - & - & - & 20 & - \\ D & - & 90 & - & * & - & 80 & 75 & - \\ E & 40 & - & - & - & * & - & - & 5 \\ F & - & - & - & 80 & - & * & - & 10 \\ G & - & 20 & 20 & 75 & - & - & * & - \\ H & - & 90 & - & 10 & 5 & 10 & - & * \\ \end{block} \end{blockarray} \] \end{bAntwort} %% % b) %% \item Berechnen Sie nun mit Hilfe des Algorithmus von Dijkstra die kürzesten Wege vom Knoten $A$ zu allen anderen Knoten. \begin{bAntwort} \begin{tabular}{llllllllll} \bf{Nr.} & \bf{besucht} & \bf{A} & \bf{B} & \bf{C} & \bf{D} & \bf{E} & \bf{F} & \bf{G} & \bf{H} \\ \hline 0 & & 0 & $\infty$ & $\infty$ & $\infty$ & $\infty$ & $\infty$ & $\infty$ & $\infty$ \\ 1 & A & \bf{0} & 10 & 70 & $\infty$ & 40 & $\infty$ & $\infty$ & $\infty$ \\ 2 & B & | & \bf{10} & 60 & 100 & 40 & $\infty$ & 30 & 100 \\ 3 & G & | & | & 50 & 100 & 40 & $\infty$ & \bf{30} & 100 \\ 4 & E & | & | & 50 & 100 & \bf{40} & $\infty$ & | & 45 \\ 5 & H & | & | & 50 & 55 & | & 55 & | & \bf{45} \\ 6 & C & | & | & \bf{50} & 55 & | & 55 & | & | \\ 7 & D & | & | & | & \bf{55} & | & 55 & | & | \\ 8 & F & | & | & | & | & | & \bf{55} & | & | \\ \end{tabular} \begin{tabular}{llll} \bf{nach} & \bf{Entfernung} & \bf{Reihenfolge} & \bf{Pfad} \\ \hline A $\rightarrow$ A & 0 & 1 & \\ A $\rightarrow$ B & 10 & 2 & A $\rightarrow$ B \\ A $\rightarrow$ C & 50 & 6 & A $\rightarrow$ B $\rightarrow$ G $\rightarrow$ C \\ A $\rightarrow$ D & 55 & 7 & A $\rightarrow$ E $\rightarrow$ H $\rightarrow$ D \\ A $\rightarrow$ E & 40 & 4 & A $\rightarrow$ E \\ A $\rightarrow$ F & 55 & 8 & A $\rightarrow$ E $\rightarrow$ H $\rightarrow$ F \\ A $\rightarrow$ G & 30 & 3 & A $\rightarrow$ B $\rightarrow$ G \\ A $\rightarrow$ H & 45 & 5 & A $\rightarrow$ E $\rightarrow$ H \\ \end{tabular} \end{bAntwort} \end{enumerate} \end{document}