Datenstrukturen und Algorithmen
Welche Bedingung an den Graphen ist erforderlich, damit der Dijkstra-Algorithmus korrekte kürzeste Wege findet?
- ADer Graph enthält keine Zyklen (Wege, die zum selben Knoten zurückführen)
- BDie Kanten sind ungerichtet
- CAlle Kantengewichte sind größer oder gleich 0
Antwort und Erläuterung anzeigen
Antwort: C. Alle Kantengewichte sind größer oder gleich 0
Der Dijkstra-Algorithmus legt unter den noch nicht festgelegten Knoten denjenigen mit der kleinsten Entfernung endgültig fest. Das beruht auf der Annahme, dass ein Umweg über andere Knoten eine Entfernung nur vergrößern, nie verkleinern kann. Gibt es eine Kante mit negativem Gewicht, kann eine Entfernung später über einen anderen Weg kürzer werden; in einem gerichteten Graphen mit S→A 2, S→B 3 und B→A −2 wird A zum Beispiel mit 2 festgelegt, bevor der Weg S→B→A mit der Länge 1 gefunden wird. Bei negativen Gewichten verwendet man den Bellman-Ford-Algorithmus oder ähnliche Verfahren. Mit Zyklen und mit gerichteten Kanten funktioniert der Dijkstra-Algorithmus, solange alle Gewichte größer oder gleich 0 sind.