Documente Academic
Documente Profesional
Documente Cultură
Dijk Stra
Dijk Stra
5e gaseste acel nod nemarcat care are D[Y] minim (acesta este
singurul dintre nodurile nemarcate pentru care se poate spune sigur ca
drumul minim are lungimea D12) pentru celelalte noduri nemarcate
valoarea corespunzatoare din ta"loul D s#ar putea sa nu reprezinte
lungimea drumului minim ci un drum minim intermediar (alcatuit din ma!im
k#$ arce) care poate fi im"unatatit in cadrul pasilor viitori ai algoritmului
*1!2 este nodul de start (sau indicele nodului de start in * daca se doreste un
ta"lou de indicatori spre parinte clasic)
;
$
<
;
.
$
-
=
$
<
$
-
A
>
?
D
E
+
G
@
=
# ; $ . A A ; A
A > ? D E + G @
(odurile marcate
astfel sunt noduri
vizitate in graf de
algoritmul lui Dijkstra
A A A A A A A A
D'
*'
Calin Jebelean Algoritmul lui Dijkstra 11
Algoritmul lui Dijkstra
?u alte cuvinte, presupunem ca drumurile
minime de la nodul A la celelalte noduri din
graf sunt alcatuite dintr#un singur arc, adica
arcul direct de la A la fiecare din nodurile
respective (sim"olul A semnifica lipsa arcului)
Astfel, drumurile minime gasite dupa primul
pas sunt cele ingrosate pe figura anterioara
Calin Jebelean Algoritmul lui Dijkstra 12
Algoritmul lui Dijkstra
5e alege nodul ? si se marc,eaza, deoarece nodul ? este nodul
nemarcat care are intrarea in ta"loul D minima drumul minim
de la A la ? are lungimea $ (nu vom gasi altul mai scurt pana la
final)
;
$
<
;
.
$
-
=
$
<
$
-
A
>
?
D
E
+
G
@
=
# ; $ . A A ; A
A > C D E + G @
D'
Calin Jebelean Algoritmul lui Dijkstra 13
Algoritmul lui Dijkstra
*a"loul D este'
Pentru toate nodurile nemarcate tre"uie sa verificam daca nu
e!ista un drum mai scurt care trece prin nodul ?
E!emplu pentru nodul >'
Acest al doilea drum este mai lung decat drumul pe care#l aveam
deci D1>2 nu se modifica la acest pas
# ; $ . A A ; A
A > C D E + G @
Calin Jebelean Algoritmul lui Dijkstra 14
Algoritmul lui Dijkstra
E!emplu pentru nodul E'
Deoarece noul drum este mai scurt decat drumul pe care#l aveam
rezulta ca D1E2 se modifica din A in . si *1E2 se modifica in ?
(nodul ales)
Acest al doilea drum este mai lung decat drumul pe care#l aveam
deci D1+2 nu se modifica la acest pas
# ; $ . . C ; A
A > C D E + G @
Calin Jebelean Algoritmul lui Dijkstra 18
Algoritmul lui Dijkstra
E!emplu pentru nodul G'
Deoarece noul drum este mai scurt decat drumul pe care#l aveam
rezulta ca D1G2 se modifica din ; in D si *1G2 se modifica in D
(nodul ales)
Acest al doilea drum este mai lung decat drumul pe care#l aveam
deci D1G2 nu se modifica la acest pas
# ; $ . . C D A
A > C D E + G @
Calin Jebelean Algoritmul lui Dijkstra 22
Algoritmul lui Dijkstra
E!emplu pentru nodul >'
Deoarece noul drum este mai scurt decat drumul pe care#l aveam
rezulta ca D1>2 se modifica din ; in B si *1>2 se modifica in E
(nodul ales)
Acest al doilea drum este mai lung decat drumul pe care#l aveam
deci D1>2 nu se modifica la acest pas
# B $ . . < D A
A > C D E G @
Calin Jebelean Algoritmul lui Dijkstra 26
Algoritmul lui Dijkstra
E!emplu pentru nodul G'
Deoarece noul drum este mai scurt decat drumul pe care#l aveam
rezulta ca D1G2 se modifica din D in = si *1G2 se modifica in +
(nodul ales)
*1G2 3 +
*1+2 3 E
*1E2 3 ?
*1?2 3 A
Gergand invers, o"tinem' A #7 ? #7 E #7 + #7 G
Ar"orele generalizat o"tinut in ta"loul * contine toate drumurile
minime cu originea in A
A E A A ? E + #
A > ? D E + G @
Calin Jebelean Algoritmul lui Dijkstra 34
Algoritmul lui Dijkstra
Algoritmul gaseste doar drumuri minime cu originea
intr#un anumit nod al grafului
Daca se doresc drumuri minime cu originea in alt
nod, tre"uie repornit algoritmul cu respectivul nod pe
post de nod de start
Drumurile minime o"tinute pot fi reprezentate ca un
ar"ore generalizat, deoarece ele se suprapun in mare
parte
Astfel, daca drumul minim de la X la trece prin 6, el
tre"uie o"ligatoriu sa cuprinda si drumul minim de la
X la 6