Wie groß ist der Abstand von Colorado (CO) und Virginia (VA) im USA-Graph (Seite Wege 2)?
Wie lange dauert die kürzeste Verbindung von King's Cross zu Earl's Court (Seiten Gewichte 1,3)?
Eine neue Aufgabe für Graphen: Finde alle Knoten, die von einem gegebenen Knoten
maximalen Abstand besitzen.
Diese Aufgabe kann man für gewichtete und für ungewichtete Graphen stellen.
In einem Graphen bilden alle die Knoten, welche miteinander verbindbar sind, eine Zusammenhangskomponente.
Man kann den Algorithmus von Dijkstra auch so formulieren, dass gleich zu Beginn alle Knoten in D eingefügt werden und dann nur noch aus D entnommen wird. Formuliere diese Variante im Detail.
Gib für die folgenden Aufgaben jeweils an, wie sie mit Graphen modelliert werden können. Gib dazu an, was jeweils Knoten und Kanten darstellen, ob der Graph gewichtet oder gerichtet ist und um welche Art von Aufgabe es sich handelt.
Begründe, warum auch der folgende Algorithmus die gewichteten Abstände von v bestimmt.
Eingabe: gewichteter Graph G, Knoten v dieses Graphen
Ausgabe: Gewichte dg(w) von Kantenzügen, die w und v verbinden
für alle Knoten w
setze dg(w) =
setze dg(v) = 0
füge v in eine (zunächst leere) Queue D ein
solange D nicht leer ist
entnehme einen Knoten w aus D
für alle Kanten {w,u}
falls dg(u) > dg(w) + g({w,u})
setze dg(u) = dg(w)+g({w,u})
füge u in D ein
Warum ist der Algorithmus von Dijkstra besser?