La programmation dynamique s'appuie sur le principe d'optimalité de Bellman : une solution optimale d'un problème s'obtient en combinant des solutions optimales à des sous-problèmes.
Sur l'exemple de la suite de Fibonacci, la solution Fn s'obtient en additionnant Fn-1 et Fn-2.
La programmation dynamique est un paradigme qui consiste à décomposer un problème en sous-problèmes et à conserver les résultats obtenus pour pouvoir les réutiliser.
La programmation dynamique fait en sorte d'éviter d'avoir à résoudre de manière répétitive un même sous-problème.
La fonction à optimiser s'écrit sous la forme z=ax+by+c, z = a x + b y + c , où x et y sont les variables et où z représente la quantité qu'on cherche à maximiser ou à minimiser.