Datenstrukturen und Algorithmen

In einem ungerichteten Graphen haben die Kanten die Gewichte (Entfernungen) S−A: 4, S−B: 1, A−B: 2, A−C: 1, B−C: 5, C−T: 3 und A−T: 6. Welcher kürzeste Weg von S nach T und welche Länge ergeben sich mit dem Dijkstra-Algorithmus?

  1. AS→A→C→T, Länge 8
  2. BS→B→A→C→T, Länge 7
  3. CS→B→C→T, Länge 9
Antwort und Erläuterung anzeigen

Antwort: B. S→B→A→C→T, Länge 7

Der Dijkstra-Algorithmus legt wiederholt den nächstgelegenen Knoten, dessen Entfernung noch nicht feststeht, endgültig fest und aktualisiert die Entfernungen seiner Nachbarn. Ausgehend von S (0) wird B mit 1 festgelegt; über B erhält A die Entfernung 1 + 2 = 3, kürzer als die direkten 4. Mit der Festlegung von A (3) erhalten C den Wert 3 + 1 = 4 und T den Wert 3 + 6 = 9, und die Festlegung von C (4) aktualisiert T auf 4 + 3 = 7. Der kürzeste Weg ist daher S→B→A→C→T mit der Länge 7. S→A→C→T (8) ist länger, weil er S−A direkt nimmt, und S→B→C→T (9) ist länger, weil B−C das große Gewicht 5 hat.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Datenstrukturen und Algorithmen

  1. Welche Bedingung an den Graphen ist erforderlich, damit der Dijkstra-Algorithmus korrekte kürzeste Wege findet?
  2. Für die Aufgaben A bis E gelten die Reihenfolgebedingungen „A vor C“, „B vor C“, „C vor D“, „B vor E“ und „E vor D“. Welche Reihenfolge erfüllt alle Bedingungen (ein Ergebnis der topologischen Sortierung)?
  3. Eine Funktion f(x, y) ist definiert als „ist y gleich 0, gib x zurück; andernfalls gib f(y, x mod y) zurück“. Welchen Rückgabewert liefert der Aufruf f(84, 36), und wie oft wird f aufgerufen, den ersten Aufruf eingeschlossen?
  4. Eine Funktion fib(n) für die Fibonacci-Zahlen ist rekursiv definiert als „ist n kleiner oder gleich 1, gib n zurück; andernfalls gib fib(n−1) + fib(n−2) zurück“. Wie oft wird fib beim Aufruf von fib(5) aufgerufen, den ersten Aufruf eingeschlossen?
  5. 8 Yen sollen mit Münzen zu 1 Yen, 4 Yen und 6 Yen bezahlt werden. Welche Aussage über die Zahl der Münzen, die ein Greedy-Algorithmus wählt (der zuerst so viele der größten Münze wie möglich verwendet), im Verhältnis zur kleinstmöglichen Münzzahl ist richtig?