Formelsammlung für Mathematik, Physik, Astronomie, Chemie, Biologie und Informatik
Goldbarren kaufen
  Startseite Formelsammlung bookmarken Bookmark setzen Sitemap anzeigen Sitemap Impressum anzeigen Impressum
 
» Formelsammlung:
» Startseite
» Astronomie
» Biologie
» BWL
» Chemie
» Informatik
» Mathematik
» Physik

» Interaktiv:
» Forum
» Lexikon
» Mitmachen
» Links zu Uns
» Surftipps

» Informationen:
» Kontakt
» Impressum
» Über Formel-Sammlung.de

» Partnerseiten:
  www.schuelerlexikon.de

» Partner:
  Etiketten
Kostenlose Kochrezepte
Künstler Verzeichnis
Schilder
Spieleforum
Witze & SMS Sprüche

Algorithmus von Dijkstra



Sie befinden Sie in: Formelsammlung Lexikon > a > Algorithmus von Dijkstra
Algorithmus von Dijkstra

Der Algorithmus von Dijkstra (nach seinem Erfinder Edsger Dijkstra), dient der Berechnung eines kürzesten Pfades zwischen zwei Knoten s und e in einem zusammenhängenden kantengewichteten Graphen G.

Inhaltsverzeichnis
1 Anwendungen
2 Implementation
3 Berechnung des Abstandes
4 Verallgemeinerung
5 Vergleich mit Prim
6 Optimalitätsprinzip
7 Effiziente Implementierung

7.1 Weblinks

 

Anwendungen

Routenplaner sind ein prominentes Beispiel, bei der dieser Algorithmus eingesetzt werden kann. Der Graph repräsentiert hier das Straßennetz, welches verschiedene Punkte miteinander verbindet. Gesucht ist die kürzeste Route zwischen zwei Punkten.

Dijkstras Algorithmus wird auch im Internet als Routing-Algorithmus in OSPF eingesetzt.

 

Implementation

  • Setze i = 0;
  • Setze s als Startgraph T und nummeriere s mit i (= 0);
  • Solange T noch nicht e enthält,
    • Erhöhe i um 1;
    • suche eine Kante minimalen Gewichts, die einen Knoten, der nicht in T ist, mit T verbindet und
    • füge diese Kante und den damit verbundenen Knoten v zu T hinzu;
    • Nummeriere v mit i;
  • Laufe von e beginnend zurück zu s, indem als nächster Knoten immer der Knoten mit kleinster Nummerierung gewählt wird;

Der im letzten Schritt durchlaufene Pfad, stellt einen kürzesten Pfad zwischen e und s dar.

 

Berechnung des Abstandes

Will man den Abstand der Knoten s und e berechnen, so braucht man beim Zurücklaufen im letzten Schritt einfach nur die Kantengewichte der entlanggelaufenen Kanten zu addieren.

 

Verallgemeinerung

Wählt man eine ganze Menge S von Knoten als Startknoten und einen ganze Menge E von Knoten als Endknoten, so berechnet der Algorithmus von Dijkstra einen kürzesten Pfad, der einen Knoten aus S mit einem Knoten aus E verbindet. Der Algorithmus muss dann so abgewandelt werden, dass zu Beginn alle Startknoten in T aufgenommen und mit 0 nummeriert werden und die Schleife abgebrochen wird, sobald ein Knoten aus E erreicht, also in T eingefügt wurde.

Ändert man die Abbruchbedingung dahin, dass erst nach erreichen aller Knoten die Schleife verlassen wird, so berechnet der Algorithmus einen minimal spannenden Baum in G, mit der Eigenschaft, dass schnell von allen Knoten die kürzesten Pfade zum Startknoten s gefunden werden können (in dem man den letzten Schritt für den Knoten ausführt).

 

Vergleich mit Prim

Der Algorithmus von Dijkstra ähnelt dem Algorithmus von Prim. Letzterer dient der Berechnung eines minimal spannenden Baumes. Statt s kann Prim den Startknoten beliebig wählen. Die Schleife wird abgebrochen, wenn alle Knoten erreicht wurden. Da es nur auf die Berechnung eines minimal spannenden Baumes ankommt, und nicht auf die kürzesten Pfade zu s, ist einen Nummerierung der Knoten bei Prim nicht notwendig. Ansonsten sind die Algorithmen von Dijkstra und Prim identisch.

 

Optimalitätsprinzip

Der Algorithmus stützt sich auf das Optimalitätsprinzip, welches besagt, dass wenn der kürzeste Pfad von A nach C über B führt, der Teilpfad A B auch der kürzeste Pfad von A nach B sein muss.

 

Effiziente Implementierung

Das Grundprinzip des Algorithmus ist relativ einfach. Die effiziente Bestimmung des nächsten Knotens ist aber aufwändig zu implementieren. Man benötigt als Datenstruktur so genannte Fibonacci-Heaps. Die Laufzeit beträgt O(m + n * log(n)), wobei m die Zahl der Kanten und n die Zahl der Knoten ist.

Siehe auch: Floyd-Warshall-Algorithmus, Bellman-Ford-Algorithmus

 

Weblinks

  • Ein anschauliches Beispiel kann hier (http://www.mcgods.de/fun/1904/node8.html) gefunden werden.

Lexikon Eintrag Drucken | Dokument als PDF downloaden
Dieser Artikel stammt aus Wikipedia, der freien Enzyklopädie
und steht unter der GNU Free Documentation Licence. 

zum Seitenanfang

» Formel Suche:
  Gebe einfach den Gesuchten Begriff ein.
 
 
» Unterstüzt von:
Duden Paetec Schulbuchverlage

zum Formelsammlung Forum

» Anzeigen:
 
 
       
Diese Seite wurde in 0.007 Sekunden erstellt - 43 Besucher Online.
© 2004 by Formel-Sammlung.de & DUDEN PAETEC GmbH Alle Rechte vorbehalten