Sunteți pe pagina 1din 14

Cercet ari operationale

B arb acioru Iuliana Carmen


SEMINARUL 1
Determinarea drumului de valoare optim a
2
Cuprins
1 Determinarea drumului de valoare optim a 5
1.1 Algoritmul Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Algoritmul lui Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . 10
Pentru etapele algoritmului Ford studiaz a Cursul 2
Pentru etapele algoritmului Dijkstra studiaz a Cursul 2
3
Determinarea drumului de valoare optim a
4
SEMINARUL 1
Determinarea drumului de
valoare optim a
5
Determinarea drumului de valoare optim a
1.1 Algoritmul Ford
Exemplul 1.1.1 Sa se stabileasca drumul de valoare minima ntre vrfurile x
1
si x
8
din graful din gura 3.2.
Solutie: Rezolvarea problemei se poate face ntr-un tabel care contine:
1. pe prima coloan a arcele grafului,
2. pe a doua coloan a valorile asociate acestora,
3. n celelalte coloane sunt trecute diferentele a
j
a
i
calculate la ecare iteratie
(vezi tabelul 3.1).
Figura 3.2
Se constat a c a n tabelul 3.1 au fost trecute mai nti arcele incidente spre interior
lui x
1
apoi lui x
2
, s.a.m.d.
Etapa I-a Alegem a
(0)
1
= 0; a
(0)
2
= a
(0)
3
= ::: = a
(0)
8
= 1;
Etapa a II-a Vom conveni c a 11 = 0!
Pasul 1 Efectund diferentele a
j
a
i
pentru toate arcele grafului dat, observ am
c a diferentele
a
(0)
2
a
(0)
1
; a
(0)
3
a
(0)
1
; a
(0)
4
a
(0)
1
sunt mai mari dect valorile arcelor corespunz atoare (ele au fost marcate n
tabelul 3.1 printr-un asterisc). Deoarece la pasul 1 au rezultat diferente a
j
a
i
Pentru etapele algoritmului Ford studiaz a Cursul 2
6
Cercet ari Operationale Seminarul 1
> v
ij
se aplic a relatia (3.4) si obtinem noile marcaje:
a
(1)
2
= a
(0)
1
+ v
21
= 0 + 3 = 3
a
(1)
3
= a
(0)
1
+ v
31
= 0 + 2 = 2
a
(1)
4
= a
(0)
1
+ v
41
= 0 + 3 = 3
Celelalte marcaje a
(1)
k
; k = 5; 8, se mentin ca cele de la pasul anterior a
(0)
k
; k = 5; 8.
Noile valori a
(1)
j
se trec n tabelul 3.2 pe linia corespunz atoare primei iteratii.
Pasul 2 Se calculeaz a diferentele a
(1)
j
a
(1)
i
si se compar a cu v
ji
iar n cazul cnd
a
(1)
j
a
(1)
i
> v
ji
se calculeaz a a
(2)
j
= a
(2)
i
+v
ij
. Analiznd diferentele a
(1)
j
a
(1)
i
se constat a c a diferentele a
(1)
5
a
(1)
2
; a
(1)
6
a
(1)
2
; a
(1)
6
a
(1)
3
; a
(1)
7
a
(1)
3
; a
(1)
7
a
(1)
4
sunt mai mari dect valorile arcelor corespunz atoare si de aceea ele s-au notat cu
asterisc (coloana 4, tabelul 3.1). Exist a dou a variante pentru micsorarea lui a
6
si a
7
:
(
a
(2)
6
= a
(1)
2
+ v
26
= 3 + 2 = 5
a
(2)
6
= a
(1)
3
+ v
36
= 2 + 1 = 3
(
a
(2)
7
= a
(1)
3
+ v
37
= 2 + 4 = 6
a
(2)
7
= a
(1)
4
+ v
47
= 3 + 3 = 6
Evident n cazul problemelor de minim se alege valoarea cea mai mic a, deci
a
(2)
6
= 3. Pentru a
(2)
7
valorile coincid deci a
(2)
7
= 6. n plus, avem:
a
(2)
5
= a
(1)
2
+ v
52
= 3 + 3 = 6
Celelalte valori a
(2)
j
se mentin nemodicate (vezi tabelul (3.2) iteratia 2).
7
Determinarea drumului de valoare optim a
Tabelul 3.1
(x
i
; x
j
) v (x
i
; x
j
) a
(0)
j
a
(0)
i
a
(1)
j
a
(1)
i
a
(2)
j
a
(2)
i
a
(3)
j
a
(3)
i
(x
1
; x
2
) 3 1

3 3 3
(x
1
; x
3
) 2 1

2 2 2
(x
1
; x
4
) 3 1

3 3 3
(x
2
; x
3
) 1 0 -1 -1 -1
(x
2
; x
5
) 3 0 1

3 3
(x
2
; x
6
) 2 0 1

0 0
(x
3
; x
4
) 2 0 1 1 1
(x
3
; x
6
) 1 0 1

1 1
(x
3
; x
7
) 4 0 1

4 4
(x
4
; x
7
) 3 0 1

3 3
(x
5
; x
8
) 2 0 0 1

0
(x
6
; x
5
) 5 0 0 3 3
(x
6
; x
8
) 3 0 0 1

3
(x
7
; x
5
) 5 0 0 0 0
(x
7
; x
8
) 1 0 0 1

0
Tabelul 3.2
Nr.iter. a
1
a
2
a
3
a
4
a
5
a
6
a
7
a
8
0 0 1 1 1 1 1 1 1
1 0 3 2 3 1 1 1 1
2 0 3 2 3 6 3 6 1
3 0 3 2 3 6 3 6 6
Pasul 3 Se calculeaz a diferentele a
(2)
j
a
(2)
i
si se compar a cu v
ji
iar n cazul cnd
a
(2)
j
a
(2)
i
> v
ij
se calculeaz a a
(3)
j
= a
(2)
i
+v
ij
. Se constat a c a diferentele a
(2)
8

a
(2)
5
; a
(2)
8
a
(2)
6
; a
(2)
8
a
(2)
7
sunt mai mari dect valorile arcelor corespunz atoare.
Le-am notat cu asterisc (coloana 5 tabelul 3.1). Pentru micsorarea lui a
8
exist a
8
Cercet ari Operationale Seminarul 1
trei variante:
8
>
>
<
>
>
:
a
(3)
8
= a
(2)
5
+ v
58
= 6 + 2 = 8
a
(3)
8
= a
(2)
6
+ v
86
= 3 + 3 = 6
a
(3)
8
= a
(2)
7
+ v
78
= 6 + 1 = 7
Se alege valoarea cea mai mic a, adic a v
(3)
8
= 6. Celelalte valori a
(3)
j
se mentin
nemodicate (vezi tabelul 3.2 iteratia 3).
Tabelul 3.2
Nr.iter. a
1
a
2
a
3
a
4
a
5
a
6
a
7
a
8
0 0 1 1 1 1 1 1 1
1 0 3 2 3 1 1 1 1
2 0 3 2 3 6 3 6 1
3 0 3 2 3 6 3 6 6
Pasul 4 Se calculeaz a a
(3)
j
a
(3)
i
constatndu-se c a nu mai exist a diferente pentru
care a
(3)
j
a
(3)
i
> v
ij
prin urmare valorile actuale a
(3)
j
nu mai pot micsorate.
Rezult a c a valoarea minim a a drumului care uneste pe x
1
cu x
8
este egal a cu 6 .
Etapa a III-a Pentru stabilirea succesiunii de vrfuri care formeaz a drumul
de valoare minim a se retin vrfurile adiacente pentru care n ultima coloan a a
tabelului 3.1 s-au obtinut:
a
(3)
j
a
(3)
i
= v
ij
(3.5)
Vom parcurge graful de la x
8
spre x
1
. Pentru a ajunge n x
8
drumul trebuie s a
foloseasc a un arc cu vrful nal x
8
. Alegem acele arce cu extremitatea nal a n x
8
pentru care are loc (3.5) a
(3)
8
a
(3)
6
= 3 = v
68
. nseamn a c a drumul foloseste arcul
(x
6
; x
8
). C aut am acum un arc cu vrful nal x
6
pentru care diferentele ultimelor
marcaje este egal a cu valoarea sa: a
(3)
6
a
(3)
3
= v
36
. Prin urmare drumul foloseste
arcul (x
3
; x
6
). Arcul cu vrful nal x
3
pentru care este adev arat a relatia (3.5)
este (x
1
; x
3
) deoarece a
(3)
3
a
(3)
1
= 2 = v
13
. n consecint a drumul de valoare
minim a ntre x
1
si x
8
este: = (x
1
; x
3
; x
6
; x
8
).
9
Determinarea drumului de valoare optim a
1.2 Algoritmul lui Dijkstra
Exemplul 1.2.1 Sa se stabileasca drumul de valoare minima ntre vrfurile x
1
si x
9
din graful de mai jos:
Figura 3.3
Solutie: Algoritmul are urm atorii pasi:
Pasul 1 Atribuim vrfului initial valoarea zero: w(x
1
) = 0:
Pasul 2 Se construieste multimea A format a din vrful initial: A = fx
1
g :
Pasul 3 Se analizeaz a vrfurile din afara multimii A. Exist a vrfuri n care se
poate ajunge prin arce directe din A:Acestea sunt fx
2
; x
5
; x
6
g 6 = ?:
3.1. Se calculeaz a pentru toate acestea:
w(x
2
) = minfw(x
1
) + v (x
1
; x
2
)g = 0 + 4 = 4
w(x
5
) = minfw(x
1
) + v (x
1
; x
5
)g = 0 + 5 = 5
w(x
6
) = minfw(x
1
) + v (x
1
; x
6
)g = 0 + 3 = 3
si se adaug a la multimea A doar cel pentru care se obtine valoarea minim a, adic a
x
6
apoi se trece la pasul 4.
Pasul 4 Se analizeaz a multimea A = fx
1
; x
6
g.
4.1. Deoarece x
9
= 2 A, se reia algoritmul de la pasul 3.
Pasul 3 Se analizeaz a vrfurile din afara multimii A. Exist a vrfuri n care se
poate ajunge prin arce directe din A:Acestea sunt fx
2
; x
5
; x
7
g 6 = ?:
Pentru etapele algoritmului Dijkstra studiaz a Cursul 2
10
Cercet ari Operationale Seminarul 1
3.1. Se calculeaz a pentru toate acestea:
w(x
2
) = minfw(x
1
) + v (x
1
; x
2
) ; w(x
6
) + v (x
6
; x
2
)g
= minf0 + 4; 3 + 8g = 4
w(x
5
) = minfw(x
1
) + v (x
1
; x
5
)g = 0 + 5 = 5
w(x
7
) = minfw(x
6
) + v (x
6
; x
7
)g = 3 + 5 = 8
minfw(x
2
) ; w(x
5
) ; w(x
7
)g = 4
si se adaug a la multimea A doar cel pentru care se obtine valoarea minim a, adic a
x
2
apoi se trece la pasul 4.
Pasul 4 Se analizeaz a multimea A = fx
1
; x
2
; x
6
g.
4.2. Deoarece x
9
= 2 A, se reia algoritmul de la pasul 3.
Pasul 3 Se analizeaz a vrfurile din afara multimii A. Exist a vrfuri n care se
poate ajunge prin arce directe din A:Acestea sunt fx
3
; x
4
; x
5
; x
7
g 6 = ?:
3.1. Se calculeaz a pentru toate acestea:
w(x
3
) = minfw(x
2
) + v (x
2
; x
3
)g = minf4 + 7g = 11
w(x
4
) = minfw(x
2
) + v (x
2
; x
4
)g = minf2 + 9g = 11
w(x
5
) = minfw(x
1
) + v (x
1
; x
5
)g = minf0 + 5g = 5
w(x
7
) = minfw(x
6
) + v (x
6
; x
7
)g = minf3 + 5g = 8
minfw(x
3
) ; w(x
4
) ; w(x
5
) ; w(x
7
)g = 5
si se adaug a la multimea A doar cel pentru care se obtine valoarea minim a, adic a
x
5
apoi se trece la pasul 4.
Pasul 4 Se analizeaz a multimea A = fx
1
; x
2
; x
5
; x
6
g.
4.2. Deoarece x
9
= 2 A, se reia algoritmul de la pasul 3.
Pasul 3 Se analizeaz a vrfurile din afara multimii A. Exist a vrfuri n care se
poate ajunge prin arce directe din A:Acestea sunt fx
3
; x
4
; x
7
; x
8
g 6 = ?:
3.1. Se calculeaz a pentru toate acestea:
w(x
3
) = minfw(x
2
) + v (x
2
; x
3
) ; w(x
5
) + v (x
5
; x
3
)g
= minf4 + 7; 5 + 2g = 7
w(x
4
) = minfw(x
2
) + v (x
2
; x
4
) ; w(x
5
) + v (x
5
; x
4
)g
= minf4 + 9; 5 + 7g = 12
w(x
7
) = minfw(x
5
) + v (x
5
; x
7
) ; w(x
6
) + v (x
6
; x
7
)g
= minf5 + 2; 3 + 5g = 7
w(x
8
) = minfw(x
5
) + v (x
5
; x
8
)g = minf5 + 9g = 14
11
Determinarea drumului de valoare optim a
minfw(x
3
) ; w(x
4
) ; w(x
7
) ; w(x
8
)g = w(x
3
) = w(x
7
) = 7
si se adaug a la multimea A doar cel pentru care se obtine valoarea minim a, adic a
x
3
si x
7
apoi se trece la pasul 4.
Pasul 4 Se analizeaz a multimea A = fx
1
; x
2
; x
3
; x
5
; x
6
; x
7
g.
4.2. Deoarece x
9
= 2 A, se reia algoritmul de la pasul 3.
Pasul 3 Se analizeaz a vrfurile din afara multimii A. Exist a vrfuri n care se
poate ajunge prin arce directe din A:Acestea sunt fx
4
; x
8
; x
9
g 6 = ?:
3.1. Se calculeaz a pentru toate acestea:
w(x
4
) = minfw(x
2
) + v (x
2
; x
4
) ; w(x
3
) + v (x
3
; x
4
) ; w(x
5
) + v (x
5
; x
4
)g
= minf4 + 9; 7 + 3; 5 + 7g = 10
w(x
8
) = minfw(x
5
) + v (x
5
; x
8
) ; w(x
7
) + v (x
7
; x
8
)g
= minf5 + 9; 7 + 6g = 13
w(x
9
) = minfw(x
3
) + v (x
3
; x
9
) ; w(x
7
) + v (x
7
; x
9
)g
= minf7 + 9; 7 + 8g = 15
minfw(x
4
) ; w(x
8
) ; w(x
9
)g = w(x
4
) = 10
si se adaug a la multimea A doar cel pentru care se obtine valoarea minim a, adic a
x
4
si apoi se trece la pasul 4.
Pasul 4 Se analizeaz a multimea A = fx
1
; x
2
; x
3
; x
4
; x
5
; x
6
; x
7
g.
4.2. Deoarece x
9
= 2 A, se reia algoritmul de la pasul 3.
Pasul 3 Se analizeaz a vrfurile din afara multimii A. Exist a vrfuri n care se
poate ajunge prin arce directe din A:Acestea sunt fx
8
; x
9
g 6 = ?:
3.1. Se calculeaz a pentru toate acestea:
w(x
8
) = minfw(x
5
) + v (x
5
; x
8
) ; w(x
7
) + v (x
7
; x
8
)g
= minf5 + 9; 7 + 6g = 13
w(x
9
) = minfw(x
3
) + v (x
3
; x
9
) ; w(x
4
) + v (x
4
; x
9
) ; w(x
7
) + v (x
7
; x
9
)g
= minf7 + 9; 10 + 3; 7 + 8g = 13
minfw(x
8
) ; w(x
9
)g = w(x
8
) = w(x
9
) = 13
si se adaug a la multimea A cele pentru care se obtine valoarea minim a, adic a x
4
si apoi se trece la pasul 4.
Pasul 4 Se analizeaz a multimea A = fx
1
; x
2
; x
3
; x
4
; x
5
; x
6
; x
7
; x
8
; x
9
g.
4.1. Deoarece x
9
2 A atunci valoarea sa reprezint a valoarea drumului optim de
12
Cercet ari Operationale Seminarul 1
la x
1
la x
9
: Pentru g asirea acestui drum se porneste de la vrful nal spre cel
initial si se g asesc vrfurile:
w(x
9
) = w(x
4
) + v (x
4
; x
9
)
w(x
4
) = w(x
3
) + v (x
3
; x
4
)
w(x
3
) = w(x
5
) + v (x
5
; x
3
)
w(x
5
) = w(x
1
) + v (x
1
; x
5
)
Deci vrfurile fx
1
; x
5
; x
3
; x
4
; x
9
g formeaz a drumul c autat.
13
Index
Algoritmul
Dijkstra, 10
Ford, 6
14