Aller au contenu

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

Quiz de programmation dynamique : entraînement de Terminale NSI

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

L'essentiel

  • La programmation dynamique résout un problème en le décomposant en sous-problèmes, résolus des plus petits aux plus grands, en mémorisant les résultats intermédiaires 6.
  • Elle devient utile quand les mêmes sous-problèmes reviennent plusieurs fois, ce qui rend la méthode diviser pour régner inefficace 6.
  • Le travail consiste à définir les sous-problèmes, trouver la relation de récurrence, puis écrire l'algorithme en méthode ascendante ou descendante 64.
  • Ce quiz couvre le vocabulaire, le principe d'optimalité, l'exemple de Fibonacci, le rendu de monnaie et le sac à dos.

Avant de commencer

Ce quiz t'entraîne sur la programmation dynamique, chapitre d'algorithmique de la spécialité NSI en Terminale 1. Il suit le cours sur la méthode diviser pour régner et le tri fusion : tu y retrouveras l'idée de découper un problème, mais avec une différence décisive que les questions vont te faire manipuler.

Les questions couvrent plusieurs thèmes : l'idée générale et son histoire 6, la comparaison avec diviser pour régner 6, l'exemple de la suite de Fibonacci 6, le problème du rendu de monnaie 2 et les applications classiques comme le sac à dos 6. Certaines demandent un calcul : fais-le sur papier, avec un tableau, avant de répondre.

Quiz

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

  1. Quelle phrase décrit le mieux la programmation dynamique ?

  2. La programmation dynamique a été introduite au début des années 1950 par Richard Bellman, et à l'époque le mot « programmation » signifiait planification et ordonnancement.

  3. Pourquoi l'algorithme diviser pour régner « naïf » est-il inefficace pour calculer le nn-ième terme de la suite de Fibonacci ?

  4. La suite de Fibonacci est définie par F0=0F_0 = 0, F1=1F_1 = 1 et Fn=Fn−1+Fn−2F_n = F_{n-1} + F_{n-2} 6. Calcule F7F_7.

  5. On calcule F5F_5 avec la fonction récursive naïve fib(n) qui renvoie n si n vaut 0 ou 1, et fib(n-1) + fib(n-2) sinon. Combien d'appels de la fonction sont effectués au total, en comptant l'appel initial et les appels de base ?

  6. Combien d'additions une méthode ascendante (boucle qui construit F2F_2, puis F3F_3, etc.) effectue-t-elle pour obtenir F10F_{10}, à partir de F0F_0 et F1F_1 ?

  7. Quelles sont les étapes typiques de la conception d'un algorithme de programmation dynamique ? (plusieurs réponses)

    Plusieurs réponses possibles.

  8. Dans la programmation dynamique, les sous-problèmes sont toujours indépendants les uns des autres, comme dans la méthode diviser pour régner.

  9. Quel est le lien entre programmation dynamique et mémoïsation ?

  10. Pour le problème du rendu de monnaie avec une récursion, on cherche le nombre minimal de pièces pour une somme somme. La ligne mini = min(mini, 1 + dynRecursif(valeursFaciales, somme - x)) signifie :

  11. On dispose de pièces de valeurs 1, 3 et 4 (en quantité illimitée). Quel est le nombre minimal de pièces pour rendre la somme 6 ?

  12. Avec les pièces 1, 3 et 4, l'algorithme glouton (toujours prendre la plus grande pièce possible) donne toujours le même nombre de pièces que la programmation dynamique.

  13. Le problème du sac à dos est NP-difficile. Que dit-on de sa résolution par programmation dynamique ?

  14. Pour calculer FnF_n par boucle, tu remplis un tableau de n+1n + 1 cases. Comment réduire la mémoire utilisée ?

  15. Dans une résolution par programmation dynamique, on retient parfois « d'où l'on vient » dans un second tableau (par exemple g[s] = s - x). À quoi cela sert-il ?

  16. Parmi ces problèmes, lesquels sont traités par programmation dynamique ? (plusieurs réponses)

    Plusieurs réponses possibles.

Les questions qu'on se pose

Quelle différence entre programmation dynamique et diviser pour régner ?

Les deux méthodes combinent des solutions de sous-problèmes. Mais diviser pour régner partitionne le problème en sous-problèmes indépendants, et devient inefficace si le même sous-problème est résolu plusieurs fois 6. La programmation dynamique mémorise les résultats intermédiaires pour ne les calculer qu'une fois 6. Pour savoir laquelle choisir, demande-toi : « mes sous-problèmes se répètent-ils ? »

Comment savoir si un problème relève de la programmation dynamique ?

Cherche d'abord une relation de récurrence exprimant la solution à partir de solutions de sous-problèmes plus petits 4. Si ces sous-problèmes reviennent plusieurs fois dans le calcul, et si une solution optimale se construit à partir de solutions optimales des sous-problèmes (principe d'optimalité de Bellman 6), la méthode s'applique. Fibonacci et le rendu de monnaie sont de bons modèles à garder en tête.

Faut-il choisir la méthode ascendante ou descendante au bac ?

Les deux sont acceptables : le paradigme demande de donner un algorithme en méthode ascendante ou descendante 6. La méthode ascendante remplit un tableau des petits aux grands sous-problèmes ; la descendante est une récursion qui mémorise ses résultats. Choisis celle dont tu maîtrises le mieux les indices, et justifie toujours la récurrence sur laquelle ton programme repose.

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