InfoHome | Themen | Projekte | Links | Software |
|
Dijkstra-AlgorithmusDie Suche nach dem kürzesten (allgemein dem "besten") Weg zwischen zwei Knoten auf einem Graphen. Algorithmus in sprachlicher Fassung
AufwandDie Problemgröße ist im Falle des Dijkstra-Algorithmus durch die Anzahl n der Städte auf der Landkarte (Knoten auf dem Graphen) gegeben. Aufwandsuntersuchungen beschäftigen sich immer mit der Frage, wie die Anzahl der Schritte, die ein Algorithmus abarbeiten muss, mit der Problemgröße wächst. Brute-Force-Methode ("Holzhammer-Methode") Nach der Brute-Force-Methode müssten zunächst alle Wege auf einem Graphen bestimmt, längenmäßig berechnet und miteinander verglichen werden. Sei n die Knotenzahl. Wir nehmen außerdem den schlimmsten Fall an, dass jeder Knoten mit jedem anderen Knoten des Graphen verbunden ist. Wir betrachten immer die Anzahl der Wege von einem beliebig gewählten Anfangs- zu einem beliebig gewählten Endknoten.
Die Wegezahl wächst exponentiell! Ein Algorithmus, der exponentiellen Aufwand verursacht, ist praktisch nicht einsetzbar, da er nur für wenige, kleine Werte Ergebnisse liefert. Dijkstra Der Algorithmus von Dijkstra führt im ersten Schritt - wenn wir wieder vom "worst case" ausgehen - n-1 Berechnungen durch. Danach ist die Startstadt aus dem Rennen und wird vom Algorithmus nie wieder angefasst. Allgemein ist im jeweils nächsten Schritt immer eine Berechnung weniger von Nöten. Insgesamt werden (n-1) + (n-2) + (n-3) + ... + 2 + 1 Berechnungen durchgeführt. Diese Summe lässt sich umformen: (n-1) + (n-2) + (n-3) + ... + 2 + 1 = 1/2 * (n-1) * n = 1/2 * n2 + 1/2 n Man erkennt, dass sich die Schrittzahl als Wert einer quadratischen Funktion (allgemeiner Polynomfunktion) berechnet. Man spricht hier von polynomialen Aufwand.
|
© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück |