Sunteți pe pagina 1din 3

16.

Algoritmul lui Dijkstra


Este destinat aflrii celor mai scurte ci de la un nod dat la toate celelalte noduri ale grafului; Se creeaz astfel un arbore de acoperire, care are ca rdcin nodul ini ial dat !numit "i surs#, iar fiecare ramur reprezint cea mai scurt cale de la surs la toate nodurile pe care le con ine. Acest arbore, $n general, difer de arborele de cost minim. %entru aplicarea acestui algoritm, se folosesc dou structuri de date au&iliare' ( Arborele S, care con ine cile cele mai scurte ctre noduri; ini ial, acest arbore con ine numai nodul surs, dar el se completeaz cu un nou nod la fiecare parcurgere a ciclului )reed*; ( coada de priorit i +, care con ine nodurile care nu sunt $n S, dar ctre care conduc legturi de la nodurile din S; la e&tragerea din coad, prioritatea ma&im apar ine nodului pentru care distan a de la surs este cea mai mic. ,ni ial, se creeaz structurile -ide S "i +, dup care se pune nodul surs $n +. .iecrui nod din + i se ata"eaz ca informa ie distan a de la nodul surs p/n la nodul dat. Se intr apoi $ntr(un ciclu )reed*. 0a fiecare parcurgere a ciclului se e&trage din + nodul de prioritate ma&im !deci cel pentru care distan a de la nodul sursa este minim# "i se pune $n S. %entru a se putea reconstitui arborele, $n structurile S "i + fiecare element -a con ine "i o referin la tatl acestuia, deci -a fi reprezentat prin urmtorul triplet' !1tata2 1 nod3curent2 1distan 3la3surs2#

Este un algoritm care calculeaza drumurile minime de la un nod al unui graf la toate celelalte noduri din graf. )rafurile pe care poate lucra algoritmul lui Dijkstra sunt, in general, ponderate si orientate 4 arcele sunt orientate de la un nod la alt nod !nu se poate merge si in-ers# si au un anumit cost de care se -a tine seama in aflarea drumului minim. Daca graful este neponderat !arcele nu au costuri asociate# atunci drum minim intre doua noduri se considera drumul alcatuit din numar minim de arce. %entru a gasi drumul minim de la un nod 5 la un nod 6 se poate aplica o cautare prin cuprindere pornind de la nodul 5 4 prima aparitie a lui 6 in coada algoritmului de cautare prin cuprindere presupune e&istenta unui drum cu numar minim de arce de la 5 la 6, care poate fi reconstituit. %e un astfel de graf se poate aplica si algoritmul lui Dijkstra, daca transformam in prealabil graful intr(unul ponderat, asociind fiecarui arc acelasi cost. Drumul de cost minim intre doua noduri obtinut in urma aplicarii algoritmului lui Dijkstra -a a-ea si numar minim de arce din moment ce toate arcele au acelasi cost. Algoritmul lui Dijkstra functioneaza atat pe grafuri cone&e cat si pe grafuri necone&e. 7n graf este cone& daca din orice nod al sau se poate ajunge in orice alt nod. ,n cazul grafurilor orientate, pentru ca intre doua noduri sa e&iste un drum in graf, nu este suficient sa e&iste o succesiune de arce intre cele doua noduri, ci arcele trebuie sa fie si orientate in sensul corespunzator. 7n drum intr(un graf orientat trebuie sa parcurga numai arce orientate identic, de la nodul sursa pana la nodul destinatie.

Daca nu e&ista nici un drum de la nodul de start la un alt nod al grafului atunci algoritmul lui Dijkstra -a raporta e&istenta unui drum de lungime infinita intre ele 4 acest rezultat indica, de fapt, lipsa oricarui drum intre cele doua noduri ,ntrare' Algoritmul porneste de la un graf orientat si ponderat cu 8 noduri; De asemenea, e ne-oie de un nod de start apartinand grafului 4 acesta este nodul de la care se doreste aflarea drumurilor minime pana la celelalte noduri din graf. ,esire' 9ezultatul algoritmului se prezinta sub forma unui tablou D cu 8 intrari, continand distantele minime de la nodul de start la toate celelalte noduri din graf.

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