Dijkstra algoritmus
Egy minimális költségű utat keres élsúlyozott gráfban A gráf lehet irányított vagy irányítás nélküli Feltétele, hogy pozitív élsúlyok legyenek Külön ismeret nélkül nem hagyható ki egyetlen csúcs sem a vizsgálatból
Struktogram d[s] := 0; π[s] := NIL for all u ∈ V\{s} d[u] := ∞; π[u] := NIL Üres(KÉSZ); Üres(minQ); Feltölt(minQ) ¬ Üres-e(minQ) u := KiveszMin(minQ) KÉSZ := KÉSZ U {u} for all v ∈ Szomszéd(u)\KÉSZ d[u] + c(u, v) < d[v] d[v] := d[u] + c(u, v) SKIP π[v] := u Helyreállít(minQ) Dijkstra(G, s)
B A D E F C G d π s = A B C D E F G
B A D E F C G 0 NIL d π s = A B C D E F G d[s] := 0; π[s] := NIL
B A D E F C G 0∞∞∞∞∞∞ NIL d π s = A B C D E F G d[s] := 0; π[s] := NIL for all u ∈ V\{s}: d[u] := ∞ π[u] := NIL
B A D E F C G 0∞∞∞∞∞∞ NIL d π s = A B C D E F G Üres(KÉSZ) Üres(minQ) KÉSZ minQ
B A D E F C G 0∞∞∞∞∞∞ NIL d π s = A B C D E F G Feltölt(minQ) KÉSZ A0 B∞ C∞ D∞ E∞ F∞ G∞ minQ
B A D E F C G 0∞∞∞∞∞∞ NIL d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ B∞ C∞ D∞ E∞ F∞ G∞ minQ u = A A
B A D E F C G 026∞∞9∞ NILAA A d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ B2 C6 D∞ E∞ F9 G∞ minQ u = A A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP
B A D E F C G ∞ NILAABBA d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ C6 D5 E12 F9 G∞ minQ u = B A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP B
B A D E F C G ∞ NILAABDA d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ C6 E8 F9 G∞ minQ u = D A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP B D
B A D E F C G NILAABDAC d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ E8 F9 G17 minQ u = C A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP B D C
B A D E F C G NILAABDAE d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ F9 G12 minQ u = E A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP B D C E
B A D E F C G NILAABDAE d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ G12 minQ u = F A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP B D C E F
B A D E F C G NILAABDAE d π s = A B C D E F G ¬ Üres-e(minQ): u := KiveszMinQ KÉSZ := KÉSZ U {u} KÉSZ minQ u = G A for all v ∈ Szomszéd(u)\KÉSZ: ha d[u] + c(u,v) < d[v] akkor: d[v] := d[u] + c(u,v) π[v] := u Helyreállít(minQ), egyébként SKIP B D C E F G
B A D E F C G NILAABDAE d π s = A B C D E F G Egy lehetséges minimális költségű feszítőfája a gráfnak