Aller au contenu

Numérique et sciences informatiques (spécialité) · TerminaleBac

Programmation dynamique : fiche de révision de Terminale NSI

Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur

L'essentiel

  • La programmation dynamique traite un problème d'optimisation en le coupant en sous-problèmes, réglés du plus petit au plus grand, dont on garde les résultats 6.
  • Trois temps : définir les sous-problèmes, écrire la relation de récurrence, choisir une méthode ascendante ou descendante 6.
  • Elle sert quand les mêmes sous-problèmes reviennent plusieurs fois, là où diviser pour régner devient inefficace 6.
  • Piège classique : oublier les cas de base ou recalculer sans mémoriser, ce qui fait exploser le temps de calcul.

L'idée à retenir

Pourquoi mémoriser ? Le lien avec diviser pour régner

Tu connais diviser pour régner, comme le tri fusion : on sépare le problème en sous-problèmes indépendants, on les résout par récursivité, puis on fusionne les résultats 6. Cette méthode perd son efficacité dès qu'un même sous-problème est à résoudre plusieurs fois 6.

La programmation dynamique corrige ce défaut : chaque sous-problème est résolu une seule fois, son résultat est rangé dans un tableau ou un dictionnaire, puis réutilisé. La mémoïsation est une technique très voisine, fondée sur la même idée : ne pas refaire un calcul déjà fait 5.

Méthode : concevoir un algorithme

Deuxième exemple : le rendu de monnaie

On cherche le nombre minimal de pièces pour atteindre une somme donnée avec des valeurs faciales données. Une formulation récursive teste chaque pièce xx et garde le minimum de 1+1 + (solution pour la somme moins xx) 2.

Où la rencontre-t-on, et quels pièges éviter

Le problème du sac à dos est un problème classique de recherche opérationnelle, NP-difficile, mais résolu de façon pseudo-polynomiale par programmation dynamique 6. Dans son énoncé, on dispose de nn objets ayant chacun un poids et une valeur 4. La recherche de la plus longue sous-chaîne commune à deux textes se traite aussi ainsi 2, et le travail sur les indices y est délicat 2.

Questions flash

4 questions · correction immédiate · ton score reste sur ton appareil.

  1. Pourquoi la version récursive naïve du calcul de FnF_n est-elle lente ?

  2. Quelle étape est indispensable à la conception d'un algorithme de programmation dynamique ?

  3. La programmation dynamique convient quand les sous-problèmes sont indépendants et ne se répètent jamais.

  4. Avec des pièces de 1, 3 et 4, quel est le nombre minimal de pièces pour obtenir la somme 6 ?

Les questions qu'on se pose

Quelle est la différence entre programmation dynamique et mémoïsation ?

Ce sont deux techniques très proches, fondées sur l'idée de ne pas refaire un calcul déjà effectué 5. La mémoïsation est la version descendante : on garde en mémoire les résultats d'une fonction récursive. La version ascendante remplit un tableau en partant des plus petits sous-problèmes.

Comment savoir si un problème se traite par programmation dynamique ?

Cherche d'abord un problème d'optimisation 6, puis vérifie deux choses : une solution optimale se construit à partir de solutions optimales de sous-problèmes 6, et ces sous-problèmes se répètent. Si tu parviens à écrire une relation de récurrence avec des cas de base, c'est bon signe.

Faut-il toujours préférer la programmation dynamique à la récursion simple ?

Non. Si les sous-problèmes sont indépendants, comme dans un tri fusion, la récursion simple suffit 6. La programmation dynamique apporte un gain quand les mêmes sous-problèmes reviennent, au prix de la mémoire utilisée pour les stocker.

Sources

Programme visé : Programme de l'enseignement de spécialité de numérique et sciences informatiques de la classe terminale de la voie générale · Bulletin officiel de l'Éducation nationale

  1. Programme de l'enseignement de spécialité de numérique et sciences informatiques de la classe terminale de la voie générale, Bulletin officiel de l'Éducation nationale. Consulté le 7 novembre 2026.
  2. Ressource Éduscol - Programmation dynamique (Terminale NSI), eduscol.education.gouv.fr. Consulté le 7 novembre 2026.
  3. Programmes et ressources en numérique et sciences informatiques - voie générale, eduscol.education.gouv.fr. Consulté le 7 novembre 2026.
  4. Recherche Opérationnelle - Programmation Dynamique, CNRS (Université Lyon). Consulté le 7 novembre 2026.
  5. Programmation dynamique et mémoïsation, CNRS. Consulté le 7 novembre 2026.
  6. Programmation dynamique, Wikipédia. Consulté le 7 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page