Ceci est une ancienne révision du document !
La programmation dynamique est une méthode de programmation qui permet d'éviter notamment deux problèmes de la récurrence. Elle permet la résolution de ces problème qui sont la répétitivité d'un programme (le temps d'exécution trop long) et l'empilage non infini de la récurrence, en mémorisant le résultat et en le réutilisant quand nécessaire. Ça reprend le principe de “diviser pour régner” mais en mémorisant, permet de résoudre un sous-problème qu'une seul fois et de réutiliser ce résultat.
Par exemple la programmation dynamique permet d'effectuer la suite de Fibonacci plus rapidement et la création d'un algorithme palliant au problème de l'algorithme glouton.
Exemple d'algorithme utilisant la programmation dynamique et renvoyant le plus petit nombre de pièces rendable qui grâce à cette méthode de mémorisation, peut faire toutes les possibilités possible:
def rendu_monnaie_rec(P,X): if X==0: return 0 else: mini = 1000 for i in range(len(P)): if P[i]<=X: nb = 1 + rendu_monnaie_rec(P,X-P[i]) if nb<mini: mini = nb return mini pieces = (2,5,10,50,100)