Next: Serie di Fibonacci
Up: Programmazione dinamica
Previous: Programmazione dinamica
  Indice
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
- trovare una funzione ricorsiva appropriata
- memorizzare le soluzioni parziali ottenute
- usare un approccio bottom-up, iterando i punti precedenti
Next: Serie di Fibonacci
Up: Programmazione dinamica
Previous: Programmazione dinamica
  Indice
2004-11-02