Graph Begrippen: knoop, vertices kant, zijde, edge gericht / ongericht directed / undirected gewogen, gelabeld, weighted, labeled pad, path kring, cycle
Algoritme van Dijkstra Probleem: Gegeven een gerichte graph, waarvan de kosten van de kanten niet negatief zijn. Bepaal voor een knoop de kosten van het kortste pad naar elke andere knoop.
Algoritme van Dijkstra Het algoritme is gebaseerd op het gebruik van twee verzamelingen S is de verzameling knopen waarvan de kortste afstand tot het beginpunt (in dit geval A) bekend is. Als het algoritme begint, bevat S alleen knoop A. De afstand van A tot A is 0. R is de verzameling van knopen waarvan de kortste afstand tot het beginpunt nog niet bekend is. Als het algoritme begint geldt R = { B, C, D, E}
Het array d[] bevat voor iedere knoop de kortste afstand tot A, waarbij alleen van de knopen uit S gebruik mag worden gemaakt. Indien er geen pad is, wordt – genoteerd. Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 17
Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 17 1 {A, D} {B, C, E} 16 15
Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 17 1 {A, D} {B, C, E} 16 15 2 {A, B, D} {C, E} 11
Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 17 1 {A, D} {B, C, E} 16 15 2 {A, B, D} {C, E} 11 3 {A, B, C, D} {E} 13
Iteratie S R d[B] d[C] d[D] d[E] Initialisatie {A} {B, C, D, E} 8 - 6 17 1 {A, D} {B, C, E} 16 2 {A, B, D} {C, E} 11 14 3 {A, B, C, D} {E} 13 4 {A, B, C, D, E} {}