next up previous contents
Next: Serie di Fibonacci Up: Programmazione dinamica Previous: Programmazione dinamica   Indice

Introduzione

La programmazione dinamica (DP) è un approccio alla risoluzione di problemi basato sul concetto della scompozione del problema originale in sottoproblemi (è parente dell'aproccio basato sul divide et impera [1]). L'idea di base è quindi scomporre il problema in sottoproblemi, risolvere i sottoproblemi (di dimensione minore), ed infine ricostruire la soluzione del problema originale combinando le soluzioni dei sottoproblemi.

A differenza del divide et impera, che ripartiziona il problema originale in sottoproblemi indipendenti, il vantaggio della programmazione dinamica si ha quando la ricorsione richiede il calcolo di alcuni sottoproblemi molte volte ([1]). La DP, tabulando le soluzioni parziali evita un inutile spreco di tempo per ricalcolare le medesime soluzioni. Di solito però, la fase di divide è nascosta all'interno del calcolo stesso.

La DP è storicamente associata ai problemi di ottimizzazione, nei quali viene richiesta una soluzione ottimale. Una soluzione ottimale, può significare molte cose differenti a seconda del contesto, e di solito rappresenta il massimo o il minimo valore di una funzione più o meno complessa. In sintesi i passi principali di un approccio basato su DP sono


next up previous contents
Next: Serie di Fibonacci Up: Programmazione dinamica Previous: Programmazione dinamica   Indice
2004-11-02