Sunteți pe pagina 1din 9

Cercetari

operationale
- curs 2 -

Lect. Univ. dr. Ramona Paun


Email: ramona.paun@csie.ase.ro
1.4. Drumuri de valoare minimă .

• 1.4.1. Problema drumului de valoare minimă


• Fie G = (V, E) un graf finit (orientat, neorientat sau parţial orientat).
Dacă e  E este o muchie cu extremităţile xi şi xj atunci această
muchie are o orientare permisă prin arcele (xi, xj) şi (xj, xi). Dacă arcul u
este dat prin extremităţile sale u = (xi, xj), cu xi, xj  V, valoarea arcului
va fi dată prin notaţiile v(xi, xj) sau vij. Dacă u este o muchie în graful G
= (V, E) atunci v(u) = v(xi, xj) = v(xj, xi), deci pe ambele sensuri arcele au
aceeaşi valoare.
• Valorile asociate arcelor pot reprezenta în practică distanţele între
două localităţi, costurile executării unei lucrări pe tronsoanele
respective, costurile trecerii unei linii de fabricaţie de la un produs la
altul, timpii de execuţie ai unor activităţi, măsura siguranţei
transmisiunii unui semnal, etc.
• Pentru un drum  între nodul xi  X şi nodul xj  X, precizat prin
specificarea arcelor componente, se defineşte valoarea drumului  ca
fiind suma valorilor arcelor componente:
1.4. Drumuri de valoare minimă
• O problemă extremală într-un graf orientat G = (V, U) constă în
determinarea unui drum elementar (sau a drumurilor
elementare), între două noduri date, de valoare minimă (sau de
valoare maximă).
• Un drum este elementar dacă nodurile sale sunt distincte
(drumul trece o singură dată prin fiecare nod al său). Un drum
este simplu dacă arcele sale sunt distincte (drumul trece o
singură dată prin fiecare arc al său).
• Fie s şi t două noduri oarecare ale grafului G. Notăm cu G*(s, t)
un subgraf al grafului G format din mulţimea drumurilor din
graful considerat G = (V, U) între nodurile s şi t, în care sunt
incluse şi drumurile de lungime 1. Problema drumurilor de
valoare minimă între nodurile s şi t se defineşte ca problema
determinării drumului * de la nodul s la nodul t în graful G*(s,
t), de valoare minimă:
1.4. Drumuri de valoare minimă
.
• Dacă  şi ' sunt drumuri elementare în G având aceleaşi extremităţi,
atunci drumurile pot fi comparabile: fie v(')  v(), fie v()  v(’).
• În cazul în care există mai multe drumuri de la s la t, vom alege drumul
de valoare minimă.
• Dacă graful G nu este conex şi nodurile s şi t nu fac parte din aceeaşi
componentă conexă (figura 1.13.a) sau orientările pe arce nu permit
atingerea nodului t din nodul s (figura 1.13.b), există posibilitatea ca în
graful G să nu existe drumuri de la s la t.

• Vom spune că nodul i este atins din nodul s dacă există un drum de la s la
i format din arce permise. Putem determina drumuri de valoare minimă
de la s la toate celelalte noduri ale grafului sau considera cazul particular
al determinării drumului de valoare minimă de la s la t, în ipoteza că
toate valorile arcelor permise sunt nenegative.
Algoritmul Dijkstra
Algoritmul Dijkstra
Algoritmul Dijkstra
Algoritmul Dijkstra

Exemplul 1.3. Aplicaţi metoda DISKTRA pentru a determina drumurile de valoare minimă
de la nodul s la nodurile ce pot fi atinse din s în graful din figura 1.15. Fiecărei muchii îi este
asociat un cost valabil în ambele sensuri de parcurgere pe muchiile neorientate.
Algoritmul Dijkstra
• Inițializare:
• Folosim 2 liste:
• lista nodurilor vizitate (cu eticheta permanentă) P;
• lista nodurilor nevizitate (cu eticheta temporară) T;
• Setăm distanța dintre nodul de start către nodul de start ca fiind 0.
• Setăm distanțele dintre nodul de start și toate celelalte noduri ca fiind ∞
• Trecem în tabel (Nod, mindist, prednod) aceste distanțe.
• Iterație:
• Vizităm nodul nevizitat (din lista T) cu distanța cea mai mică față de nodul de
start (inițial nodul nevizitat ales este cel de start);
• Pentru nodul curent ales, examinăm vecinii nevizitați;
• Pentru nodul curent ales calculăm distanța fiecărui vecin nevizitat față de
nodul de start;
• Dacă distanța calculată este mai mică decât cea cunoscută, actualizăm distanța
minimă și nodurile precedente pentru fiecare distanță actualizată;
• Adaugăm nodul curent ales la lista nodurilor vizitate. Nodul acesta nu va mai fi
vizitat din nou. T 
• Repetăm iterația până când vizităm toate nodurile ( )

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