Sunteți pe pagina 1din 57

Tema 8 . Drumuri minime în graf.

1. Notiuni introductive
2. Drumul minim între două vârfuri ale grafului
(algoritmul Dijkstra)
3. Drumul minim de la un vârf la toate vârfurile
grafului(algoritmul Dijkstra)
4. Drumul minim între toate perechile de vârfuri
(algoritmul Floyd)
1. Notiuni introductive.
Ponderea unei muchii (x,y) în graf este o caracteristică
numerică a relaţiei între vârfurile x şi y. Ea poate specifica
distanţa dintre vârfuri, sau capacitatea unui canal de
transmitere a datelor, a unei conducte, magistrale auto, etc.
Atribuirea ponderilor la muchiile unui graf permite formularea
unei serii noi de probleme, inclusiv probleme de optimizare.
Una dintre aceste probleme este problema drumurilor
minime.
Problema drumurilor minime într-un graf arbitrar G(X,U), muchiile
căruia au ponderi nenegative descrise de matricea costurilor C(i,j) este
de a determina un drum de lungime minimă între două vârfuri date s şi
t ale grafului, în condiţia că un asemenea drum există. Pentru problema
dată există mai multe formulări:

• Să se determine distanţa minimă între două vârfuri ale grafului (dacă


între ele există un drum);
• Să se determine distanţa minimă de la un vârf al grafului la toate
celelalte vârfuri;
• Să se determine distanţele minimale între toate perechile de vârfuri.
2. Distanţa minimă între două vârfuri.
Algoritmul Dijkstra
Algoritmul Dijkstra se bazează pe aplicarea etichetelor
pentru vârfurile în care se poate ajunge dintr-un vârf
dat. Iniţial etichetele au valori temporare suficient de
mari, care pe parcursul repetării iteraţiilor se
micşorează, până la atingerea valorilor minime. La
fiecare iteraţie a algoritmului, exact una dintre etichete
devine permanenta, adică indică drumul minim până la
unul dintre vârfuri. Prin urmare algoritmul va conţine
cel mult n iteraţii.
• s- vârful de la care se calculează distanţele
minime,
• t –vârful până la care se calculează distanţa.
• Pentru fiecare vârful x se determină eticheta
care va conține două componente l(dx, k)
1) dx valoarea distanţei curente de la s la x
2) k -indicele vârfului din care se ajunge în x .
Codul de determinarea a drumului minim
intre varfurile s si t
Pas 1.
Se consideră – etichetă permanentă pentru vârful s - l(0, s). Pentru
toate celelalte vârfuri se consideră etichete temporale: 𝑙(∞, 𝑠).
Includem vârful s în mulțimea M={s}. Celelalte vârfuri vor fi incluse în
mulțimea 𝑀.
Pas 2. (Recalcularea etichetelor)
Pentru toate vârfurile care nu au marcaje permanente 𝑧 ∈ 𝑀, se
recalculează componentele distanţă ale marcajelor în corespundere cu
formula: dz=min(dz, dk +ckz , unde 𝑘 ∈ 𝑀, 𝑧 ∈ 𝑀 și 𝑘, 𝑧 ∈ 𝑈)
Codul de determinarea a drumului minim
intre varfurile s si t
Pas 3. (Determinarea vârfului care va obține eticheta permanentă)
Între toate vârfurile cu etichete temporare se determină cel cu
minim pentru componenta distanță:
df =min(dz), 𝑧 ∈ 𝑀
Minimul se realizează pentru vârful f, care va fi inclus în mulțimea M.
Respectiv se va modifica și a doua componentă a etichetei. Adică se va
indica vârful de unde se realizează acest minimum.
Codul de determinarea a drumului minim
intre varfurile s si t
Pas 4. (Repetarea iteraţiei)
Dacă f = t atunci eticheta indică costul minim a drumului din s în t.
Pentru restabilirea drumului minim se trece la pasul 5. În caz contrar se
revine la pasul 2.

Pas 5. (Restabilirea traectoriei)


