Sunteți pe pagina 1din 1

Să presupunem că ai dori să găsești cea mai scurtă cale între doi intersecții pe harta orașului: a punct de

plecare și a destinaţie. Algoritmul lui Dijkstra marchează inițial distanța ( de la punctul de plecare ) la
orice altă intersecție de pe hartă cu infinit. Acest lucru se face nu pentru a implica o distanță infinită, ci
pentru a observa că acele intersecții nu au fost încă vizitate. Unele variante ale acestei metode lasă
distanțele intersecțiilor neetichetat. Acum selectați intersecție curentă la fiecare iterație. Pentru prima
iterație, intersecția curentă va fi punctul de plecare, iar distanța până la ea ( eticheta intersecției ) va fi
zero. Pentru iterațiile ulterioare ( după primul ), intersecția curentă va fi a cea mai apropiată intersecție
nevăzută până la punctul de plecare ( acest lucru va fi ușor de găsit ).

Din intersecția curentă, actualizare distanța până la fiecare intersecție nevizitată care este conectată
direct la ea. Acest lucru se face prin determinarea sumă a distanței dintre o intersecție nevizitată și
valoarea intersecției curente și apoi reetichetare intersecția nevizitată cu această valoare (suma) dacă
este mai mică decât valoarea curentă a intersecției nevizitate. De fapt, intersecția este re-etichetată dacă
calea spre ea prin intersecția curentă este mai scurtă decât căile cunoscute anterior. Pentru a facilita
identificarea celei mai scurte căi, în creion, marcați drumul cu o săgeată care indică intersecția
reetichetată dacă o etichetați/reetichetați și ștergeți toate celelalte care indică spre ea. După ce ați
actualizat distanțele la fiecare intersecție vecină, marcați intersecția curentă ca vizitat și selectați o
intersecție nevizitată cu o distanță minimă (de la punctul de plecare) – sau cea mai mică etichetă—as
intersecția curentă. Intersecțiile marcate ca vizitate sunt etichetate cu cea mai scurtă cale de la punctul
de plecare la acesta și nu vor fi revizuite sau returnate la.

Continuați acest proces de actualizare a intersecțiilor învecinate cu cele mai scurte distanțe, marcând
intersecția curentă așa cum a fost vizitată și trecând la cea mai apropiată intersecție nevizitată până când
ați marcat destinația vizitată. Odată ce ați marcat destinația așa cum a fost vizitată (ca în cazul oricărei
intersecții vizitate), ați determinat cea mai scurtă cale spre ea de la punctul de plecare și puteți urmăriți-
vă drumul înapoi urmând săgețile în sens invers. În implementările algoritmului, acest lucru se face de
obicei (după ce algoritmul a ajuns la nodul de destinație) urmând părinții nodurilor de la nodul de
destinație până la nodul de pornire; de aceea, ținem evidența părintelui fiecărui nod.

Acest algoritm nu face nici o încercare de "explorare" directă spre destinație, așa cum s-ar putea aștepta.
Mai degrabă, singura considerație în determinarea următoarei intersecții "curente" este distanța sa de la
punctul de plecare. Prin urmare, acest algoritm se extinde spre exterior de la punctul de plecare, luând în
considerare în mod interactiv fiecare nod care este mai aproape în ceea ce privește cea mai scurtă
distanță de cale până când ajunge la destinație. Când este înțeles în acest fel, este clar modul în care
algoritmul găsește în mod necesar cea mai scurtă cale. Cu toate acestea, poate dezvălui și una dintre
slăbiciunile algoritmului: încetinirea relativă în unele topologii.

S-ar putea să vă placă și