• [^] # Re: Programmation Dynamique

    Posté par . En réponse au journal Haskell -- Évaluation paresseuse. Évalué à 1.

    En effet, on peut même remarquer que si on retire la partie « tableau » (qui sert en fait à faire de la mémoïsation), on se retrouve avec une bête fonction récursive classique. Pour reprendre l'exemple donné :

    u u0 0 _ = 1
    u u0 j 0 = u0 ! j
    u u0 j n = if j == nMax then 
     0
     else
     a * (u u0 (j+1) (n-1)) + b * (u u0 j (n-1)) + c * (u u0 (j-1) (n-1))

    Remarque: pour continuer à pouvoir utiliser u0 simplement, on le passe en argument de la fonction.

    L'avantage d'utiliser un tableau est en fait celui de la Réification, on ne traite plus une méthode de calcul mais des valeurs. Par exemple si on veut tracer les courbes qui correspondent à la suite pour un n fixé, un nombre énorme de calculs seront refait plusieurs fois, alors qu'en ayant enregistré toutes les étapes intermédiaires, on ne refait jamais deux fois le même calcul, et le tableau se calcule en temps linéaire par rapport à sa taille.