suppression de certains tirets
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Exercices — Programmation Dynamique
|
||||
# Exercices - Programmation Dynamique
|
||||
|
||||
## Exercice 1 — L'escalier
|
||||
## Exercice 1 - L'escalier
|
||||
|
||||
Vous souhaitez monter un escalier de `n` marches. À chaque étape, vous pouvez monter **1 marche** ou **2 marches**. Combien existe-t-il de façons différentes d'atteindre la n-ième marche ?
|
||||
|
||||
@@ -24,7 +24,7 @@ Vous souhaitez monter un escalier de `n` marches. À chaque étape, vous pouvez
|
||||
|
||||
---
|
||||
|
||||
## Exercice 2 — Rendu de monnaie revisité
|
||||
## Exercice 2 - Rendu de monnaie revisité
|
||||
|
||||
On dispose de pièces de valeurs **[2, 5, 10]** (en centimes).
|
||||
|
||||
@@ -41,7 +41,7 @@ On dispose de pièces de valeurs **[2, 5, 10]** (en centimes).
|
||||
|
||||
---
|
||||
|
||||
## Exercice 3 — Sac à dos : à la main et en code
|
||||
## Exercice 3 - Sac à dos : à la main et en code
|
||||
|
||||
On dispose des objets suivants, avec un sac de capacité **6 kg** :
|
||||
|
||||
@@ -62,7 +62,7 @@ On dispose des objets suivants, avec un sac de capacité **6 kg** :
|
||||
|
||||
---
|
||||
|
||||
## Exercice 4 — Triangle de Pascal ★
|
||||
## Exercice 4 - Triangle de Pascal ★
|
||||
|
||||
Le **triangle de Pascal** est construit selon la règle suivante :
|
||||
- Les bords valent toujours 1
|
||||
|
||||
@@ -189,7 +189,7 @@ print(f"Objets choisis : {choix}")
|
||||
|
||||
Avec n = nombre d'objets, W = capacité du sac.
|
||||
|
||||
> **Attention :** si W est très grand, cette complexité peut devenir prohibitive. Le sac à dos 0/1 est un problème NP-difficile — la programmation dynamique le résout efficacement pour des valeurs raisonnables de W.
|
||||
> **Attention :** si W est très grand, cette complexité peut devenir prohibitive. Le sac à dos 0/1 est un problème NP-difficile - la programmation dynamique le résout efficacement pour des valeurs raisonnables de W.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# TP — Le Donjon du Dragon
|
||||
# TP - Le Donjon du Dragon
|
||||
|
||||
## Contexte
|
||||
|
||||
@@ -26,7 +26,7 @@ Un chemin possible : (0,0)→(1,0)→(1,1)→(1,2)→(2,2)→(2,3) → or = 3+5+
|
||||
|
||||
Est-ce le meilleur chemin ? C'est ce que vous allez découvrir.
|
||||
|
||||
## Partie 1 — Comprendre le problème
|
||||
## Partie 1 - Comprendre le problème
|
||||
|
||||
**Question 1.** Sur la grille ci-dessus, listez tous les chemins possibles de `(0,0)` à `(2,3)` en ne se déplaçant que vers la droite ou vers le bas. Combien y en a-t-il ?
|
||||
|
||||
@@ -34,7 +34,7 @@ Est-ce le meilleur chemin ? C'est ce que vous allez découvrir.
|
||||
|
||||
**Question 3.** Pour une grille de dimensions `n × m`, combien y a-t-il de chemins possibles en tout ? *(Indice : c'est une formule combinatoire.)*
|
||||
|
||||
## Partie 2 — Formulation récursive
|
||||
## Partie 2 - Formulation récursive
|
||||
|
||||
Notons `donjon(i, j)` l'or maximum qu'on peut ramasser depuis `(0, 0)` jusqu'à `(i, j)`.
|
||||
|
||||
@@ -59,7 +59,7 @@ n, m = len(grille), len(grille[0])
|
||||
print(donjon_naif(grille, n-1, m-1)) # doit afficher 22
|
||||
```
|
||||
|
||||
## Partie 3 — Version Top-Down (mémoïsation)
|
||||
## Partie 3 - Version Top-Down (mémoïsation)
|
||||
|
||||
**Question 7.** La version naïve recalcule-t-elle des sous-problèmes plusieurs fois ? Pour répondre, ajoutez un compteur d'appels et testez sur la grille ci-dessus.
|
||||
|
||||
@@ -80,7 +80,7 @@ def donjon_memo(grille):
|
||||
|
||||
**Question 9.** Vérifiez que vous obtenez le même résultat que la version naïve.
|
||||
|
||||
## Partie 4 — Version Bottom-Up (tableau)
|
||||
## Partie 4 - Version Bottom-Up (tableau)
|
||||
|
||||
**Question 10.** Remplissez à la main le tableau `t[i][j]` représentant l'or maximum qu'on peut ramasser **depuis `(0,0)` jusqu'à `(i,j)`** pour la grille de l'exemple.
|
||||
|
||||
@@ -103,7 +103,7 @@ def donjon_bottom_up(grille):
|
||||
|
||||
**Question 12.** Vérifiez que vous obtenez le même résultat que les versions précédentes.
|
||||
|
||||
## Partie 5 — Bonus : retrouver le chemin optimal
|
||||
## Partie 5 - Bonus : retrouver le chemin optimal
|
||||
|
||||
**Question 13.** *(Bonus)* Modifiez `donjon_bottom_up` pour qu'elle retourne non seulement la valeur optimale, mais aussi **la liste des cases du chemin optimal**.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# TP — L'Algorithme du Vaccin
|
||||
# TP - L'Algorithme du Vaccin
|
||||
|
||||
## Contexte
|
||||
|
||||
@@ -26,7 +26,7 @@ Temps disponible : **10 heures**
|
||||
|
||||
---
|
||||
|
||||
## Partie 1 — Comprendre le problème
|
||||
## Partie 1 - Comprendre le problème
|
||||
|
||||
**Question 1.** En utilisant l'algorithme glouton (trier par ratio efficacité/temps décroissant), quels anticorps choisissez-vous ? Quelle est l'efficacité totale obtenue ?
|
||||
|
||||
@@ -36,7 +36,7 @@ Temps disponible : **10 heures**
|
||||
|
||||
---
|
||||
|
||||
## Partie 2 — Formulation récursive
|
||||
## Partie 2 - Formulation récursive
|
||||
|
||||
Notons `vaccin(i, t)` l'efficacité maximale qu'on peut atteindre en choisissant parmi les `i` premiers anticorps avec un temps restant de `t` heures.
|
||||
|
||||
@@ -60,7 +60,7 @@ print(vaccin_naif(anticorps, n, 10)) # doit afficher 140
|
||||
|
||||
---
|
||||
|
||||
## Partie 3 — Version Top-Down (mémoïsation)
|
||||
## Partie 3 - Version Top-Down (mémoïsation)
|
||||
|
||||
**Question 7.** Pourquoi la version naïve recalcule-t-elle des sous-problèmes ? Donnez un exemple de sous-problème qui serait recalculé plusieurs fois.
|
||||
|
||||
@@ -81,7 +81,7 @@ def vaccin_memo(anticorps, temps_total):
|
||||
|
||||
---
|
||||
|
||||
## Partie 4 — Version Bottom-Up (tableau)
|
||||
## Partie 4 - Version Bottom-Up (tableau)
|
||||
|
||||
**Question 10.** Remplissez à la main le tableau `tableau[i][t]` pour les **3 premiers anticorps** (Alpha, Bêta, Gamma) avec un temps total de **6 heures** :
|
||||
|
||||
@@ -113,7 +113,7 @@ def vaccin_bottom_up(anticorps, temps_total):
|
||||
|
||||
---
|
||||
|
||||
## Partie 5 — Reconstruction de la solution
|
||||
## Partie 5 - Reconstruction de la solution
|
||||
|
||||
**Question 13.** Modifiez `vaccin_bottom_up` pour qu'elle retourne non seulement l'efficacité maximale, mais aussi la **liste des anticorps sélectionnés** :
|
||||
|
||||
@@ -144,7 +144,7 @@ def vaccin_reconstruction(anticorps, temps_total):
|
||||
|
||||
---
|
||||
|
||||
## Partie 6 — Bonus : contraintes supplémentaires
|
||||
## Partie 6 - Bonus : contraintes supplémentaires
|
||||
|
||||
**Question 16.** *(Bonus)* En réalité, certains anticorps sont **incompatibles** entre eux (ils réagissent chimiquement). Supposez que les anticorps Alpha et Gamma ne peuvent pas être produits ensemble.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user