informatique (tronc commun des prépas scientifiques) · Chapitre 18 · Application directe du cours
Mesurer le chevauchement
La programmation dynamique · niveau 1 (application)
Énoncé
Instrumenter les fonctions de Fibonacci naïve et mémoïsée pour compter le nombre d'appels récursifs effectués. Donner les valeurs des compteurs pour , et . En déduire leurs lois de croissance respectives.
Corrigé
def fib_compte(n, compteur):
compteur[0] += 1
if n <= 1:
return n
return fib_compte(n - 1, compteur) + fib_compte(n - 2, compteur)
- Nombres d'appels mesurés :
- Pour : version naïve appels, version mémoïsée appels.
- Pour : version naïve appels, version mémoïsée appels.
- Pour : version naïve appels, version mémoïsée appels.
- Lois de croissance : La version naïve suit une croissance exponentielle proportionnelle à (où est le nombre d'or). La version mémoïsée présente une croissance linéaire valant exactement appels. Pour , l'approche mémoïsée est environ fois plus rapide.