1 / 8

Metoda program ării dinamice

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

Download Presentation

Metoda program ării dinamice

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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ă.

  3. 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.

  4. Clasificare • După 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.

  5. 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; Exemplu:

  6. 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:

  7. 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;

  8. Principiile programării dinamice • 1. 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ă)

More Related