Metoda program ării dinamice

8
Metoda programării dinamice Prof. Deac Paula - Cristina

description

Metoda program ării dinamice. Prof. Deac Paula - Cristina. Descrierea metodei:. - PowerPoint PPT Presentation

Transcript of Metoda program ării dinamice

Page 1: Metoda  program ării dinamice

Metoda programării dinamice

Prof. Deac Paula - Cristina

Page 2: Metoda  program ării dinamice

Descrierea metodei:Metoda programării dinamice este o tehnică, care conduce la

o soluţie optimă, într-un timp de calcul de ordin polinomial. Cu toate acestea, această metodă nu se poate aplica la toate problemele, ci numai acelora care îndeplinesc anumite condiţii.

Metoda programării dinamice este aplicabilă problemelor de optim în care soluţia este privită ca rezultat al unui şir de decizii d1, d2, ..., dn. Fiecare decizie depinde de deciziile deja luate şi nu este unic determinată.

Page 3: Metoda  program ării dinamice

Pentru aplicarea metodei este necesară satisfacerea principiului optimalităţii:→ dacă d1,d2,...,dn este un şir optim de decizii care

transformă starea iniţială S0 în starea finală Sn trecând prin stările intermediare S1...Sn-1, atunci şirul de decizii d2,...,dn este optim pentru S1 ca stare iniţială şi Sn ca stare finlă.

→ General: Pentru orice şir de decizii d1,d2,...,dn pentru perechea (S0,Sn) şi pentru , să rezulte că d1,d2,...,di este un şir optim pentru perechea (S0,Si) sau di+1,...,dn este şir optim pentru perechea (Si, Sn). Mai general, principiul cere ca ambele şiruri să fie optime.

Page 4: Metoda  program ării dinamice

ClasificareDupă ce principiul optimalităţii a fost verificat, metoda

constă în a scrie relaţiile de recurenţă corespunzătoare şi a le rezolva.

Aceste relaţii sunt de 2 tipuri:Fiecare decizie di depinde de di+1,...,dn, aici aplicându-se

metoda înainte, iar deciziile se iau în ordinea dn, dn-1,..., d1.

Fiecare decizie di depinde de d1,d2...,di-1, aici aplicându-se metoda înapoi, iar deciziile se iau în ordinea d1, d2, ... , dn.

Page 5: Metoda  program ării dinamice

OBS: În programarea dinamică se rezolvă problema combinând soluţiile problemelor ca şi la Divide et Impera. Când subproblemele conţin subprobleme comune, în locul metodei DEI este mai avantajos să folosim metoda programării dinamice.

function c (n,k:integer): integer;Begin IF (k=0) or (k=n) THEN c := 1

ELSE c := c(n-1,k)+ c(n-1,k-1);end;

111 kn

kn

kn CCCExemplu:

Page 6: Metoda  program ării dinamice

Folosind această metodă, o mare parte din valori sunt calculate în mod

repetat. De exemplu, pentru c(12,7), funcţia c(1,1) este invocată de 210

ori. Memorăm rezultatele intermediare într-un tablou de forma:

0 1 2 3 ... k-1 k

0 1

1 1 1

2 1 2 1

3 1 3 3 1

... ... ... ... ... ...

n-1

n

11knC

knC 1

knC

Page 7: Metoda  program ării dinamice

Algoritm care foloseşte metoda programării dinamice

Function comb (n, k : Integer): Integer;Var i,j : integer;

c: array [0…20,0…20] of Integer;Begin For i:= 0 TO n do Begin c[i,0]:=1; c[i,i]:=1; For j:= 1 TO i-1 do c[i,j]:= c[i-1, j-1] + c[i-1, j]; end; comb:=c[n,k];end;

Page 8: Metoda  program ării dinamice

Principiile programării dinamice1. Evitarea calculării de mai multe ori a aceloraşi subcazuri prin

memorarea rezultatelor intermediare

2. Metoda programării dinamice operează de jos în sus

( Se porneşte de la cele mai mici subcazuri, se combină rezultatele lor şi se obţin soluţii pentru cazuri din ce in ce mai mari, până se ajunge la soluţia cazului iniţial)

3. Metoda programării dinamice este folosită pentru optimizarea problemelor care satisfac principiul optimalităţii (adică într-o secvenţă optimă de decizii, fiecare subsecvenţă trebuie de asemenea să fie optimă)