Skip to content
Numérique et sciences informatiques · Terminale

Idées d’apprentissage actif

Programmation dynamique

La programmation dynamique est une technique d'optimisation avancée qui permet de résoudre des problèmes complexes en évitant de recalculer plusieurs fois les mêmes sous-problèmes. Ce chapitre introduit des concepts clés comme la mémoïsation (stockage des résultats intermédiaires) et la construction de solutions de bas en haut. C'est une étape cruciale pour les élèves qui souhaitent approfondir l'algorithmique.

Programmes OfficielsBOEN spécial n°8 du 25 juillet 2019 - AlgorithmiqueCompétence : Utiliser la programmation dynamique pour résoudre un problème d'optimisation
30–50 minBinômes → Classe entière3 activités

Activité 01

Résolution de problèmes en collaboration: Le rendu de monnaie

Les élèves doivent trouver le nombre minimal de pièces pour rendre une somme donnée. Ils essaient d'abord avec une méthode gourmande (qui échoue parfois) avant de construire un tableau de programmation dynamique.

Qu'est-ce que la mémoïsation ?
AppliquerAnalyserÉvaluerCréerCompétences relationnellesPrise de décisionAutogestion
Générer une leçon complète

Activité 02

Jeu de simulation40 min · Petits groupes

Jeu de simulation: La pyramide des nombres

Sur une pyramide de nombres, les élèves doivent trouver le chemin de somme maximale. Ils découvrent qu'en partant du bas et en stockant les meilleurs scores, le problème devient très simple à résoudre.

Comment la programmation dynamique améliore-t-elle les performances ?
AppliquerAnalyserÉvaluerCréerConscience socialePrise de décision
Générer une leçon complète

Activité 03

Penser-Partager-Présenter30 min · Binômes

Penser-Partager-Présenter: Mémoïsation ou pas ?

On présente le calcul de Fibonacci. Les élèves comparent l'arbre d'appels récursifs classique (avec ses nombreux doublons) et la version avec un dictionnaire de mémoire. Ils discutent du gain de performance.

Dans quels cas utiliser la programmation dynamique ?
ComprendreAppliquerAnalyserConscience de soiCompétences relationnelles
Générer une leçon complète

Quelques notes pour enseigner cette unité


Attention à ces idées reçues

  • Confondre programmation dynamique et algorithme glouton.

    L'algorithme glouton fait le meilleur choix immédiat sans revenir en arrière, ce qui n'est pas toujours optimal. La programmation dynamique explore toutes les possibilités de manière intelligente. Faire comparer les deux sur un système de monnaie non-canonique est très efficace.

  • Penser que la programmation dynamique est toujours nécessaire.

    Elle n'est utile que si les sous-problèmes se recoupent. Si chaque sous-problème est unique, une simple récursion suffit. Analyser l'arbre des appels permet aux élèves de décider si la mémoïsation est pertinente.


Méthodes utilisées dans ce dossier