Come primo (classico) esempio, utilizziamo la serie di Fibonacci , che è definita, per un numero naturale , nel seguente modo
Per evitare di ricalcolare più volte la medesima funzione, si può utilizzare la programmazione dinamica. In questo caso, bisogna tabulare le soluzioni parziali, ed utilizzarle quando se ne ha la necessità. Nel nostro caso bisogna introdurre un vettore f[] con un numero di elementi pari (in quanto abbiamo anche lo 0), che mantenga i risultati parziali. L'algoritmo risultante è dato in Figura . Possiamo a questo punto valutare il numero di chiamate che i due differenti algoritmi operano al variare del numero . In Tabella si mostra come nel caso dell'utilizzo della DP il numero di chiamate (il che implica il tempo impiegato) sia lineare e non esponenziale come avviene per la funzione semplice fibo1.
Questo primo esempio mostra quindi che se la soluzione del problema generale si può scomporre nella composizione di problemi parziali non indipendenti, si ha bisogno della tabulazione dei risultati parziali per poter ridurre il tempo di esecuzione.
Numero | Numero di chiamate | Numero di chiamate |
da calcolare | di fibo1 | di fibo2 |
5 | 15 | 12 |
10 | 177 | 22 |
20 | 21891 | 42 |
30 | 2692537 | 62 |