Sunteți pe pagina 1din 1

METODA PROGRAMRII DINAMICE

Prezentare general
Programarea dinamic este o metod de elaborare a algoritmilor care se aplic n general problemelor
pentru care se cere determinarea unui optim n urma adoptrii unor decizii.
Nu exist un criteriu pe baza cruia s identificm cu siguran o problem pentru rezolvarea creia
trebuie s utilizm metoda programrii dinamice, dar putem formula dou proprieti care sugereaz o
soluie prin programare dinamic.
 Substructur optimal
Problema dat poate fi descompus n subprobleme i soluia optim a problemei depinde de soluiile
optime ale subproblemelor sale.
Acest criteriu nu indic neaprat o soluie prin programare dinamic, ar putea fi i un indiciu c se poate
aplica metoda Greedy sau metoda Divide et Impera.
 Subprobleme superpozabile
Subproblemele problemei date nu sunt independente, ci se suprapun.
Datorit faptului c subproblemele problemei date se suprapun, deducem c o abordare prin metoda
Divide et Impera ar fi dezastruoas din punctul de vedere al timpului de execuie (datorit faptului c
problemele se suprapun se ajunge la rezolvarea repetat a aceleiai subprobleme). Prin urmare, vom rezolva
subproblemele o singur, dat, reinnd rezultatele ntr-o structur de date suplimentar (de obicei un tablou).
Rezolvarea unei probleme prin programare dinamic presupune urmtorii pai:
1. Se identific subproblemele problemei date.
2. Se alege o structur de date capabil s rein soluiile subproblemelor.
3. Se caracterizeaz substructura optimal a problemei printr-o relaie de recuren.
4. Pentru a determina soluia optim, se rezolv relaia de recuren n mod bottom-up (se rezolv
subproblemele n ordinea cresctoare a dimensiunii lor).

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