Pentru restabilirea traiectoriei se foloseşte a doua componentă a
etichetei: se consideră x= t. Conform componentei a doua, este
restabilita trectoria pana se ajunge la s.
Exemplu. Să se determine drumul minim între vârful 1 și 10.
Pentru comoditate informația va fi inclusă in doua
masive.
Componenta distantei Componenta sursei
It. 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
It.0
Pas 1. Eticheta varfului 1 este l(0,1). Cea ce înseamnă că distanța minimă de
la varful 1 la varful 1 este 0 și că in varful 1 s-a ajuns din varful 1. Varful 1
este inclus in mulțimea M={1}.
𝑀 = {2, 3, 4, 5, 6, 7, 8, 9, 10}

it. 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
0 0* ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 1 1 1 1 1 1 1 1 1 1
It.1
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di

Este evident că se vor


It. 1 2 3 4 5 6 7 8 9 10 modifica următoarele
0 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
* etichete
d2=min{d2, d1+c12}
d4=min{d4, d1+c14}
d7=min{d7, d1+c17}
1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
It.1
Pas 2. Pentru vârfurile care nu
ai etichete constante, se
recalculează componenta
di

It. 1 2 3 4 5 6 7 8 9 10 Este evident că se vor


1 0 10 ∞ 5 ∞ ∞ 6 ∞ ∞ ∞
* modifica următoarele
etichete. Observăm ca
sursa nu se va modifica.
d2=min{d2, d1+c12}
1 2 3 4 5 6 7 8 9 10
d4=min{d4, d1+c14}
1 1 1 1 1 1 1 1 1 1 d =min{d , d +c }
7 7 1 17
It.1
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
d5=min{d2, d5, d7}.

It. 1 2 3 4 5 6 7 8 9 10
1 0* 10 ∞ 5 ∞ ∞ 6 ∞ ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
It.1
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
d5=min{d2, d4, d7}.
M={1, 4}
varf 1 2 3 4 5 6 7 8 9 10
1 0* 10 ∞ 5∗ ∞ ∞ 6 ∞ ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
It.1
Pas 4. Varful 10 are etichetă
constantă?
Repetăm pasul 2

it 1 2 3 4 5 6 7 8 9 10
1 0* 10 ∞ 5∗ ∞ ∞ 6 ∞ ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
It.2
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 4}

Se vor recalcula
It. 1 2 3 4 5 6 7 8 9 10 următoarele etichete
1 0* 10 ∞ 5∗ ∞ ∞ 6 ∞ ∞ ∞ d =min{d , d +c }
2 2 1 12
d7=min{d7, d1+c17 d4+c47}
d5=min{d5, d4+c45}
1 2 3 4 5 6 7 8 9 10
d8=min{d8, d4+c48}
1 1 1 1 1 1 1 1 1 1
It.2
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di

Se vor recalcula
următoarele etichete
It. 1 2 3 4 5 6 7 8 9 10 d =min{d , d +c }
2 2 1 12
2 0* 10 ∞ 5∗ 10 ∞ 6 10 ∞ ∞ d =min{d , d +c }
5 5 4 45
d7=min{d7, d1+c17 d4+c27}
1 2 3 4 5 6 7 8 9 10 d8=min{d8, d4+c48}
1 1 1 1 4 1 1 4 1 1
It.2
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
d7=min{d2, d5, d7, d8}.
M={1, 4,7}

It. 1 2 3 4 5 6 7 8 9 10
2 0* 10 ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 1
It.2
Pas 4. Varful 10 are etichetă
constantă?
Repetăm pasul 2

it 1 2 3 4 5 6 7 8 9 10
2 0* 10 ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 1
It.3
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 4,7 }

Se vor recalcula
it 1 2 3 4 5 6 7 8 9 10 următoarele etichete
2 0* 10 ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞ d2=min{d2, d1+c12}
d5=min{d5, d4+c45}
1 2 3 4 5 6 7 8 9 10 d8=min{d8, d4+c48 d7+c78}
1 1 1 1 4 1 1 4 1 1
It.3
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 4,7 }

Se vor recalcula
It. 1 2 3 4 5 6 7 8 9 10 următoarele etichete
3 0* 10 ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞ d2=min{d2, d1+c12}
d5=min{d5, d4+c45}
1 2 3 4 5 6 7 8 9 10 d8=min{d8, d4+c48 d7+c78}
1 1 1 1 4 1 1 4 1 1
It.3
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d2, d5, d8}.

