Loading AI tools
een graaf-algoritme beschreven door Edsger Dijkstra in 1959 Van Wikipedia, de vrije encyclopedie
Het kortstepad-algoritme, ook bekend als Dijkstra's algoritme, is een graaf-algoritme beschreven door Edsger Dijkstra in 1959.[1] Gegeven een gewogen graaf waarin de afstand tussen ieder tweetal verbonden punten van ten minste 0 bedraagt, rekent het algoritme voor een bepaalde beginknoop de kortste afstand uit tot alle punten van . Toepassingen van dit algoritme zijn onder meer bij verkeersmodellen, route-navigatiesystemen en telecommunicatie.
Het algoritme is gebaseerd op de opmerking dat de 'afstand', de lengte van het kortste pad, tussen ieder tweetal punten en van een gewogen graaf als volgt berekend kan worden:
Het algoritme gaat verder door op de basis van hierboven. Het algoritme verdeelt de punten van in drie verzamelingen:
Hiervoor geldt uiteraard dat , en hebben geen punten gemeen.
Daarnaast bestaat er een array , geïndiceerd met de punten van . Voor elk punt wordt dit array door het algoritme dusdanig gevuld dat aan het eind geldt de lengte van het kortste pad van naar .
Initieel geldt
Het algoritme herhaalt nu de volgende stappen totdat de lege verzameling wordt (op dat moment zijn er geen bereikbare punten meer over), vanuit :
Zodra dit algoritme afloopt (en dat doet het, want is eindig en iedere stap verplaatst een element van naar ), dan is gevuld met de afstanden van naar alle punten die vanuit dit beginpunt bereikbaar zijn. Is oneindig voor een , dan is dat punt niet bereikbaar vanuit .
In pseudocode ziet het algoritme er als volgt uit:
foreach do ; A := d(a) := 0 X := foreach z : z do X := X {z} d(z) := gew(,z); /* X en d zijn nu geïnitialiseerd */ while not(X = ) do /* X is nog niet leeg */ y : (y X) (d(y) = MIN {d(y')|y' X} /* y is dus het element van X met de laagste waarde van d(v) -- dit is de definitieve waarde van d(y) */ A := A {y} X := X{y} /* y is nu verplaatst van X naar A */ foreach z: z not (z A) do if not (z X) then X := X {z} d(z) := d(y) + gew(y,z) else /* dus z X */ d(z) := MIN{d(z), d(y) + gew(y,z)}
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.