Programare Dinamica

Probabil cea mai utilizata tehnica de programare in concursurile de algoritmi pentru problemele care implica recursivitate este programarea dinamica.

Cea mai cunoscuta problema care se poate rezolva prin programare dinamica este sirul lui fibonacci, care poate fi rezolvata prin recursivitate si are complexitate O(2^n) sau prin programare dinamica si are complexitate O(n), in varianta recursiva calculam aceleas valori de mai multe ori pe cand in varianta iterativa calculam noua valoare pe baza valorilor calculate anterior.

O alta problema interesanta care se rezolva prin programare dinamica este calculul numarului de triangularizari posibile a unui poligon cu (n+2) varfuri astfel incat ca diagonalele sa nu se intersecteze si se calculeaza prin numarul lui catalan de n:

http://9fvianu.websitenr1.ro/cygnus/catalan.html

2 Likes

Poate cea mai simplă - şi probabil la fel de cunoscută - problemă care se poate rezolva prin programare dinamică, este problema sumei maxime a triunghiului parcurs de la vârf la bază.

Această problemă este celebră pentru faptul că a constituit pentru prima oară un subiect la Olimpiada Internaţională de Informatică care implica programare dinamică; mai exact: cu ocazia ediţiei din 1994.

3 Likes

Am gasit si un curs de programare dinamica:

http://www.lbi.ro/~oana/10%20E%20info/algoritmi%20programare%20dinamica.pdf

Problema mea cu programarea dinamică este că e predată strict matematic.

Dar realizarea aplicațiilor cu api-uri pe un cloud serverless tot programare dinamică este.

1 Like

Poti rezolva probleme NP complete in O(1) aproape