Sunteți pe pagina 1din 3

Algoritmul lui dijkstra (/ ⁇ da ⁇ kstr ⁇ z/ COLORANT-str ⁇ z) este un algoritm pentru găsirea cele mai

scurte căi între noduri într-o ponderată grafic, care poate reprezenta, de exemplu, rețele rutiere. A fost
conceput de om de știință informatică Edsger W. Dijkstra în 1956 și publicat trei ani mai târziu.[4][5][6]

Algoritmul există în mai multe variante. Algoritmul original al lui Dijkstra a găsit cea mai scurtă cale între
două noduri date,[6] dar o variantă mai comună stabilește un singur nod ca nod "sursă" și găsește cele
mai scurte căi de la sursă la toate celelalte noduri din grafic, producând o cel mai scurt copac.

Pentru un nod sursă dat în grafic, algoritmul găsește cea mai scurtă cale între acel nod și fiecare altul.
[ 7 ]: 196 – 206 Poate fi, de asemenea, utilizat pentru a găsi cele mai scurte căi de la un singur nod la un
singur nod de destinație, oprind algoritmul odată ce a fost determinată cea mai scurtă cale către nodul
de destinație. De exemplu, dacă nodurile graficului reprezintă orașe și costurile căilor de margine
reprezintă distanțe de conducere între perechi de orașe conectate printr-un drum direct ( pentru
simplitate, ignorați luminile roșii, indicatoare de oprire, drumuri cu taxă și alte obstacole ), atunci
algoritmul Dijkstra poate fi utilizat pentru a găsi cea mai scurtă rută între un oraș și toate celelalte orașe.
O rețea de aplicații utilizate pe scară largă a celor mai scurti algoritmi de cale este rețeaua protocoale de
rutare, mai ales IS-IS (Sistemul Intermediar pentru Sistemul Intermediar) și OSPF (Open Shortest Path
First). Este, de asemenea, utilizat ca un subrutină în alţi algoritmi, cum ar fi Johnson.

Algoritmul Dijkstra utilizează etichete care sunt numere întregi pozitive sau numere reale, care sunt
complet comandat. Poate fi generalizată utilizarea oricăror etichete care sunt parțial comandat, cu
condiția ca etichetele ulterioare (se produce o etichetă ulterioară atunci când se traversează o margine)
să fie monoton neîncetinirea. Această generalizare se numește algoritmul generic Dijkstra cu calea cea
mai scurtă.[8][9]

Algoritmul lui Dijkstra utilizează o structură de date pentru stocarea și interogarea soluțiilor parțiale
sortate după distanță de la început. Algoritmul original al lui Dijkstra nu utilizează un coada de prioritate
min și aleargă în timp

|
2

{\displaystyle \Theta (|V|^{2})}(unde

{\displaystyle |V|} este numărul de noduri).[10] Ideea acestui algoritm este de asemenea dată în
Leyzorek și colab. 1957. Fredman și Tarjan 1984 propuneți utilizarea unui Heap fibonacci coada de
prioritate min pentru a optimiza complexitatea timpului de funcționare la

jurnal

ŞI ŞAPTEZE

{\displaystyle \Theta (|E|V+\log |V|)|. Aceasta este asimptotic cea mai rapidă sursă unică cunoscută
algoritmul cu cea mai scurtă cale pentru arbitrar grafice orientate cu greutăți ne-negative nemărginite.
Cu toate acestea, cazurile specializate (cum ar fi greutăți limitate/integer, grafice aciclice orientate etc.)
pot fi într-adevăr îmbunătățite în continuare, după cum este detaliat în Variante specializate. În plus,
dacă preprocesarea este permisă, algoritmi precum ierarhii de contracție poate fi de până la șapte ordine
de mărime mai rapid.

În unele domenii, inteligență artificială în special, algoritmul lui Dijkstra sau o variantă a acestuia este
cunoscută sub numele de căutare uniformă a costurilor şi formulată ca o instanţă a ideii mai generale de
cea mai bună căutare.[11]

Istorie

Care este cel mai scurt mod de a călători Rotterdam a Groningen, În general: de la oraş la oraş. Este
algoritmul pentru cea mai scurtă cale, În aproximativ douăzeci de minute am proiectat. Într-o dimineață
am fost la cumpărături Amsterdamcu fiancee-ul meu tânăr și obosit, ne-am așezat pe terasa cafenelei
pentru a bea o ceașcă de cafea și mă gândeam doar dacă aș putea face acest lucru, apoi am proiectat
algoritmul pentru cea mai scurtă cale. După cum am spus, a fost o invenție de douăzeci de minute. De
fapt, a fost publicată în '59, trei ani mai târziu. Publicația este încă lizibilă, este, de fapt, destul de
frumoasă. Unul dintre motivele pentru care este atât de frumos a fost că l-am proiectat fără creion și
hârtie. Am aflat mai târziu că unul dintre avantajele proiectării fără creion și hârtie este că sunteți
aproape obligați să evitați toate complexitățile care pot fi evitate. În cele din urmă, algoritmul a devenit
spre marea mea uimire, una dintre pietrele de temelie ale faimei mele.

— Edsger Dijkstra, într-un interviu cu Philip L. Frana, Comunicările ACM, 2001[5]

Dijkstra sa gândit la cea mai scurtă problemă de cale atunci când lucrează la Centrul de Matematică din
Amsterdam în 1956 ca programator pentru a demonstra capacitățile unui nou computer numit ARMAC.
[12] Obiectivul său a fost să aleagă atât o problemă, cât și o soluție (care ar fi produsă de calculator) pe
care oamenii care nu sunt calculați să o poată înțelege. El a proiectat cel mai scurt algoritm de cale și mai
târziu l-a implementat pentru ARMAC pentru o hartă de transport ușor simplificată a 64 de orașe din
Olanda (64, în Olanda, astfel încât 6 biți ar fi suficient pentru a codifica numărul orașului).[5] Un an mai
târziu, a întâlnit o altă problemă de la inginerii hardware care lucrau la următorul computer al
institutului: minimizați cantitatea de sârmă necesară pentru a conecta pinii de pe panoul din spate al
mașinii. Ca o soluție, el a redescoperit algoritmul cunoscut sub numele de Algoritmul minim de arbori de
acoperire al lui Prim (cunoscut mai devreme pentru Jarnik, şi, de asemenea, redescoperită de Prim).[13]
[14] Dijkstra a publicat algoritmul în 1959, la doi ani după Prim și la 29 de ani după Jarník.[15][16]

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