it 1 2 3 4 5 6 7 8 9 10
3 0* 10 ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 1
It.3
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d2, d5, d8}.
Se alege doar unul
M={1, 2, 4, 7}
it 1 2 3 4 5 6 7 8 9 10
3 0* 10∗ ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 1
It.3
Pas 4. Varful 10 are etichetă
constantă?
Repetăm pasul 2

it 1 2 3 4 5 6 7 8 9 10
3 0* 10∗ ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 1
It.4
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete
di
M={1,2,4,7 }

it 1 2 3 4 5 6 7 8 9 10 Se vor recalcula
3 0* 10∗ ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞ următoarele etichete
d3=min{d2, d2+c23}
d6=min{d2, d2+c26}
1 2 3 4 5 6 7 8 9 10 d5=min{d5, d4+c45}
1 1 1 1 4 1 1 4 1 1 d8=min{d8, d4+c48
d7+c78}
It.4
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete
di
M={1,2,4,7 }

it 1 2 3 4 5 6 7 8 9 10 Se vor recalcula
4 0* 10∗ 30 5∗ 10 18 6∗ 10 ∞ ∞ următoarele etichete
d3=min{d2, d2+c23}
d6=min{d2, d2+c26}
1 2 3 4 5 6 7 8 9 10 d5=min{d5, d4+c45}
1 1 2 1 4 2 1 4 1 1 d8=min{d8, d4+c48
d7+c78}
It.4
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d5, d8}.
Se alege doar unul
M={1, 2, 4, 7}
it 1 2 3 4 5 6 7 8 9 10
4 0* 10∗ 30 5∗ 10 18 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 1 1
It.4
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d5, d8}.
Se alege doar unul
M={1, 2, 4,5,7}
it 1 2 3 4 5 6 7 8 9 10
4 0* 10∗ 30 5∗ 10* 18 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 1 1
It.4
Pas 4. Varful 10 are etichetă
constantă?
Repetăm pasul 2

It. 1 2 3 4 5 6 7 8 9 10
4 0* 10∗ 30 5∗ 10* 18 6∗ 10 ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 1 1
It.5
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 2, 4,5,7}

Se vor recalcula
it 1 2 3 4 5 6 7 8 9 10 următoarele etichete
4 0* 10∗ 30 5∗ 10* 18 6∗ 10 ∞ 30 d3=min{d3, d2+c23}
d6=min{d6, d2+c26 d5+c56}
d8=min{d8, d4+c48 d7+c78}
1 2 3 4 5 6 7 8 9 10
d10=min{d10, d5+c5 10}
1 1 2 1 4 2 1 4 1 5
It.5
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d6, d8, d10}.
M={1, 2, 4,5,7}

It. 1 2 3 4 5 6 7 8 9 10
5 0* 10∗ 30 5∗ 10* 18 6∗ 10 ∞ 30

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 1 5
It.5
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d2, d5, d8}.
M={1, 2, 4,5,7,8}

it 1 2 3 4 5 6 7 8 9 10
5 0* 10∗ ∞ 5∗ 10∗ ∞ 6∗ 10∗ ∞ 30

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 5
It.5
Pas 4. Varful 10 are etichetă
constantă?
Repetăm pasul 2

It. 1 2 3 4 5 6 7 8 9 10
5 0* 10∗ ∞ 5∗ 10∗ ∞ 6∗ 10∗ ∞ ∞

1 2 3 4 5 6 7 8 9 10
1 1 1 1 4 1 1 4 1 1
It.6
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete
di
M={1, 2, 4,5,7,8}

It. 1 2 3 4 5 6 7 8 9 10 Se vor recalcula


5 0* 10∗ ∞ 5∗ 10∗ ∞ 6∗ 10∗ ∞ ∞ următoarele etichete
d3=min{d3, d2+c23}
d6=min{d6, d2+c26
1 2 3 4 5 6 7 8 9 10
d5+c56}
1 1 1 1 4 1 1 4 1 1
d10=min{d10, d5+c5 10
d8+c810}
It.6
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 2, 4,5,7,8}

