Sunteți pe pagina 1din 47

Cercetari operationale

u O.M. Gurza

1Programare liniara

1.1 Algoritmul Simplex


(1947, G. Dantzig) Problema: canonica : Program liniar sub forma se ae maximul func Sa tiei

f (x1, ...xn) =
cu condi tiile: (1.1.1)
n X i=1

n X i=1

cixi + cn+1

ajixi bj , j = 1, m.

(1.1.2) xi 0, i = 1, n. condi n cele ce urmeaza tiile (1.1.1) le vom rescrie sub forma: n X (1.1.3) yj = bj + (aji) (xi) 0
i=1

- 2-

(program optim). Solu tia (x ste solu tia optima 1 , ..., xn ) se nume ineg.(1.1.1),(1.1.2). f (x 1 , ..., xn ) f (x1, ...xn ) , (x1, ...xn ) care verica

pentru doua variabile 1.2 Interpretare geometrica

Exemplul 2.1 Sa se ae minimul, respectiv maximul func tiei f (x, y ) = 3x + 4y cu restric tiile: x + 3y 3 x y 2 (1.2.1) 2x + y 4 x 0, y 0 zona din plan care corespunde la inegalita Pentru rezolvare se deseneaza tile (1.2.1) dreapta paralela cu 3x + 4y = 0 cea mai depa rtata , respectiv cea mai s i se determina de origine care intersecteaza zona: apropiata - 3-

5 4
3x +4

y
0

y-4

3
=0

x+3

y-3= 0

2 1

C
3x +4 y-3 8/3

x-y +

2=

=0

A
1

B
2 3 4
2x -4= +y

-3

-2

-1

O
-1