Se vor recalcula
it 1 2 3 4 5 6 7 8 9 10 următoarele etichete
6 0* 10∗ 30 5∗ 10∗ 18 6∗ 10∗ 30 30 d3=min{d3, d2+c23}
d6=min{d6, d2+c26 d5+c56}
d10=min{d10, d5+c5 10
1 2 3 4 5 6 7 8 9 10 d8+c810}
1 1 2 1 4 2 1 4 8 5 d9=min{d9, d8+c89}
It.6
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d6, d9 , d10}.
M={1, 2, 4,5,7,8}

it 1 2 3 4 5 6 7 8 9 10
6 0* 10∗ 30 5∗ 10∗ 18 6∗ 10∗ 30 30

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 8 5
It.6
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d6, d9 , d10}.
M={1, 2, 4,5,6,7,8}

It. 1 2 3 4 5 6 7 8 9 10
6 0* 10∗ 30 5∗ 10∗ 18* 6∗ 10∗ 30 30

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 8 5
It.6
Pas 4. Varful 10 are etichetă
constantă?
Repetăm pasul 2

it 1 2 3 4 5 6 7 8 9 10
6 0* 10∗ 30 5∗ 10∗ 18* 6∗ 10∗ 30 30

1 2 3 4 5 6 7 8 9 10
1 1 2 1 4 2 1 4 8 5
It.7
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 2, 4,5,6,7,8}

Se vor recalcula
it 1 2 3 4 5 6 7 8 9 10 următoarele etichete
6 0* 10∗ 30 5∗ 10∗ 18* 6∗ 10∗ 30 30 d3=min{d3, d2+c23 ,d6+c63}
d9=min{d9, d8+c89}
d10=min{d10, d5+c5 10,
1 2 3 4 5 6 7 8 9 10 d6+c610 , d8+c810}
1 1 2 1 4 2 1 4 8 5
It.7
Pas 2. Pentru varfurile care nu
ai etichete constane, se
recalculeză componete di
M={1, 2, 4,5,6,7,8}

Se vor recalcula
it 1 2 3 4 5 6 7 8 9 10 următoarele etichete
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24 d3=min{d3, d6+c63}
d9=min{d9, d8+c89}
d10=min{d10, d5+c5 10,
1 2 3 4 5 6 7 8 9 10 d6+c610 , d8+c810}
1 1 6 1 4 2 1 4 8 6
It.7
Pas 3. Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d9 , d10}.
M={1, 2, 4,5,6,7,8}

It. 1 2 3 4 5 6 7 8 9 10
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
It.7
Pas 3-4 Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d9 , d10}.
M={1, 2, 4,5,6,7,8}

It. 1 2 3 4 5 6 7 8 9 10 Varful 10 a obținut


7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24* eticheta constanta.
Drumul minim a fost
determinat. Trecem la
1 2 3 4 5 6 7 8 9 10 pasul 5
1 1 6 1 4 2 1 4 8 6
It.7
Pas 5 Conform tabelului 2:
1 → 2→ 6→ 10.
Lungimea drumului este
24

it 1 2 3 4 5 6 7 8 9 10
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
3. Drumul minim de la un vârf la toate
vârfurile grafului(algoritmul Dijkstra)
Pentru determinarea drumului minim intre varful x
către toate celelate varfuri cu ajutorul algoritmul
Dijkstra este necesar de a determina etichete constante
tuturor varfurilor.
Exemplu.
In exemplu analizat anterior
algoritmul s-a stopat din
cauza ca vârful 10 a primit
eticheta constantă, cea ce
corespondea cerintelor
problemei.

it 1 2 3 4 5 6 7 8 9 10 La reformularea problemei:
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24* Sa se determine drumul
minimde la varful 1 catre
toate celelate varfuri, este
1 2 3 4 5 6 7 8 9 10
necesar de a continua
1 1 6 1 4 2 1 4 8 6 iteratiile.
Exemplu.
Nu toate varfurile au
eticheta constanta.
E

it 1 2 3 4 5 6 7 8 9 10
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
It.7
Pas 4 Varful 10 a obținut
eticheta constanta
M={1, 2, 4,5,6,7,8,10}

Nu toate varfurile au
eticheta constanta.
It. 1 2 3 4 5 6 7 8 9 10
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24* Trecem la pasul 2,
urmatoarea iterație
1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
It.8
Pas 2 Pentru varfurile care nu
ai etichete constane, se
recalculeză componete
di
M={1, 2, 4,5,6,7,8,10}

It. 1 2 3 4 5 6 7 8 9 10 Se vor recalcula


7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24* următoarele etichete
d3=min{d3, d6+c63}
d9=min{d9, d8+c89,
1 2 3 4 5 6 7 8 9 10
d10+c10 9 }
1 1 6 1 4 2 1 4 8 6
It.8
Pas 2 Pentru varfurile care nu
ai etichete constane, se
recalculeză componete
di
M={1, 2, 4,5,6,7,8,10}

It. 1 2 3 4 5 6 7 8 9 10 Se vor recalcula


8 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24* următoarele etichete
d3=min{d3, d6+c63}
d9=min{d9, d8+c89,
1 2 3 4 5 6 7 8 9 10
d10+c10 9 }
1 1 6 1 4 2 1 4 8 6
It.8
Pas 3 Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d9 }.
M={1, 2, 4,5,6,7,8,10}

It. 1 2 3 4 5 6 7 8 9 10
8 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
It.8
Pas 3 Determinarea vârfului
care va obține eticheta
permanenta df
min{d3, d9 }.
M={1, 2, 4,5,6,7,8,9,10}

It. 1 2 3 4 5 6 7 8 9 10

8 0 10 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*
* ∗

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
It.8
Pas 4 Toate varfurile au
etichetă constantă?
Repetăm pasul 2

It. 1 2 3 4 5 6 7 8 9 10

8 0 10 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*
* ∗

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
It.9
Iteratia finala!

It. 1 2 3 4 5 6 7 8 9 10
∗ ∗ ∗ ∗ ∗ ∗ ∗
9 0 10 28 5 10 18
* * 6 10 30 24*

1 2 3 4 5 6 7 8 9 10
1 1 6 1 4 2 1 4 8 6
Componenta distantei
1 2 3 4 5 6 7 8 9 10
0 0* ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
1 0* 10 ∞ 5∗ ∞ ∞ 6 ∞ ∞ ∞
2 0* 10 ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞
3 0* 10∗ ∞ 5∗ 10 ∞ 6∗ 10 ∞ ∞
4 0* 10∗ ∞ 5∗ 10∗ ∞ 6∗ 10 ∞ ∞
5 0* 10∗ ∞ 5∗ 10∗ ∞ 6∗ 10∗ ∞ ∞
6 0* 10∗ 30 5∗ 10∗ 18* 6∗ 10∗ 30 30
7 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*

8 0* 10∗ 28 5∗ 10∗ 18* 6∗ 10∗ 30 24*
∗ ∗
9 0* 10∗ 28 5∗ 10∗ 18* ∗ ∗
6 10 30 24*
Componenta sursei
1 2 3 4 5 6 7 8 9 10
0 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 4 1 1 4 1 1
3 1 1 1 1 4 1 1 4 1 1
4 1 1 1 1 4 1 1 4 1 1
5 1 1 1 1 4 1 1 4 1 1
6 1 1 2 1 4 2 1 4 8 5
7 1 1 6 1 4 2 1 4 8 6
8 1 1 6 1 4 2 1 4 8 6
9 1 1 6 1 4 2 1 4 8 6
Conform tabelelor
distanta dintre vârful 1
și 9:
1 → 4→ 8→ 9.
Lungimea drumului
Componenta distantei este 30
1 2 3 4 5 6 7 8 9 10 distanta dintre vârful 1
9 0* 10∗ 28

5∗ 10∗ 18* 6∗ 10∗ 30

24* și 6:
1 → 2 → 6.
Lungimea drumului
Componenta sursei este 18
1 2 3 4 5 6 7 8 9 10

9 1 1 6 1 4 2 1 4 8 6

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