zona din plan care corespunde la inegalita tile (1.2.2) Pentru rezolvare se deseneaza dreapta paralela cu 3x + 6y = 0 care intersecteaza axa Oy n cel mai s i se determina rtat) de origine s zona: apropiat (depa i intersecteaza - 4-

Exemplul 2.2 Sa se ae minimul, respectiv maximul func tiei f (x, y ) = 3x + 6y cu restric tiile: x + 2y 1 2x + y 4 (1.2.2) x y 1 x 4y 13, 4x + y 23

10

0 15 1= y= 6 + y + x-3x

1 x-4y+

3=0

-1

x+
-5

2y

+1

=0

23=0 4x-y+

2x+ = y-4 0

-10

- 5-

1.2.1 Algoritmul general Algoritmul va consta din 2 faze: ineg. date. o "solu ", adica (x1, ...xn) care verica 1. Se determina tie admisibila ta sita . 2. Se "imbuna te ste" solu tia astfel ga este "pas Gauss-Jordan modicat". Pasul de baza atasa m tabelul simplex: La problema de optimizare liniara

x1 x2 xn 1 y1 = a11 a12 a1n b1 y2 = a21 a22 a2n b2 (1.2.3) . . . . . ... . . . . . ym = am1 am2 amn bm f = c1 c2 cn cn+1 m n acest tabel (x1) cu y1 : Schimba ec 1: n X y1 = (a1i) xi + b1
i=1

a11 6= 0 - 6-

(1.2.4)

x1 =

y1 +

Linia 1 din tabelul modicat:

Pn

i=2 (a1i ) (xi )

+ b1

a11

1 a12 a11 a11

...

b1 a11

nlocuind x1 n expresiile y2, ..., ym avem:

y2 =

....

Pn X n y1 + i=2 (a1i) (xi) + b1 = a21 a2i (xi) + b2 = + a11 i=2 n X a21 a21b1 + a11b2 a21a1i + a2ia11 = (y1) + (xi) + a11 a11 a11 i=2

n X i=1

a2i (xi) + b2 =

- 7-

ym =

P X n y1 + n ( a ) ( x ) + b 1i i 1 i=2 = am1 ami (xi) + bm = + a11 i=2 n X am1 am1b1 + a11bm am1a1i + amia11 = (y1) + (xi) + a11 a11 a11 i=2 ak1 cu . Obs. La linia k adun linia 1 nmul tita a11 Linia 1 devine linia 1 : a11 Coloana 1 devine coloana 1:a11. y1 x2 xn 1 a1n b1 x1 = a1 .... a11 a11 11 a21 a21 a21 21 y2 = a11 a22 a11 a12 a2n a11 a1n b2 a a11 b1 . . . . . ... . . . . . am1 am1 am1 m1 ym = a a a a a b m 2 12 mn 1 n m a11 a11 a11 a11 b1 c1 c1 c1 c1 f = a c a c a c 2 12 n 1 n n +1 a11 a11 a11 b1 11

n X i=1

ami (xi) + bm =

- 8-

Procednd la fel cu x2, x3, ..., xn se ajunge la tabelul: y1 y2 yn 1 x1 = c11 c12 c1n d1 x2 = c21 c22 c2n d2 . . . . . ... . . . . . xn = cn1 cn2 cnn dn (1.2.5) yn+1 = cn+1,1 cn+1,2 cn+1,n dn+1 . . . . . ... . . . . . ym = cm1 cm2 cmn dm f= q1 q2 qn Q toarea problema de optimizare: Acest tabel corespunde la urma n X (1.2.6) max f (y ) = qi (yi) + Q
i=1

cu condi tiile: (1.2.7)

yi =

yi 0, i = 1, n tura cu variabilele ini de: iar lega tiale este data n X xi = cij (yj ) + di, i = 1, n
j =1

n X j =1

cij (yj ) + di 0, i = n + 1, m

- 9-

Exemplul 2.1 Sa se elimine necunoscutele x1, x2 pentru problema: max f (x1, x2) = 3x1 + 6x2 x1 + 2x2 + 1 0 2x1 + x2 4 0 x1 x2 + 1 0 x1 4x2 + 13 0 4x1 + x2 + 23 0.

tor: Tabelul simplex corespunza

x1 x2 1
pivot

y1 = y2 = y3 = y4 = y5 = f=

1 2 1 2 1 4 1 1 1 1 4 13 4 1 23 3 6 0 - 10-

x2 1 2 1 x1 = = 2 1 1 = 1 pivot 2 2 2 (2) = 3 4 + 1 1 = 6 y2 = 1 = 2 1 + 1 1 1 1 y3 = 1 + 1 + 1 = 1 1 (2) = 3 1 1 = 0 1 1 1 y4 = = 1 4 + 13 + ( 2) = 6 1 1 1 1 = 12 4 4 4 ( 2) = 9 y5 = = 4 1 + 23 + 1 1 1 1 = 27 3 3 3 ( 2) = 12 f = = 3 6 + 0 + 1 1 1 1 = 3 y1 y2 1 1 2 1 2 2 x1 = 3 1 = 1 + 3 (2) : 3 1 = 2(1/3) : 3 pivot 2 2 2 1 ( 2) = 3 / 3 / 3 x2 = 1 = 2/3 : 3 1+ : 2 1 3 1 1 y3 = = 1 + ( 1) ( 2) : 1 1 + 6 1 1 (2) = 3 (1/3) : 1 1 1 (2) = 6 (1/3) : 2 y4 = = 1 + ( 2) ( 2) : 3 4 + 24 1 1 4 4 (2) = 9 (1/3) : 3 9 y5 = = 4 + (3) ( 2) : 2 1 + 1 1 3 3 f = 1 = 3 + (4) (2) : 5 6 + 1 (2) = 12 (1/3) : 4 21

y1 1 1 = 1

- 11-

x1 = x2 = y3 = y4 = y5 = f=

y1 y2 1 1 2 3 3 3 1 2 2 f = (5) (y1) + 4 (y2) 21 3 3 2 1 1 6 ( y ) x1 = 1 1 3 3 (y2) + 3 1 ( y ) + 3 2 24 x2 = 2 1 3 3 (y2) 2 2 3 9 5 4 21

Denitia 2.1 {y1, y2, . . . , ym} se nume ste solu tie bazica a problemei (1.2.6)-(1.2.7) daca este solu tie pentru sistemul de inegalita ti (1.2.7) (solu tie admisibila ) s i n din componente sunt nule. tie bazica atunci cele n variabile nule se Denitia 2.2 Daca {y1, y2, . . . , ym} este solu numesc variabile nebazice, iar celelalte variabile bazice. tie bazica s i exista variabile bazice nule, Denitia 2.3 Daca {y1, y2, . . . , ym} este solu atunci solu tia bazica se nume ste degenerata , si nedegenerata n caz contrar. de urma toarea teorema : Importan ta solu tiilor bazice este data Teorema 2.1 Problema de programare liniara (1.2.6)-(1.2.7) are solu tie optima daca - 12-

s i numai daca are solu tie optima bazica .

y1 y2 yn+1 = cn+1,1 cn+1,2 . . . . . . ym = cm1 cm2 f= q1 q2

yn 1 cn+1,n dn+1 . . ... . . cmn dm qn Q

Lema 2.1 Daca n tabelul (1.2.5) di 0, i = n + 1, m atunci o solu tie bazica este data de: (1.2.8) yi = 0, i = 1, n yi = di, i = n + 1, m. ca daca yi = 0, i = 1, n atunci yi = Demonstra tie: Din tabelul (1.2.5) rezulta ca (vezi deni i conform ipotezei di 0, i = n + 1, m rezulta tia 2.1 di, i = n + 1, m s . ) {y1, y2, . . . , ym} este solu tie bazica Lema 2.2 Daca n tabelul (1.2.5) exista dr < 0 (n + 1 r m) s i cri 0, i = 1, n atunci nu exista {y1, y2, . . . , ym} care sa verice inegalita tile (1.2.7). (1.2.7). Atunci exista {y1, y2, . . . , ym} care verica Demonstra tie: Presupunem ca - 13-

yi 0, i = 1, n s i din yr =

n X j =1

yr < 0, contradic crj (yj ) + dr rezulta tie cu yr 0.

Lema 2.3 Daca n tabelul (1.2.5) exista dr < 0 (n + 1 r m) s i exista 1sn asfel nct crs < 0 atunci efectund un pas Gauss Jordan modicat cu pivotul ci0s ales dupa regula: di0 di (1.2.9) 0< = min >0 ci0s n+1im cis (adica n tabelul (1.2.5) se schimba ys cu yi0 ) avem (notnd elementele noului tabel nebazica , deci cu accent) pentru i0 6= r d0r > dr iar pentru i0 = r yr este variabila yr = 0 > dr . cel pu Demonstra tie: Conform ipotezei n coloana s exista tin un indice i astfel di i0 6= r atunci, conform Gaussnct c > 0. Alegem i0 conform regulii (1.2.9). Daca is Jordan : di0 0 dr = dr crs > dr . ci0s Teorema 2.2 Pentru orice problema de programare liniara dupa un numa r nit de pa si se ajunge la o solu tie admisibila bazica sau se ajunge la concluzia ca problema nu are solu tie. din cele trei leme precedente. Demonstra tie: Rezulta - 14-

rezolva prima faza . Teorema precedenta m tot de la tabelul (1.2.5) n care presupunem ca ultima Pentru optimizare pleca are doar numere pozitive (adica de la o solu ). coloana tie bazica tia optima este yi = 0, i = 1, n. Lema 2.4 Daca n (1.2.5) qi 0, i = 1, n atunci solu Pn Demonstra tie: Avem f = k=1 qk yk + Q Q pentru yk 0, k = 1, n, egalitatea avnd loc doar pentru yk = 0, k = 1, n. Lema 2.5 Daca exista qs < 0 , 1 s n s i crs 0, n + 1 r m atunci sup f (x1, ..., xn) = . Demonstra tie: Alegem ys = t > 0, yk = 0, k 6= s, k = 1, n avem yi = cist + di 0, i = n + 1, m, t > 0. Dar f = qst + Q cnd t . Lema 2.6 Daca exista qs < 0 , 1 s n s i exista cis > 0, n + 1 i m atunci alegnd un element pivot din coloana s dupa regula (1.2.9) se ob tine efectund un pas G-J modicat un nou tabel simplex (notnd elementele noului tabel cu accent) cu Q0 > Q. Demonstra tie: Alegnd elementul pivot ca n enun t avem Q0 = cii0s qs + Q > Q. 0 : Din cele trei leme rezulta Teorema 2.3 Oricare ar problema de progamare liniara cu solu tii admisibile, dupa - 15d

un numa r nit de pa si G-J modica ti se ob tine sau solu tia optima sau concluzia ca maximul este innit. Exemplul 2.2 Continuare la exemplul 2.1.

y1
pivot

y2

y3 = 1 1/1 6/1 y4 = 3/1 2 + (3/1) (1) = 1 24 + (3/1) 6 = 6 y5 = (2) /1 = 2 3 + ( (2) /1) (1) = 1 9 + ( (2) /1) 6 = 21 f = (5) /1 = 5 4 + ( (5) /1) (1) = 1 21 + (5) /1 6 = 9 f = (5) (y1) + 4 (y2) 21 2 ( y ) x1 = 1 1 3 3 (y2 ) + 3 1 ( y ) + x2 = 2 1 3 3 (y2 ) 2 q1 = 5 < 0 d1 6 d2 24 = ; = c11 1 c21 3 aleg i0 = 1 : pivot:c11 y3 y2 1 y3 y4 1 y1 = 1 1 6 y1 = 1 + 1 (3) = 2 1 6 + 1 6 = 12
pivot pivot

y4 = 3 1 6 y2 = 3 1 6 y5 = 2 1 21 y5 = 2 + (1) (3) = 5 1 21 1 6 = 15 f = 5 1 9 f = 5 + 1 (3) = 2 1 9 + 1 6 = 15 fmax = 15 - 16-

1
2 1 2 x1 = 1 3 (y1) 3 (y2 ) + 3 = 3 (12) 3 (6) + 3 = 3 1 2 1 ( y ) + ( y ) 2 = ( 12) + x2 = 2 1 2 3 3 3 3 (6) 2 = 4

Remarca 2.1 La pas G-J modicat cu pivot crs se fac urma toarele modica ri: elementele din capul de tabel de pe coloana s s i linia r se schimba intre ele, cu schimbare de semn. (adica ys, yr yr , ys. elementele de pe coloana s se nlocuiesc cu ele/pivot s i cu semn schimbat. Elementele de pe linia pivot se mpart cu pivotul, iar . Celelalte elemente din noul tabel se ob tin din adunarea n locul pivotului se pune c1 rs la vechiul element a (elementului de pe coloana corespunza toare s i linia pivotului din vechiul tabel)*elementul de pe linia lui s i coloana pivotului din noul tabel.

Exemplu:

- 17-

y1 = y2 = y3 = f1 = x2 = y2 = y3 = f1 = x2 = y2 =

y3 = 17 f 1 = 4 7

x3 1 7 84 40 84 42 10 40 min 5 , 28 , 7 = 3 deci pivotul este (28) 6 42 1 0 x1 y1 x3 1 12 3 1 1 84 = 3 28 7 28 4 28 = 41 5 35 5 8 + (12) 5 40 + ( 84) = 28 7 28 4 28 = 25 7 17 7 20 + (12) 7 42 + ( 84) = 17 28 28 4 28 = 21 4 1 3 1 = 1 + (12) 1 0 + ( 84) 28 7 28 4 28 = 3 x1 y1 x3 1 3 1 1 3 7 28 4 n o 41 5 35 7 28 4 25 min 25 , 21 = 84 deci pivotul e 7 x1 12 8 20 1 x2 28 5 7 1
pivot 7 28 1 28

17 4 21 3 3 4

5 7 28 28

28

- 18-

(17) / (7/28) = 68 28 = 4 17 7 1 1 13 4 1 f 1 = 7 + (17) 7 = 7 728 = 1 7 7 y1 = x1 y3 x3 1 6 x2 = 20 7 7 7 y2 = 44 7 y1 = 68 13 f1 7


pivot 5 7

x1 y3 x3 1 1 1 20 1 3 1 6 28 x2 = 7 + (17) 7 = 7 7 = 7 7 3 + (21) 7 = 6 28 5 44 528 5 41 5 40 y2 = 7 + (17) 7 = 7 = 7 7 25 + (21) 7 = 10 7


28

1 6

28

(21) / (7/28) = 84 1 33 3 + (12) 7 = 7

40 7 10 4 17 84 1 33 1 7 7 7 x1 y2 x3 1 44 8 1 1 x2 = 20 + ( 1 / 5) = / (5 / 7) = 2 6 + (10) (1/5) = 8 7 7 5 7 5 pivot 5 5 44 5 44 7 5 14 y3 = 1/ 7 : 5 8 10/ 7/ 7 = 44 7 = 28 164 28 28 y1 = 68 + 4 / (5 / 7) = 49 84 + ( 10) = 7 5 5 5 5 = 140 13 44 3 1 33 1 47 1 f1 1 1 7 + 7 5 = 5 7 / (5/7) = 5 7 + (10) 5 = 7


- 19-

x1 y2 x3 1 1 x2 = 8 2 8 5 5 7 y3 = 44 8 14 5 5 28 y1 = 164 49 140 5 5 3 1 47 f1 1 5 5 7 :x1 = 0, x2 = 28, x3 = 0, y1 = 10, y2 = 10, y3 = 0. solu tie bazica 7 pivotul: min {28/68, 10/ (20/7) , 10/ (44/7)} = 17 deci e 68 x2 y3 x3 1 1 x1 = 1/68 = 68 4 17 28 20 5 3 1 5 150 = y2 = 7 /68 = 119 10 + 28 119 7 17 126 119 44 11 41 51 11 = 17 y1 = 7 /68 = 119 119 7 10 + 28 119 13 13 4 17 13 55 = f 1 = 7 /68 = 476 4 + 28 119 28 476 17
Exemplul 2.3 - 20-

x1 x2 x3
pivot

y1 = 2 y2 = 2 f 1 = 1 x1 x2 = 2 x3 = 0 f1 = 3 x1 x2 = 2 x3 = f1 =

2 8 5 12 y2 = 3 0 f 1 = y1 1 + (1) (2/3) = 5 3 1 1/ (3) = 3 2 + (1) (1/3) = 7 3 y1 y2 1 2 16 5 3 3 3


pivot 1 3 7 3

1 1 2

x1 y1 x3 1 x2 = 2 1 2 8
pivot

1 3 2 1 y2 2/ (3) = 2 3 1 1 3 = 3 1/ (3) = 1 3

0 3

4 16 1 8 + (4) (2/3) = 16 3 4 4/ (3) = 3 16 + (4) (1/3) = 44 3

x3 = f1 =

4 0 1 3 3 1 44 3 3 3 x1 y1 1 5 / x2 = 2 3 3 =5

0 3

7 3

pivot 1 1 / 3

: 3 / 1 3 =7

y2 2 1 + 5 3 3 = 1 1 /3)= 1 3 /(1 1 1 3 + 7 3 = 2
- 21-

1 16 3 + 5 4/3 = 12 (1/3) = 4 44 3 + 7 4/3 = 24


4 3/

1.3 Problema de transport


cu cij costul transSe dau m centre de produc tie s i n centre de desfacere. Se noteaza portului unei unita ti de produs de la c.p. i la c. d. j , cu xij cantitatea de produs de la c.p. i la c. d. j , cu ai cantitatea produsa la c.p. i, cu bj cantitatea transportata la c.d. j. Se cere sa se determine xij astfel nct costul total al transportului necesara e minim. sa
j =n i =m X i=1 j =1

(1.3.1) cu condi tiile: (1.3.2)

min

cij xij = f (X )

Pn =1 xij = ai , i = 1, m Pjm , j = 1, n i=1 xij = bj Pi=m,j =n Pm Pn xij i=1 ai = j =1 bj i,j =1 xij 0

Exemplul 3.1 Exemplul 3.2 Exemplul 3.3 - 22-

- 23-

Remarca 3.1 Conditiile (1.3.2) sunt un sistem de n+m1 ecua tii cu nm necunoscute, care are o innitate de solu tii. Primul pas va consta n determinarea unei solu tii de pornire. Denitia 3.1 O solu tie a (1.3.2) se nume ste solu tie bazica daca are cel mult n + m 1 variabile nenule; nedegenerata daca are exact n + m 1 variabile nenule, degenerata n caz contrar. 1.3.1 Metoda col tului de N-V. (de aare a unei solu tii bazice) x11 ... x11 ... x1n ... . . . . X = ... . . ... ; X = xm1 ... xm1 ... xmn b1 ... x11 = min{a1, b1}. La ex. 1 x11 = 100. - 24-

x1n ... xmn bn

a1 ... am 0

x11 = a1 atunci x1j = 0, j = 2, n. b1 := b1 a1. "Tai" linia 1 din X . Daca x11 = b1 atunci xi1 = 0, i = 2, m.a1 := a1 b1. Tai coloana 1 din X . Daca m pna elimina m toate liniile s Continua i coloanele lui X. Pe ex. 1: x11 = 100, x12 = x13 = x14 = 0. b1 := 125 100 = 25. x21 x22 x23 x24 180 X = x31 x32 x33 x34 220 25 135 105 135 500 x21 = 25, x31 = 0, 180 := 180 25 x22 x23 x24 155 X = x32 x33 x34 220 135 105 135 500 135, x32 = 0; 155 x22 = := 155 135 x23 x24 20 X = x33 x34 220 105 135 500 x23 = 20; x24 = 0; 105 := 105 20. x33 x34 220 X= x33 = 85; x34 = 135 85 135 500
2 100 0 3 0 4 25 0 1 135 1 0 0 4 0 0 125 0 0 135 0 0 0 0 4 0 2 20 3 85 0 105 0 0 0 0 1 0 0 5 0 0 4 135 0 0 135 0 0 100 0 180 0 220 0 1270 0 0 0 0

- 25-

1.4 Optimizarea solu tiei bazice


1.4.1 Metoda poten tialelor Denitia 4.1 Avnd o solu tie bazica X se nume ste lan t de celule un s ir de celule cu proprieta tile ca nu exista 3 celule pe aceea si linie sau coloana s i 2 celule succesive sunt n aceea si linie sau coloana . Exemplul 4.1 x12, x13, x23. Denitia 4.2 Se nume ste ciclu un lan t la care indicele de linie sau de coloana de la primul el. s i ultimul coincid. Exemplul 4.2 x12, x13, x23, x22 Denitia 4.3 O solu tie bazica se nume ste aciclica daca nu exista un ciclu cu el. nenule. se cauta printre sol. bazice aciclice. Ideea : Solu tia optima - 26-

Denitia 4.4 Solu tia bazica X se nume ste sol. poten tiala daca exista numerele ui, vj astfel nct: ui + vj cij egalitatea avnd loc pentru indicii i, j pentru care xij > 0. i = 1, m, j = 1, n Teorema 4.1 Solu tia bazica X este sol. optima daca s i numai daca este poten tiala . daca P atunci X este sol. optima . Fie Demonstra tie: dem. ca X este poten tiala n 0 x =1 ij = ai , i = 1, m Pjm x0ij = bj , j = 1, n Pi=m,j =n i =1 0 0 Pi=m,j =n Pn X o solu tie a sistemului Pm c x ij ij i =1 ,j =1 xij i=1 ai = j =1 bj i,j =1

Pi=m,j =n i=1,j =1 cij xij Pi=m,j =n Pi=m,j =n Pi=m,j =n Pi=m,j =n 0 0 0 0 c x ( u + v ) x = u x + v x ij i j i j ij ij ij ij i =1 ,j =1 i =1 ,j =1 i =1 ,j =1 i =1 ,j =1 Pn Pm 0 Pm Pn Pm Pn 0 = i=1 ui j =1 xij + j =1 vj i=1 xij = i=1 uiai + j =1 vj bj = Pn Pm Pm Pn Pi=m,j =n = i=1 ui j =1 xij + j =1 vj i=1 xij = i=1,j =1 (ui + vj ) xij = f (X )
. determina m uis Fie X o sol. bazica i vj din: ui + vj = cij m pentru ij pentru care xij > 0.(n + m 1 ec., n + m nec..u1 = 0.) calcula ij = cij + ui + vj - 27-

x0ij 0

ij < 0. Daca exista ij astfel inct ij > 0 atunci X nu e optima . aleg i0j0 : daca max ij = i0j0 un ciclu pornind de la i0j0 s el Se formeaza i elem. nenule din X. se numeroteaza r par ciclului pornind de la xi0j0 n sens trig. Se alege cel mai mic element cu numa solu sca znd din ele. cu numa r par pe e s xi0j 0 = e. Se construie ste o noua tie bazica i sol. bazica X. adunnd pe e la cele cu nr. impar. Rezulta Exemplul 4.3

O sol. bazica x11 = 100, x21 = 25, x22 = 135, x23 = 20; x33 = 85; x34 = 135

u1 + v1 u2 + v1 u2 + v2 u2 + v3 u3 + v3 u3 + v4

= 2, u1 = 0 = 4 = 1 = 2 = 3 = 4 - 28-

v1 = 2, u2 = 2, v2 = 1, v3 = 0, u3 = 3, v4 = 1.

12 = 3 + 0 1 = 4; 13 = 4 + 0 + 0 = 4; 14 = 1 + 0 + 1 = 0; 24 = 5 + 2 + 1 = 2; 31 = 1 + 3 + 2 = 4?; 32 = 4 + 3 1 = 2. = 31 i0 j0 100 0 0 0 X= 254 135 203 0 1 2 0 0 85 135 100 0 0 0 X = 0 135 45 0 25 0 60 135


2 100 0 3 0 4 25 0 1 135 1 0 4 4 0 0 125 2 0 135 4 0 2 1 4 0 2 20 3 85 0 105 4 0 0 0 1 0 5 0 4 135 0 135 0 2 0 1 0 100 0 180 0 220 0 1270 0 2 3 0

- 29-

2 100 0 3 0 4 25 0 1 135 1 0 0 4 0 0 125 0 0 135 2 100 0 3 0 4 0 0 1 135 1 25 0 4 0 0 125 0 0 135

0 0 0 0 0 0 0 0

4 0 2 20 3 85 0 105 4 0 2 45 3 60 0 105

0 0 0 0 0 0 0 0

1 0 0 5 0 0 4 135 0 0 135 0 1 0 0 5 0 0 4 135 0 0 135 0

0 100 0 180 0 220 0 1270 0 100 0 180 0 220 0 1170

0 0 0 0 0 0 0 0

v1 = 0, u1 + v1 = 2 u2 + v2 = 1; u2 + v3 = 2 u3 + v1 = 1; u3 + v3 = 3; u3 + v4 = 4
2 100 4 0 1 25 0 125 0 4 0 2 3 0 1 135 4 0 0 135 0 0 2 3 4 0 2 45 3 60 0 105 0 0 0 4 1 0 5 0 4 135 0 135 4 2 0 5 0 100 0 180 0 220 0 1170 0 2 1 0

- 30-

2 100 0 3 0 4 0 0 1 135 1 25 0 4 0 0 125 0 0 135 2 0 0 4 0 0 1 125 0 0 125 0

0 0 0 0

4 0 2 45 3 60 0 105

0 0 0 0 0 0 0 0

1 0 0 5 0 0 4 135 0 0 135 0

0 100 0 180 0 220 0 1170

0 0 0 0 0 0 0 0

3 0 0 4 0 1 135 0 2 45 4 0 0 3 60 0 135 0 0 105

1 100 0 0 100 5 0 0 0 180 4 35 0 0 220 0 135 0 0 770

2 0 4 0 1 125 0 125

4 4 0 2

3 0 1 135 4 0 0 135

4 0 2 1

4 0 2 45 3 60 0 105

4 0 0 0

1 100 5 0 4 35 0 135

0 2 0 1

0 0 0 0

100 180 220 770

0 2 3 0

- 31-

2Grafe
2.1 Grafe neorientate
Denitia 1.1 Se nume ste graf neorientat un cuplu G = (V, E ) unde V este o mul time nita de vrfuri, iar E o mul time de perechi neordonate de el. din V numite muchii. Remarca 1.1 Vom nota vrfurile cu vi sau cu i, iar muchiile cu ej sau cu (vi, vj ) sau (i, j ) . Exemplul 1.1
5

- 32-

V = {1, 2, 3, 4, 5}, E = {(1, 2) , (2, 3) , (3, 4) , (2, 4) , (3, 5) , (5, 1) , (3, 3)}
Denitia 1.2 Daca G = (V, E ) este un graf atunci nr. el. lui V se nume ste ordinul grafului, iar nr. el. lui E dimensiunea grafului G. Denitia 1.3 O muchie (i, i) se nume ste bucla . Denitia 1.4 Un graf se nume ste simplu daca n-are bucle. Denitia 1.5 Se nume ste lan t ntr-un graf o succcesiune de muchii adiacente. Denitia 1.6 2 muchii sunt adiacente daca au un vrf comun. Denitia 1.7 O muchie este incidenta cu un vrf daca vrful face parte din perechea care def. muchia. Denitia 1.8 2 vrfuri sunt adiacente daca exista o muchie formata din perechea celor 2 v. - 33-

Denitia 1.9 Se nume ste gradul unui vrf numa rul muchiilor incidente cu vrful respectiv. Exemplul 1.2 grad(3) = 5. Teorema 1.1 Daca dimensiunea grafului este m atunci suma gradelor vrfurilor este 2m. Demonstra tie: Fiecare muchie contribuie cu 2 la gradele vrfurilor. Denitia 1.10 Se nume ste ciclu ntr-un graf un lan t la care ultimul vrf coincide cu primul.(!!). Denitia 1.11 Se nume ste lan t (ciclu) simplu un lan t (ciclu) care nu con tine de doua ori aceea si muchie. Denitia 1.12 Se nume ste lan t (ciclu) eulerian un lan t (ciclu) simplu care con tine toate muchiile. Denitia 1.13 Se nume ste lan t (ciclu) hamiltonian un lan t (ciclu) care con tine toate vrfurile o singura data . - 34-

Exemplul 1.3 Este posibil ca un grup de 11 persoane ecare sa strnga mna la exact 5 persoane?NU: suma gradelor este 55. Exemplul 1.4 Problema podurilor din Knigsberg: sa se ga seasca un traseu care sa permita trecerea o singura data pe ecare pod s i sa se ajunga la punctul de plecare.

Atasam un "graf" Vrfuri: 1, (sud), 2(est), 3(nord), 4(insula) ; Muchii (1, 2) , (1, 4) , (1, 4), (2, (2, 3), (3, 4), (3, 4).Gradele vrfurilor: 3, 3, 3, 5. Teorema 1.2 Intr-un graf exista un circuit eulerian daca s i numai daca toate gradele vrfurilor sunt pare. - 35-

Teorema 1.3 Intr-un graf exista un lan t eulerian daca s i numai daca toate gradele vrfurilor sunt pare cu excep tia a exact doua . Exemplul 1.5 Exista un graf simplu cu 13 vrfuri, 31 muchii, 4 vrfuri de grad 1 s i 7 vrfuri de grad 4? Total grade vrfuri:2 31 = 62.T otal grade 2 vrfuri: 62 4 28 = 30. Grad minim la un vrf e 15 > 12. NU. Exemplul 1.6 Sa se construisca un graf cu 5 vrfuri, cu gradele vrfurilor: 2, 3, 5, 2, 2.
5

2.2 Algoritmi
- 36-

2.2.1 Deni tii s i nota tii ste subgraf al lui G graful G1 = (V1, E1) cu Denitia 2.1 G = (V, E ) graf, se nume V1 V, E1 E. Denitia 2.2 Graful G = (V, E ) se nume ste conex daca ntre oricare doua vrfuri exista un lan t. Denitia 2.3 Un subgraf al unui graf se nume ste arbore daca este simplu, conex s i fa ra cicluri. Denitia 2.4 Se nume ste arbore de acoperire a unui graf conex un arbore care con tine toate vrfurile. Denitia 2.5 Se nume ste frunza ntr-un arbore un vrf de grad 1. Denitia 2.6 Daca G1 este subgraf al grafului G se nume ste muchie frontiera o muchie din G care are un vrf n G1 si unul n G\G1. - 37-

2.2.2 Algoritmi de generare arbore de acoperire utare n adncime 2.2.1 Ca vrfurile cu eticheta notata df _numa de la ultimul Ideea: se eticheteaza r s i se pleaca vrf etichetat. arborele, cu FT mul ale lui T . nota tii: cu T se noteaza timea muchiilor frontiera i un vrf r. Date de intrare n algoritm: un graf G conex s Date de ie sire din algoritm: un arbore de acoperire T s i o etichetare de df _numa data r. Ini tializ ari: T = ({r}, ), df _numa r(r) := [0], i := 1 (i este un contor rare). de numa Pasul de baz a al algoritmului: ct timp T nu arbore de acoperire: FT ; 1. Se actualizeaza l = {x, y } care are un vrf x cu df _numa r(x) maxim; 2. Se alege muchia frontiera la T vrful y s i muchia l ; 3. Se adauga r(y ) := [i]; i := i + 1. 4. df _numa utare n la 2.2.2 Ca time vrfurile cu eticheta notata et s de la vrful cu eticheta Idee: se eticheteaza i se pleaca posibila . cea ami mica arborele, cu FT mul ale lui T . nota tii: cu T se noteaza timea muchiilor frontiera - 38-

Date de intrare n algoritm: un graf G conex s i un vrf r. Date de ie sire din algoritm: un arbore de acoperire T s i o etichetare de et. data Ini tializ ari: T = ({r}, ), et(r) := [0], i := 1 (i este un contor de rare). numa Pasul de baz a al algoritmului: ct timp T nu arbore de acoperire: FT ; 1. Se actualizeaza l = {x, y } care are un vrf x cu et(x) minim; 2. Se alege muchia frontiera la T vrful y s i muchia l ; 3. Se adauga 4. et(y ) := [i]; i := i + 1 se determine un arbore de acoperire untiliznd cei doi algoritmi, Exemplu: Sa torul graf: pentru urma

- 39-

2;

Rezolvare: T = {{a} , } ; df _numa r(a) := [0], i := 1 r(b) := 1; i = FT = {[ab] , [af ]} ;aleg l = [ab] , T = {{a, b} , {[ab]}} ; df _numa

r(c) := FT = {[af ] , [bf ] , [bg ] , [bc]} aleg l = [bc] , T = {{a, b, c} , {[ab] , [bc]}} ; df _numa 2; i = 3; FT = {[af ] , [bf ] , [bg ] , [cd] , [ce] , [cg ]} ; aleg l = [cd] r(d) := 3; i = 4 T = {{a, b, c, d} , {[ab] , [bc] , [cd]}} ; df _numa FT = {[af ] , [bf ] , [bg ] , [ce] , [cg ] , [de]} ; aleg l = [de] T = {{a, b, c, d, e} , {[ab] , [bc] , [cd] , [de]}} ; df _numa r(e) := 4; i = 5 FT = {[af ] , [bf ] , [bg ] , [cg ] , [eg ] , [ef ]} ; aleg l = [ef ] r(f ) := 5; i = 6 T = {{a, b, c, d, e, f } , {[ab] , [bc] , [cd] , [de] , [ef ]}} ; df _numa FT = {[bg ] , [cg ] , [eg ] , [f g ]} ; aleg l = [f g ] r(g ) := T = {{a, b, c, d, e, f, g } , {[ab] , [bc] , [cd] , [de] , [ef ] , [f g ]}} ; df _numa 6; i = 7 gata. Am ob tinut:

b(1) a(0) f(5)


- 40-

c(2) d(3) e(4)

g(6)

utare n la Ca time: T = {{a} , } ; et(a) := [0], i := 1 FT = {[ab] , [af ]} ;aleg l = [ab] , T = {{a, b} , {[ab]}} ; et(b) := 1; i = 2; FT = {[af ] , [bf ] , [bg ] , [bc]} ; aleg l = [af ]; T = {{a, b, f } , {[ab] , [af ]}} ; et(f ) := 2; i = 3; FT = {[bc] , [bg ] , [f g ] , [f e]} ; aleg: l = [bc] ; T = {{a, b, f, c} , {[ab] , [af ] , [bc]}} ; et(c) := 3; i = 4; FT = {[bg ] , [f g ] , [f e] , [cd] , [ce] , [cg ]} ; aleg l = [bg ] T = {{a, b, f, c, g } , {[ab] , [af ] , [bc] , [bg ]}} ; et(g ) := 4; i = 5; FT = {[f e] , [ce] , [cd] , [ge]} ; aleg l = [f e] T = {{a, b, f, c, g, e} , {[ab] , [af ] , [bc] , [bg] , [f e]}} ; et(e) := 5; i = 6; FT = {[ed] , [cd]} ; aleg: l = [cd] T = {{a, b, f, c, g, e, d} , {[ab] , [af ] , [bc] , [bg ] , [f e] , [cd]}} ; et(d) := 6; i = 7; gata:

- 41-

b(1) a(0) f(2)

c(3) d(6) e(5)

g(4)

n grafe ponderate 2.2.3 Algoritmi de generare arbore de lungime minima Denitia 2.7 Se nume ste graf ponderat un graf G = (V, E ) , pentru care s-a denit o func tie (pondere) : E R+, care ataseaza ecarei muchii e E ponderea (e) . 2.3.1 Algoritmul lui Prim Date de intrare n algoritm: un graf G conex cu ponderi s i un vrf r. Date de ie sire din algoritm: un arbore de acoperire T de cea mai pondere s de et. mica i o etichetare a vrfurilor data Ini tializ ari: T = ({r}, ), et(r) := [0], i := 1 (i este un contor de rare). numa Pasul de baz a al algoritmului: ct timp T nu arbore de acoperire: FT ; 1. Se actualizeaza (x T ); l = {x, y } cu ponderea cea mai mica 2. Se alege muchia frontiera - 42-

la T vrful y s 3. Se adauga i muchia l ; 4. et(y ) := [i]; i := i + 1. Teorema 2.1 Arborele aat cu algoritmul lui Prim este arbore de acoperire de pondere (lungime) minima . se ae prin algoritmul de mai sus arbori de pondere minima n grafele Exemple: Sa de mai jos:

Rezolvare: T = {{a}, } ; et (a) = 0; i = 1; FT = {[ab] , [ae] , [ad] , [ac]} aleg: l = [ad] T = {{a, d}, [ad]} , et (d) = 1 (i) , i = 2; FT = {[ab] , [ae] , [ac] , [dc] , [de] , [db]} ; aleg: l = [db] ; T = {{a, d, b}, {[ad] , [db]} , et (b) = 2 (i) , i = 3; - 43-

FT = {[ae] , [ac] , [dc] , [de] , [bc]} ; aleg: l = [ae] ; T = {{a, d, b, e}, {[ad] , [db] , [ae]} , et (e) = 3 (i) , i = 4; FT = {[ac] , [dc] , [bc]} ; aleg l = [ac] T = {{a, d, b, e, c}, {[ad] , [db] , [ae] , [ac]} , et (c) = 4 (i) , i = 5 gata:

a(0) 6 4 1 e(3)

b(2)

2 c(4) d(1)

2.3.2 Algoritmul lui Dijsktra nota tii: L (i, j ) cel mai scurt lan t ntre nodurile i s i j ; distan ta ntre nodurile i s i j : d (i, j ) = suma ponderilor muchiilor din L (i, j ) . Date de intrare n algoritm: un graf G conex cu ponderi p s i un vrf r. Date de ie sire din algoritm: un arbore de acoperire T s i distan tele d (r, x) . Ini tializ ari: T = ({r}, ), et(r) = 0 d(r) := 0, i := 1 (i este un contor rare). de numa Pasul de baz a al algoritmului: ct timp T nu arbore de acoperire: FT ; 1. Se actualizeaza - 44-

l = {x, y } cu proprietatea (x T ) ca d (r, x) + p (l) e 2. Se alege muchia frontiera minima la T vrful y s i muchia l ; 3. Se adauga 4. et(y ) := [i]; i := i + 1.d (r, i) = d (r, x) + p (l) se ae cu algoritmul lui Dijsktra arborele T in grafele de mai jos, Exemple: Sa pornind de la nodurile a, respectiv b:

Rezolvare T = {{a} , } , d (a, a) = 0, et (a) = 0, i = 1 FT = {[ab] , [ae] , [ad] , [ac]} aleg: l = [ad] T = {{a, d}, [ad]} , et (d) = 1 (i) , i = 2; d (a, 1) = 1 = 0 + lung (ad) FT = {[ab] , [ae] , [ac] , [dc] , [de] , [db]} ; d(a, a) + lung (ab) = 3 d(a, a) + lung (ae) = 4 d(a, a) + lung (ac) = 6 d(a, 1) + lung (dc) = 8 d(a, 1) + lung (de) = 6 - 45-

d(a, 1) + lung (db) = 7 aleg: l = [ab] ; T = {{a, d, b}, {[ad] , [ab]} , et (b) = 2 (i) , i = 3; d (a, 2 (b)) = 3 FT = {[ac] , [ae] , [bc] , [de] , [dc]} d(a, a) + lung (ac) = 6 d(a, a) + lung (ae) = 4 d(a, 2 (b)) + lung (bc) = 9 d(a, 1 (d)) + lung (de) = 6 d(a, 1 (d)) + lung (dc) = 8 aleg l = [ae] T = {{a, d, b, e} , {[ad] , [ab] , [ae]}} , et (e) = 3, i = 4; d (a, 3 (e)) = 4; FT = {[ac] , [bc] , [dc]} d(a, a) + lung (ac) = 6 d(a, 2 (b)) + lung (bc) = 9 d(a, 1 (d)) + lung (dc) = 8 aleg l = [ac] T = {{a, d, b, e, c} , {[ad] , [ab] , [ae] , [ac]}} , et (c) = 4; d (a, 4 (e)) = 6 gata:

- 46-

a(0) 3 6 4 1 e(3) d(1)

b(2) c(4)

- 47-

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