<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Première/Algorithmes gloutons</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Principe des algorithmes gloutons, notion de choix<br/>
localement optimal, exemples classiques (rendu de<br/>
monnaie, sac à dos fractionnaire, sélection<br/>
d'activités), cas où l'algorithme glouton donne<br/>
l'optimum, et contre-exemples qui montrent ses<br/>
limites.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q01 : Définition d'un algorithme glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel est le principe d'un <strong>algorithme glouton</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un algorithme glouton est rapide et simple à écrire, mais il ne<br/>
garantit pas la meilleure solution sur tous les problèmes : pour<br/>
rendre $6$ avec des pièces de $1$, $3$ et $4$, il donne<br/>
$4 + 1 + 1$ alors que $3 + 3$ suffit.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il choisit toujours au hasard parmi les options disponibles</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un algorithme glouton est <strong>déterministe</strong> : à<br/>
chaque étape, il applique un critère précis<br/>
(« le plus grand », « le plus court », etc.)<br/>
plutôt qu'un tirage aléatoire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il essaie chaque possibilité, abandonne quand la solution échoue, puis revient en arrière pour explorer une autre voie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette description suppose de revenir sur des choix déjà faits pour<br/>
explorer une autre voie. Un algorithme glouton, au contraire, ne<br/>
revient jamais sur ses choix, et c'est précisément ce qui le<br/>
caractérise.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À chaque étape, il fait le choix qui semble localement le meilleur, sans jamais revenir en arrière</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est exactement cela : un algorithme glouton<br/>
prend une décision irrévocable à chaque étape,<br/>
en espérant que la succession des choix locaux<br/>
mène à un optimum global.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il essaie toutes les solutions possibles, puis garde la meilleure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette description correspond à la <strong>recherche exhaustive</strong>, et non à la stratégie gloutonne.<br/>
Un algorithme glouton ne teste qu'une seule<br/>
solution, en construisant son choix étape par<br/>
étape.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q02 : Exemple classique</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lequel des problèmes suivants est résolu<br/>
naturellement par un algorithme glouton, dans le<br/>
système monétaire de l'euro ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le rendu de monnaie est l'exemple emblématique<br/>
des algorithmes gloutons enseignés en classe. Il<br/>
fonctionne bien pour le système euro, mais peut<br/>
échouer pour d'autres systèmes monétaires, comme<br/>
le montre la question suivante.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Calculer la racine carrée d'un nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le calcul d'une racine carrée n'est pas un<br/>
problème d'optimisation : on cherche une<br/>
valeur, pas le meilleur choix parmi<br/>
plusieurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Trier une liste d'entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le tri n'est pas un problème d'optimisation<br/>
gloutonne classique. Les algorithmes de tri<br/>
étudiés en classe (tri par insertion, tri par<br/>
sélection) ne sont pas considérés comme des<br/>
algorithmes gloutons.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le rendu de monnaie (minimum de pièces)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>À chaque étape, on prend la plus grande pièce<br/>
qui tient encore dans le reste à rendre. Avec<br/>
le système euro, cette stratégie donne bien le<br/>
nombre minimum de pièces.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Vérifier si une chaîne de caractères est un palindrome</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Tester si une chaîne est un palindrome relève<br/>
d'un problème de comparaison, pas<br/>
d'optimisation. Aucun choix successif n'est<br/>
fait.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q03 : Contre-exemple du rendu de monnaie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avec le système hypothétique de pièces<br/>
$\{1, 3, 4\}$, on veut rendre $6$. Que donne<br/>
l'algorithme glouton qui prend la plus grande<br/>
pièce possible à chaque étape ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cet exemple illustre la limite des algorithmes<br/>
gloutons : ils ne garantissent pas l'optimum sur<br/>
tous les systèmes monétaires. Le système euro<br/>
est conçu de telle sorte que la stratégie<br/>
gloutonne donne toujours le minimum de pièces,<br/>
mais ce n'est pas une propriété universelle.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'algorithme glouton ne termine pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un algorithme glouton termine toujours en un<br/>
nombre fini d'étapes, car le reste à rendre<br/>
diminue strictement à chaque étape jusqu'à<br/>
atteindre zéro.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$4 + 1 + 1 = 6$, soit trois pièces</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'algorithme glouton commence par prendre la<br/>
pièce de $4$, puis deux pièces de $1$, ce qui<br/>
fait trois pièces au total. Or, l'optimum<br/>
réel est $3 + 3 = 6$, soit deux pièces<br/>
seulement. L'algorithme glouton n'a donc pas<br/>
trouvé la meilleure solution.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$3 + 3 = 6$, soit deux pièces</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est bien la solution <strong>optimale</strong>, mais<br/>
l'algorithme glouton naïf ne la trouve pas.<br/>
Il commence par prendre la plus grande pièce<br/>
qui tient (la pièce de $4$) plutôt que de<br/>
chercher une combinaison plus astucieuse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$1 + 1 + 1 + 1 + 1 + 1 = 6$, soit six pièces</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un algorithme glouton ne prend pas<br/>
systématiquement la plus petite pièce, mais la<br/>
plus grande qui tient encore dans le reste à<br/>
rendre.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q04 : Caractéristiques d'un algorithme glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lequel des énoncés suivants est <strong>vrai</strong> pour les<br/>
algorithmes gloutons ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les principaux avantages des algorithmes<br/>
gloutons sont leur simplicité et leur rapidité.<br/>
Leur principal inconvénient est qu'ils ne sont<br/>
pas toujours optimaux. Ils constituent<br/>
néanmoins un bon premier réflexe à essayer face<br/>
à un problème d'optimisation.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Ils sont en général rapides, mais pas toujours optimaux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est précisément le compromis qui caractérise<br/>
les algorithmes gloutons. Leur rapidité<br/>
(typiquement linéaire ou quasi-linéaire) en<br/>
fait un excellent premier essai, mais il faut<br/>
vérifier ensuite qu'ils donnent l'optimum sur<br/>
le problème considéré.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils essaient toutes les solutions avant de choisir la meilleure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est la description de la recherche<br/>
exhaustive. Un algorithme glouton ne construit<br/>
qu'une seule solution, sans énumérer les<br/>
alternatives.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils ont toujours une complexité exponentielle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est plutôt la recherche exhaustive qui a<br/>
souvent une complexité exponentielle. Les<br/>
algorithmes gloutons sont au contraire connus<br/>
pour leur rapidité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils ne fonctionnent que sur les listes triées</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune contrainte n'est imposée sur la nature<br/>
des données d'entrée. De nombreux algorithmes<br/>
gloutons commencent simplement par un tri,<br/>
mais ce n'est pas une exigence générale.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q05 : Critère de choix glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour résoudre un problème d'optimisation par un<br/>
algorithme glouton, quelle question doit-on se<br/>
poser en premier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une bonne pratique consiste à tester plusieurs<br/>
critères de choix sur des exemples connus, puis,<br/>
lorsque c'est possible, à démontrer<br/>
mathématiquement que le critère retenu mène à<br/>
l'optimum.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Quelle est la taille du problème ?</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La taille du problème influence la<br/>
performance, mais elle n'a aucune incidence<br/>
sur la conception même de l'algorithme<br/>
glouton.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Quel critère local utiliser pour décider à chaque étape ?</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La conception d'un algorithme glouton commence<br/>
toujours par le choix d'un critère local :<br/>
prendre la plus grande pièce, le plus court<br/>
chemin, l'objet de plus grande valeur, et<br/>
ainsi de suite. Ce choix détermine entièrement<br/>
l'algorithme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Combien de cœurs possède le processeur ?</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le nombre de cœurs concerne le matériel et<br/>
n'a aucun rapport avec la stratégie<br/>
algorithmique adoptée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Quel est le langage de programmation utilisé ?</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le langage de programmation n'a aucune<br/>
influence sur la stratégie algorithmique. Un<br/>
algorithme glouton se conçoit indépendamment<br/>
de Python, Java ou tout autre langage.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q07 : Pas de retour en arrière</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle propriété distingue un algorithme glouton<br/>
des autres stratégies algorithmiques ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Lorsque l'algorithme glouton donne l'optimum,<br/>
c'est la stratégie la plus économique<br/>
(rapidité, simplicité). Mais dès qu'il faut<br/>
explorer plusieurs alternatives pour ne pas se<br/>
faire piéger, il faut recourir à d'autres<br/>
techniques, étudiées en classe de terminale.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il essaie toutes les solutions possibles avant de répondre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est la description de la recherche<br/>
exhaustive. L'algorithme glouton fait<br/>
précisément l'inverse : il prend une seule<br/>
décision à chaque étape, sans rien essayer<br/>
d'autre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il ne fonctionne que sur des listes triées</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune contrainte n'est imposée sur la nature<br/>
ou l'ordre des données d'entrée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il fait toujours un choix aléatoire à chaque étape</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un algorithme glouton est <strong>déterministe</strong> :<br/>
il applique un critère précis pour faire son<br/>
choix, et non un tirage aléatoire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il ne revient jamais sur ses décisions : un choix fait reste définitif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est la caractéristique majeure d'un<br/>
algorithme glouton. Cette absence de retour en<br/>
arrière garantit sa rapidité, mais peut aussi<br/>
l'empêcher de trouver l'optimum lorsqu'un<br/>
mauvais choix initial bloque la suite.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q08 : Coût d'un algorithme glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel est typiquement le <strong>coût</strong> d'un algorithme glouton ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette rapidité fait des algorithmes gloutons<br/>
d'excellents premiers candidats. Si l'on doute<br/>
de leur optimalité, on peut les comparer à une<br/>
solution exacte sur de petits exemples, ou<br/>
chercher un contre-exemple.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Proportionnel au nombre de solutions possibles</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un coût proportionnel au nombre de solutions possibles correspond à<br/>
l'essai de toutes les solutions, c'est-à-dire à la recherche<br/>
exhaustive. Un algorithme glouton fait précisément l'inverse : il<br/>
construit une seule solution.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Faible, souvent linéaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un algorithme glouton parcourt typiquement les éléments une seule<br/>
fois (coût linéaire), après les avoir parfois triés selon son<br/>
critère. Cette rapidité est l'un de ses principaux atouts.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Exponentiel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un coût exponentiel correspond plutôt à la recherche exhaustive. Un<br/>
algorithme glouton est au contraire connu pour sa rapidité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Indéfini, selon les cas rencontrés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le coût est parfaitement défini pour chaque algorithme glouton<br/>
concret : il dépend de la structure du problème et du critère<br/>
choisi.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q09 : Algorithme glouton de rendu de monnaie en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Voici le squelette d'un algorithme glouton de<br/>
rendu de monnaie :</p>
<pre><code>def rendu(montant, pieces):
    pieces = sorted(pieces, reverse=True)
    resultat = []
    for p in pieces:
        while montant &gt;= p:
            resultat.append(p)
            montant -= p
    return resultat</code></pre>
<p>Que fait l'instruction<br/>
<code>pieces = sorted(pieces, reverse=True)</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette ligne est essentielle. Sans tri préalable,<br/>
l'algorithme parcourrait les pièces dans<br/>
l'ordre de la liste, ce qui ne correspondrait<br/>
plus à la stratégie gloutonne.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle compte le nombre de pièces</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La fonction <code>sorted</code> ne compte pas, elle<br/>
trie. Pour compter les éléments d'une liste,<br/>
on utilise plutôt la fonction native <code>len</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Elle trie les pièces par ordre décroissant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Ce tri est cohérent avec la stratégie<br/>
gloutonne du rendu de monnaie. À chaque<br/>
étape, l'algorithme prend la plus grande<br/>
pièce qui tient encore dans le reste à<br/>
rendre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle mélange les pièces de manière aléatoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La fonction <code>sorted</code> est strictement<br/>
déterministe : elle trie selon un ordre<br/>
précis, et ne mélange jamais aléatoirement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle trie les pièces par ordre croissant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'argument <code>reverse=True</code> inverse l'ordre du<br/>
tri. La liste est donc triée par ordre<br/>
<strong>décroissant</strong>, et non croissant.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q10 : Choix irrévocable</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Une caractéristique fondamentale d'un algorithme<br/>
glouton est que ses choix sont :</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le mot « glouton » vient de l'image d'un mangeur<br/>
qui prend immédiatement ce qu'il préfère, sans<br/>
planification d'ensemble. Cette image traduit<br/>
bien la nature locale et irrévocable des choix<br/>
effectués par l'algorithme.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Irrévocables : aucun retour en arrière</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette irrévocabilité rend l'algorithme rapide<br/>
(puisqu'il n'y a aucune exploration à mener),<br/>
mais aussi limité : un mauvais choix initial<br/>
peut bloquer la suite et empêcher d'atteindre<br/>
l'optimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Toujours optimaux globalement par construction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un choix glouton est optimal <strong>localement</strong>,<br/>
mais cette optimalité locale n'entraîne pas<br/>
automatiquement l'optimalité globale. Tout<br/>
l'enjeu est précisément de trouver un<br/>
critère pour lequel cette implication soit<br/>
vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aléatoires à chaque appel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un algorithme glouton est déterministe : il<br/>
applique un critère précis pour faire ses<br/>
choix, et donne donc toujours le même<br/>
résultat sur la même entrée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Réversibles à tout moment</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est précisément l'inverse. Si l'on revenait en arrière sur ses<br/>
choix pour en essayer d'autres, ce ne serait plus un algorithme<br/>
glouton mais une recherche exhaustive.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q12 : Sac à dos 0/1 et algorithme glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour le <strong>sac à dos $0/1$</strong>, où chaque objet est<br/>
pris entièrement ou pas du tout, pourquoi<br/>
l'algorithme glouton fondé sur le ratio<br/>
valeur/poids ne donne-t-il pas toujours<br/>
l'optimum ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour le sac à dos $0/1$, on utilise une autre<br/>
technique étudiée en classe de terminale.<br/>
L'algorithme glouton donne souvent une bonne<br/>
solution approchée, mais sans garantie<br/>
d'optimalité.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que les objets ne sont pas triés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>On peut tout à fait trier les objets avant<br/>
le parcours. Le problème vient de la nature<br/>
combinatoire du cas $0/1$, et non de<br/>
l'ordre dans lequel on examine les objets.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Les objets indivisibles bloquent parfois l'optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est exactement le piège. Avec des objets<br/>
indivisibles, prendre l'objet au meilleur<br/>
ratio peut consommer une part importante de<br/>
la capacité, sans qu'on puisse compléter par<br/>
la combinaison la plus rentable. Une autre<br/>
technique est nécessaire pour garantir<br/>
l'optimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que l'algorithme glouton est beaucoup trop lent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La rapidité n'est pas en cause : l'algorithme<br/>
glouton est même plus rapide que les autres<br/>
approches. La difficulté tient bien à<br/>
l'optimalité du résultat, pas au temps de<br/>
calcul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que l'algorithme manque toujours de mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La consommation mémoire d'un algorithme<br/>
glouton est très faible. Le problème ne<br/>
vient absolument pas de là.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q15 : Trace du rendu de monnaie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avec la stratégie gloutonne (« prendre la plus<br/>
grande pièce ne dépassant pas le reste à<br/>
rendre ») et les pièces $\{1, 2, 5, 10\}$, quel<br/>
est le rendu pour la valeur $18$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec ce système monétaire, l'algorithme glouton<br/>
donne bien l'optimum. Mais ce n'est pas<br/>
toujours le cas. Avec le système $\{1, 3, 4\}$<br/>
pour rendre $6$, l'algorithme glouton donne<br/>
$4 + 1 + 1$, soit trois pièces, alors que<br/>
l'optimum est $3 + 3$, soit deux pièces.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$10 + 5 + 2 + 1 = 18$, soit quatre pièces</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le déroulé est le suivant : $18 = 10 + 8$,<br/>
puis $8 = 5 + 3$, puis $3 = 2 + 1$, soit<br/>
quatre pièces au total. C'est aussi<br/>
l'optimum pour ce système monétaire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$5 + 5 + 5 + 2 + 1 = 18$, soit cinq pièces</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'algorithme glouton ne prend pas plusieurs<br/>
pièces de $5$ alors qu'une pièce de $10$ est<br/>
disponible. Il choisit toujours la plus<br/>
grande pièce qui tient encore dans le reste<br/>
à rendre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La pièce de $1$ répétée dix-huit fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'algorithme glouton choisit la <strong>plus grande</strong> pièce possible à chaque étape, et<br/>
non la plus petite. Cette solution serait<br/>
la pire possible.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$10 + 10 = 20$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette somme dépasse $18$. L'algorithme<br/>
glouton ne choisit jamais une pièce qui<br/>
excéderait le reste à rendre.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q16 : Réserver le gymnase pour le plus de clubs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Cinq clubs demandent le gymnase, chacun sur un créneau (heure de<br/>
début, heure de fin) : A $(8, 12)$, B $(9, 10)$, C $(10, 11)$,<br/>
D $(11, 13)$ et E $(12, 14)$. Un créneau peut suivre un autre s'il<br/>
commence à l'heure de fin de celui-ci ou plus tard. L'algorithme<br/>
glouton range les créneaux par heure de fin croissante, puis retient<br/>
chaque créneau qui peut suivre le dernier créneau retenu. Quels<br/>
créneaux retient-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Choisir à chaque étape le créneau qui finit le plus tôt laisse le<br/>
plus de temps libre pour la suite. Ici, aucun ensemble de quatre<br/>
créneaux compatibles n'existe : trois clubs est le maximum.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>A et E</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce résultat vient d'un tri par heure de <strong>début</strong>. A, qui<br/>
commence le plus tôt, occupe le gymnase jusqu'à $12$ et écarte B,<br/>
C et D.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>B et D</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : C commence à $10$, exactement quand B finit, il peut donc<br/>
le suivre. En exigeant un début strictement après la fin, on<br/>
écarte C à tort.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>B, C et D</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'ordre par fin croissante est B, C, A, D, E. On<br/>
retient B (fin $10$), puis C qui commence à $10$ (fin $11$) ; A<br/>
commence à $8$, trop tôt ; D commence à $11$ (fin $13$) ; E<br/>
commence à $12$, avant $13$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>B, C, D et E</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : E commence à $12$, alors que D, déjà retenu, finit à $13$.<br/>
Les deux créneaux se chevauchent, E doit être écarté.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q17 : Tri par critère personnalisé</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour préparer un sac à dos fractionnaire, on veut<br/>
trier une liste <code>objets</code> de dictionnaires de la<br/>
forme <code>{"valeur": 60, "poids": 10}</code> par ratio<br/>
valeur / poids <strong>décroissant</strong>. On a défini la<br/>
fonction clé :<br/>
<pre><code>def ratio(objet):
    return objet["valeur"] / objet["poids"]</code></pre><br/>
Quelle écriture renvoie la liste triée voulue ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans un algorithme glouton, on commence souvent<br/>
par trier les candidats selon le critère de<br/>
choix, en passant à <code>sorted</code> une fonction clé<br/>
nommée, puis on les parcourt dans cet ordre<br/>
pour construire la solution.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>sorted(objets, key=ratio, reverse=True)</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le paramètre <code>key</code> reçoit la fonction <code>ratio</code><br/>
elle-même (sans parenthèses), que Python<br/>
appelle sur chaque objet pour calculer sa<br/>
clé, et <code>reverse=True</code> inverse l'ordre<br/>
croissant par défaut.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>sorted(objets, reverse=True)</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sans paramètre <code>key</code>, Python compare les<br/>
dictionnaires directement entre eux, ce qui<br/>
n'est pas défini : <code>TypeError</code> (<code>'&lt;' not<br/>
supported between instances of 'dict' and<br/>
'dict'</code>).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>sorted(objets, key='ratio', reverse=True)</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le paramètre <code>key</code> attend une <strong>fonction</strong>,<br/>
pas son nom entre guillemets : Python tente<br/>
d'appeler la chaîne <code>'ratio'</code> sur chaque<br/>
objet et lève <code>TypeError</code> (<code>'str' object is<br/>
not callable</code>).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>sorted(objets, key=ratio)</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le tri se fait selon le bon critère, mais<br/>
dans l'ordre <strong>croissant</strong> des ratios :<br/>
l'objet le moins rentable arrive en premier.<br/>
Il manque <code>reverse=True</code> pour placer en tête<br/>
les objets de plus grand ratio.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q18 : Méthode pour concevoir un algorithme glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelles étapes sont conseillées pour concevoir<br/>
un algorithme glouton sur un nouveau problème ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette méthode est aussi celle des chercheurs en<br/>
algorithmique. Trouver un contre-exemple est<br/>
souvent rapide et suffit à invalider un mauvais<br/>
critère ; la démonstration formelle de<br/>
l'optimalité, lorsqu'elle est possible, relève<br/>
de l'enseignement supérieur.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Choisir le premier critère qui paraît simple, sans le tester</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La simplicité d'un critère ne garantit pas<br/>
son optimalité. Il est indispensable de le<br/>
tester sur des exemples et, idéalement, de<br/>
le démontrer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Coder en Python, lancer en production, et espérer que cela fonctionne</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette approche est dangereuse. Sans<br/>
analyse préalable, on risque de produire<br/>
des résultats erronés sur certains cas, et<br/>
de propager le bug en production.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Demander directement la solution à l'enseignant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette démarche n'apporte rien sur le plan de<br/>
la formation au raisonnement algorithmique.<br/>
Construire soi-même la solution est<br/>
précisément ce qu'on cherche à apprendre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Identifier le critère, tester, chercher un contre-exemple</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette démarche méthodique commence par le<br/>
critère, vérifie son comportement sur des<br/>
cas concrets, et se termine par la<br/>
recherche d'un contre-exemple éventuel.<br/>
Sans la dernière étape, on dispose d'une<br/>
heuristique sans garantie sur les cas non<br/>
testés.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q19 : Algorithme glouton et recherche exhaustive</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel est l'avantage essentiel d'un algorithme<br/>
glouton sur une <strong>recherche exhaustive</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>C'est cette rapidité qui justifie l'usage d'un<br/>
algorithme glouton, même quand il ne donne pas<br/>
l'optimum exact. Sur des données massives,<br/>
c'est souvent la seule approche réalisable.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il garantit toujours l'optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est l'inverse. La recherche exhaustive<br/>
garantit toujours l'optimum (si elle se<br/>
termine), tandis qu'un algorithme glouton<br/>
ne le garantit pas en général.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il est bien plus rapide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur des problèmes de taille moyenne ou<br/>
grande, la différence est colossale. Pour<br/>
$n = 30$, on dépasse $10^9$ opérations en<br/>
recherche exhaustive, contre quelques<br/>
dizaines à quelques centaines pour un<br/>
algorithme glouton linéaire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il est plus simple à expliquer en classe</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La simplicité pédagogique est un avantage<br/>
secondaire, mais elle n'est pas l'avantage<br/>
principal d'un algorithme glouton.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il consomme moins de mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La consommation mémoire varie selon les<br/>
implémentations et n'est pas l'avantage<br/>
principal mis en avant.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q20 : Algorithme glouton comme approximation</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lorsque l'algorithme glouton ne donne pas<br/>
l'optimum, peut-on quand même l'utiliser ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour le voyageur de commerce, par exemple, un<br/>
algorithme glouton du type « plus proche<br/>
voisin » donne souvent une tournée à environ<br/>
$25\%$ de l'optimum, en temps quadratique.<br/>
C'est un compromis très intéressant en<br/>
pratique.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Oui, comme approximation rapide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Pour de nombreux problèmes difficiles,<br/>
l'algorithme glouton donne une solution en<br/>
temps raisonnable, proche du meilleur<br/>
résultat connu. Ce compromis entre<br/>
rapidité et qualité est très intéressant en<br/>
pratique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Seulement si on retire la contrainte d'optimalité</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette formulation est imprécise. On peut<br/>
utiliser l'algorithme glouton comme<br/>
approximation, c'est-à-dire en acceptant<br/>
une qualité moindre que l'optimum, mais<br/>
sans changer la nature du problème.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, mais seulement avec un ordinateur quantique</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les algorithmes gloutons sont des<br/>
algorithmes classiques qui s'exécutent sur<br/>
des ordinateurs traditionnels. Ils n'ont<br/>
aucun rapport avec l'informatique<br/>
quantique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, jamais</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette position est trop catégorique. Un<br/>
algorithme glouton est très souvent utilisé<br/>
comme <strong>heuristique</strong> ou comme algorithme<br/>
d'approximation rapide, même quand il ne<br/>
garantit pas l'optimum.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q21 : Construire un contre-exemple</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On vous propose un problème et un algorithme<br/>
glouton. Comment démontrer que cet algorithme ne<br/>
donne <strong>pas</strong> toujours l'optimum ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un conseil utile : pour les problèmes simples,<br/>
essayez de petits exemples « piégés » avec des<br/>
asymétries, des poids très différents, ou des<br/>
bornes serrées. Un contre-exemple émerge<br/>
souvent rapidement.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Vérifier que l'algorithme termine</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La terminaison est une propriété<br/>
nécessaire mais non suffisante pour<br/>
conclure quant à l'optimalité. Un<br/>
algorithme peut terminer rapidement et<br/>
renvoyer une solution sous-optimale.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Démontrer que l'algorithme est lent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La vitesse de l'algorithme ne dit rien sur<br/>
son optimalité. Un algorithme peut être à<br/>
la fois très rapide et incapable de<br/>
trouver l'optimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Trouver un exemple où il fait pire que l'optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un seul contre-exemple suffit pour<br/>
invalider un algorithme glouton. C'est la<br/>
méthode classique de réfutation en<br/>
informatique : un cas particulier qui<br/>
contredit l'énoncé général.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Compiler le programme dans plusieurs langages différents</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le langage de programmation utilisé n'a<br/>
aucune influence sur l'optimalité du<br/>
résultat produit par l'algorithme.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q22 : Algorithme glouton et terminaison</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi un algorithme glouton <strong>termine-t-il toujours</strong> en un nombre fini d'étapes ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>C'est l'argument du <strong>variant</strong> : une<br/>
quantité entière positive qui décroît<br/>
strictement à chaque étape garantit la<br/>
terminaison. Pour un algorithme glouton, le<br/>
variant est typiquement le nombre d'éléments<br/>
candidats restants.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'il utilise une boucle <code>while</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Une boucle <code>while</code> peut très bien être<br/>
infinie. La terminaison ne dépend pas du<br/>
type de boucle utilisée, mais de<br/>
l'existence d'un variant qui décroît<br/>
strictement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que la mémoire de l'ordinateur est limitée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La limite de mémoire peut provoquer une<br/>
erreur d'exécution, mais elle ne garantit<br/>
pas la terminaison logique de l'algorithme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À chaque étape, le nombre de candidats décroît</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le nombre d'éléments candidats décroît<br/>
strictement à chaque étape. Comme c'est un<br/>
entier positif, l'algorithme s'arrête en<br/>
au plus $n$ étapes, où $n$ est le nombre<br/>
d'éléments initiaux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que tous les algorithmes terminent en informatique</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est fausse en général :<br/>
de nombreux algorithmes peuvent ne pas<br/>
terminer (boucle infinie). Un algorithme<br/>
glouton termine pour une raison précise et<br/>
structurelle, pas par principe général.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q23 : Vérifier expérimentalement l'optimalité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On a écrit un algorithme glouton pour un<br/>
nouveau problème d'optimisation. Sans pouvoir<br/>
faire de démonstration formelle, comment se<br/>
donner une <strong>bonne confiance</strong> dans le fait<br/>
qu'il donne l'optimum sur les cas pratiques ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Démarche pédagogique en NSI : tester sur des cas concrets, comparer<br/>
à une référence (recherche exhaustive ou solution optimale connue),<br/>
et chercher des contre-exemples. La démonstration formelle de<br/>
l'optimalité d'un algorithme glouton n'est pas exigée au lycée.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Augmenter la taille du problème pour voir<br/>
si cela aide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tester de plus grandes tailles ne<br/>
renseigne pas sur l'optimalité, car on n'a<br/>
plus de référence (la recherche exhaustive<br/>
devient impraticable). Pour gagner en<br/>
confiance, il faut au contraire tester sur<br/>
de <strong>petites</strong> tailles, où l'on peut<br/>
comparer à la solution exacte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Lui faire confiance s'il a été trouvé sur<br/>
Internet</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un algorithme trouvé sur Internet<br/>
n'a aucune garantie d'être optimal pour<br/>
votre variante du problème. Les conditions<br/>
précises (système monétaire, nature des<br/>
objets, etc.) modifient souvent l'optimalité<br/>
d'un critère glouton.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Lancer le programme une seule fois sur un<br/>
exemple et conclure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul exemple ne prouve rien.<br/>
C'est précisément le piège du rendu de<br/>
monnaie, qui fonctionne sur le système<br/>
euros mais échoue sur d'autres systèmes<br/>
monétaires.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Comparer à la recherche exhaustive sur de petits cas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c'est la démarche expérimentale standard. La<br/>
recherche exhaustive (par exemple en énumérant tous les<br/>
sous-ensembles possibles) garantit l'optimum, mais le nombre de cas<br/>
double à chaque élément ajouté, ce qui la rend faisable uniquement<br/>
pour de petits $n$. Si l'algorithme glouton coïncide avec la<br/>
recherche exhaustive sur tous les cas testés, on a une bonne<br/>
confiance pratique (sans pour autant disposer d'une preuve<br/>
formelle).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q24 : Quelle approche essayer en premier ?</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Face à un nouveau problème d'optimisation, quelle<br/>
approche essayer en <strong>premier</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Démarche conseillée : tester d'abord un<br/>
algorithme glouton simple, vérifier sur des cas<br/>
connus s'il donne bien l'optimum, et, si un<br/>
contre-exemple apparaît, chercher une autre<br/>
stratégie ou se contenter d'une approximation.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune méthode particulière, en essayant plusieurs idées au hasard</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Une démarche désordonnée ne permet pas de<br/>
progresser méthodiquement vers une<br/>
solution. Il vaut mieux suivre une approche<br/>
structurée comme l'algorithme glouton.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une recherche exhaustive systématique, pour être certain d'obtenir l'optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Tester toutes les combinaisons devient<br/>
rapidement impraticable dès que la taille<br/>
du problème augmente, car le nombre de cas<br/>
croît de manière exponentielle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un algorithme glouton simple, rapide à coder et tester</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est la démarche pragmatique. Beaucoup de<br/>
problèmes admettent une solution gloutonne<br/>
simple. Inutile de chercher une approche<br/>
compliquée si un algorithme glouton suffit<br/>
à donner l'optimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une approche aléatoire, sans stratégie particulière</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sans démarche structurée, on ne peut rien<br/>
apprendre du problème, et on perd toute<br/>
garantie sur la qualité de la solution<br/>
obtenue.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q25 : Conclusion sur les algorithmes gloutons</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lequel des énoncés suivants résume le mieux les<br/>
algorithmes gloutons ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Maîtriser les algorithmes gloutons, c'est<br/>
savoir reconnaître les problèmes qui s'y<br/>
prêtent (rendu de monnaie sur certains<br/>
systèmes, sac à dos fractionnaire, sélection<br/>
d'activités) et savoir détecter ceux qui<br/>
demandent une autre approche (sac à dos $0/1$,<br/>
voyageur de commerce).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils sont rapides et fonctionnent toujours</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est trop optimiste. Les<br/>
algorithmes gloutons sont rapides, mais<br/>
ils ne donnent pas toujours l'optimum sur<br/>
tous les problèmes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils sont totalement obsolètes et sans intérêt aujourd'hui</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les algorithmes gloutons gardent toute leur<br/>
pertinence, particulièrement lorsque<br/>
l'optimalité est démontrable ou lorsqu'une<br/>
approximation rapide suffit pour<br/>
l'application visée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils utilisent l'intelligence artificielle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les algorithmes gloutons sont des<br/>
algorithmes classiques et déterministes.<br/>
Ils n'ont aucun rapport avec l'apprentissage<br/>
automatique ou l'intelligence<br/>
artificielle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Rapides et simples, optimaux parfois, approchés souvent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est exactement leur place dans le paysage<br/>
algorithmique : un outil indispensable, mais<br/>
à utiliser avec discernement, en testant<br/>
systématiquement leur comportement sur des<br/>
exemples avant de leur faire confiance.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q26 : Rendre une somme avec les pièces de l'euro</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avec les pièces et billets de valeurs $1$, $2$, $5$, $10$, $20$ et<br/>
$50$, l'algorithme glouton prend à chaque étape la plus grande<br/>
valeur qui ne dépasse pas ce qui reste à rendre. Combien de pièces<br/>
ou billets rend-il pour la somme $37$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le système monétaire de l'euro est dit canonique : la stratégie<br/>
gloutonne y rend toujours le nombre minimal de pièces.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$4$, soit $20 + 10 + 5 + 2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : à chaque étape, la plus grande valeur possible<br/>
est choisie, ce qui donne $20 + 10 + 5 + 2 = 37$ en $4$ pièces ou<br/>
billets. Avec ce système, le résultat est aussi le minimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$5$, soit $20 + 10 + 5 + 2 + 0$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : recompte les termes de la décomposition, il y en a<br/>
$4$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$3$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec $3$ pièces ou billets, aucune combinaison ne<br/>
donne $37$ dans ce système.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$8$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $8$ correspondrait à des valeurs bien plus petites que<br/>
celles choisies par l'algorithme glouton.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q27 : Le critère du choix d'activités</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Plusieurs clubs demandent la salle pour des créneaux qui se<br/>
chevauchent, et l'on veut satisfaire le plus grand nombre de<br/>
demandes. Dans quel ordre l'algorithme glouton examine-t-il les<br/>
créneaux ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le choix du critère est tout l'art d'un algorithme glouton : pour<br/>
les activités, l'heure de fin est le bon, et on peut le prouver.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Par heure de fin croissante, pour libérer la salle au plus tôt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : finir au plus tôt libère la salle le plus<br/>
longtemps pour la suite. Ce critère donne toujours un nombre<br/>
maximal de créneaux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Par heure de début croissante, pour commencer au plus tôt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un créneau qui commence tôt mais dure toute la journée<br/>
bloquerait tous les autres.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Par durée croissante, pour caser le plus de créneaux courts</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un créneau court placé au milieu peut empêcher deux<br/>
créneaux plus longs qui ne se chevauchaient pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Par ordre alphabétique des clubs, pour traiter chacun équitablement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ordre des noms n'a aucun rapport avec les<br/>
chevauchements.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q28 : Le sac à dos par rapport valeur sur poids</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un sac supporte un poids de $5$. Trois objets sont<br/>
disponibles : A (poids $3$, valeur $60$), B (poids $2$, valeur $50$) et C (poids $4$, valeur $70$). L'algorithme glouton classe les objets par<br/>
rapport valeur sur poids décroissant et prend chaque objet qui<br/>
tient encore. Quelle valeur totale obtient-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le rapport valeur sur poids est le critère glouton usuel du sac à<br/>
dos. Il ne garantit pas l'optimum : selon la capacité, une autre<br/>
combinaison peut valoir davantage.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$110$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'ordre des rapports est B puis A puis C. L'algorithme<br/>
prend B puis A, qui remplissent le sac, pour une valeur de $110$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$70$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : suis l'ordre des rapports valeur sur poids et vérifie<br/>
le poids restant avant chaque objet.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$50$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette valeur ne correspond pas aux objets pris dans<br/>
l'ordre glouton.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$130$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette combinaison dépasse le poids supporté par le sac.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q29 : Le glouton et les pièces de l'euro</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avec les pièces et billets de l'euro, l'algorithme glouton de rendu<br/>
de monnaie donne-t-il toujours le nombre minimal de pièces ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'optimalité d'un glouton dépend du problème et de ses données :<br/>
vraie pour l'euro, fausse pour d'autres systèmes monétaires.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Oui, ce système monétaire a été conçu pour cela</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les valeurs $1$, $2$, $5$, $10$, $20$, $50$<br/>
forment un système dit canonique, où prendre la plus grande<br/>
pièce possible est toujours optimal.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, il faut tester toutes les combinaisons pour être sûr</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec ce système précis, l'optimalité du glouton est<br/>
démontrée ; la recherche exhaustive est inutile.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, parce qu'un algorithme glouton est toujours optimal</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la conclusion est bonne mais la raison fausse ;<br/>
d'autres systèmes de pièces mettent le glouton en défaut.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, le glouton rend parfois une pièce de trop</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cela arrive avec des systèmes comme $1$, $3$, $4$, pas<br/>
avec celui de l'euro.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q30 : Les créneaux retenus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Six créneaux sont demandés pour la salle : $[1, 4]$, $[3, 5]$,<br/>
$[0, 6]$, $[5, 7]$, $[3, 9]$ et $[6, 10]$. L'algorithme glouton<br/>
trie par heure de fin croissante et retient chaque créneau qui<br/>
commence après la fin du dernier retenu. Quels créneaux retient-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Deux créneaux sont retenus, et aucune sélection n'en contient<br/>
davantage : le critère de la fin au plus tôt est optimal.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$[1, 4]$ et $[5, 7]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $[1, 4]$ finit en premier et est retenu ;<br/>
$[3, 5]$ et $[0, 6]$ le chevauchent ; $[5, 7]$ commence après<br/>
$4$ et est retenu ; $[3, 9]$ et $[6, 10]$ chevauchent $[5, 7]$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$[0, 6]$ et $[6, 10]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $[0, 6]$ n'est pas le premier à finir ; $[1, 4]$ le<br/>
précède et l'exclut.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$[1, 4]$, $[5, 7]$ et $[6, 10]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $[6, 10]$ commence à $6$, avant la fin de $[5, 7]$ à<br/>
$7$, les deux se chevauchent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$[3, 5]$ et $[5, 7]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $[1, 4]$ finit avant $[3, 5]$ et est examiné en<br/>
premier.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q31 : Pourquoi pas le plus court d'abord</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour le choix d'activités, pourquoi le critère « le créneau le plus<br/>
court d'abord » n'est-il pas optimal ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un contre-exemple suffit à écarter un critère glouton. Trouver le<br/>
bon critère, puis prouver qu'il marche toujours, sont deux étapes<br/>
distinctes.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un créneau court à cheval sur deux longs les élimine tous deux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avec $[1, 5]$, $[4, 6]$ et $[5, 9]$, le plus<br/>
court, $[4, 6]$, est pris en premier et empêche les deux autres,<br/>
alors que $[1, 5]$ et $[5, 9]$ étaient compatibles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un créneau court rapporte moins qu'un créneau long au classement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tous les créneaux comptent pour un, la durée n'a pas de<br/>
valeur en soi.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les créneaux courts sont toujours en fin de journée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : rien ne lie la durée d'un créneau à sa position.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le tri par durée est trop coûteux à calculer pour de longues listes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : trier par durée coûte autant que trier par heure de<br/>
fin ; le problème est le résultat, pas le coût.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q32 : Les arrêts d'une voiture électrique</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Une voiture a $300$ km d'autonomie et part batterie pleine. Des<br/>
bornes se trouvent aux kilomètres $100$, $180$, $250$, $400$ et<br/>
$520$, l'arrivée au kilomètre $600$. L'algorithme glouton va à<br/>
chaque fois jusqu'à la dernière borne atteignable. Où<br/>
s'arrête-t-elle ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Aller aussi loin que possible à chaque étape minimise le nombre<br/>
d'arrêts : c'est un glouton dont l'optimalité se démontre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Au kilomètre $250$, puis au kilomètre $520$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : depuis $0$, la dernière borne atteignable sous<br/>
$300$ km est $250$ ; depuis $250$, on atteint jusqu'à $550$,<br/>
d'où un arrêt à $520$, puis l'arrivée. Deux arrêts, c'est le<br/>
minimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au kilomètre $100$, puis au kilomètre $400$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : s'arrêter à la première borne n'est pas glouton, et<br/>
$400$ est hors de portée depuis $100$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au kilomètre $250$, puis au kilomètre $400$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : depuis $250$, la borne $520$ est encore atteignable, et<br/>
l'algorithme choisit la plus lointaine.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au kilomètre $180$, puis au kilomètre $400$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : depuis $0$, $250$ est atteignable, donc $180$ n'est pas<br/>
le choix glouton.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q33 : Pourquoi trier avant de choisir</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Beaucoup d'algorithmes gloutons commencent par trier les données<br/>
selon le critère de choix. Qu'y gagne-t-on ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tri puis parcours : le schéma donne un coût en $n \log n$ dominé par<br/>
le tri, bien plus faible qu'une recherche du meilleur élément à<br/>
chaque étape.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le meilleur choix local devient le prochain élément de la liste</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : une fois trié, il suffit de parcourir la liste<br/>
dans l'ordre ; chaque étape se fait en temps constant au lieu de<br/>
rechercher le meilleur élément à chaque fois.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le résultat devient optimal, quel que soit le problème</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : trier ne change pas la qualité des choix, seulement<br/>
leur coût.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les données triées occupent moins de mémoire une fois rangées</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : trier ne réduit pas la taille des données.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>On évite d'avoir à parcourir la liste après le tri</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la liste est parcourue une fois après le tri ; ce qui<br/>
est évité, ce sont les recherches répétées.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q34 : Une seule solution construite</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de solutions candidates un algorithme glouton construit-il<br/>
avant de rendre sa réponse ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Glouton veut dire pressé : on avance sans jamais revenir en<br/>
arrière ni comparer avec une autre solution.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une seule, bâtie choix après choix</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque étape fixe un choix définitif. La<br/>
solution rendue est la seule explorée, ce qui rend l'algorithme<br/>
rapide mais parfois non optimal.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Toutes, pour retenir la meilleure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la recherche exhaustive, dont le coût explose<br/>
avec la taille des données.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Deux, pour comparer et garder la meilleure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a aucune comparaison entre solutions, seulement<br/>
des choix locaux successifs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Autant que de données en entrée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le nombre de données fixe le nombre d'étapes, pas le<br/>
nombre de solutions construites.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q35 : Trois critères pour le sac à dos</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour remplir un sac à dos de capacité limitée avec des objets de<br/>
poids et de valeurs variés, trois critères gloutons sont possibles :<br/>
la valeur la plus grande d'abord, le poids le plus petit d'abord, ou<br/>
le rapport valeur sur poids le plus grand d'abord. Que peut-on en<br/>
dire ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le sac à dos est l'exemple type d'un problème où le glouton est<br/>
une bonne heuristique sans être une méthode exacte.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Aucun ne garantit l'optimum, le rapport étant souvent le meilleur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque critère a ses contre-exemples. Le rapport<br/>
valeur sur poids donne souvent de bons résultats, mais seule une<br/>
recherche exhaustive assure l'optimum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le critère de la valeur est toujours optimal, quel que soit le sac</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un objet très lourd et précieux peut remplir le sac<br/>
alors que plusieurs petits objets vaudraient plus ensemble.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le critère du poids est toujours optimal, quels que soient les objets</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : prendre les objets légers peut remplir le sac de<br/>
choses sans valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les trois critères donnent toujours le même résultat</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ils peuvent choisir des objets différents et aboutir à<br/>
des valeurs différentes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q36 : Affirmer qu'un glouton est optimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un algorithme glouton a donné la solution optimale sur dix exemples<br/>
testés. Que faut-il pour affirmer qu'il est optimal en général ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un glouton correct se démontre ; un glouton faux se réfute par un<br/>
contre-exemple. Les tests ne font que suggérer.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une preuve que chaque choix local reste compatible avec un optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c'est l'argument d'échange classique. Des<br/>
exemples réussis ne prouvent rien ; un seul contre-exemple<br/>
suffirait à réfuter.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Cent exemples de plus, tous réussis, sur des données variées</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun nombre d'exemples ne remplace une preuve ; le<br/>
contre-exemple peut être le suivant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Que l'algorithme soit rapide sur tous les exemples testés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la vitesse d'un glouton est acquise ; c'est la qualité<br/>
de sa réponse qui est en question.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Que les exemples testés soient de grande taille et nombreux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la taille des exemples ne change rien au raisonnement.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q37 : Un système de pièces qui piège le glouton</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avec les pièces de valeurs $1$, $4$ et $6$, on rend la somme $8$.<br/>
Combien de pièces donne l'algorithme glouton, et quel est le nombre<br/>
minimal de pièces ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Changer les valeurs des pièces suffit à faire échouer le glouton :<br/>
c'est la différence entre un système canonique et un système qui ne<br/>
l'est pas.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Glouton $3$ pièces, minimum $2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le glouton donne $6 + 1 + 1$, soit $3$ pièces,<br/>
alors que $4 + 4$ n'en utilise que $2$. Ce système n'est pas<br/>
canonique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Glouton $2$ pièces, minimum $3$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le minimum ne peut pas dépasser ce que donne le<br/>
glouton ; les deux nombres sont inversés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$3$ pièces dans les deux cas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $4 + 4 = 8$ n'utilise que $2$ pièces.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$2$ pièces dans les deux cas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le glouton commence par la pièce de $6$ et aboutit à<br/>
$6 + 1 + 1$, soit $3$ pièces.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q38 : Toujours la ville la plus proche</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour visiter plusieurs villes et revenir au départ en parcourant le<br/>
moins de kilomètres possible, un algorithme glouton va à chaque<br/>
étape vers la ville non visitée la plus proche. Que vaut cette<br/>
méthode ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le voyageur de commerce n'a pas d'algorithme efficace connu ; le<br/>
plus proche voisin est une heuristique, utile faute de mieux.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Rapide, mais le circuit peut être bien plus long que le meilleur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les premières étapes, courtes, peuvent laisser<br/>
pour la fin une ville très éloignée, et le retour coûte alors<br/>
plus que tout le reste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle donne toujours le circuit le plus court possible</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : des contre-exemples simples existent, avec quatre ou<br/>
cinq villes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle ne termine jamais, les villes proches étant revisitées</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque ville visitée est écartée, et l'algorithme<br/>
termine en autant d'étapes que de villes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle est aussi coûteuse que l'examen de tous les circuits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : elle est bien plus rapide ; c'est son résultat qui<br/>
n'est pas garanti.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q39 : Le plus précieux d'abord</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un sac supporte un poids de $10$. Trois objets : A pèse $10$ et vaut<br/>
$60$, B pèse $5$ et vaut $40$, C pèse $5$ et vaut $40$. Que donne<br/>
le glouton qui prend l'objet de plus grande valeur en premier, et<br/>
quel est l'optimum ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un seul exemple suffit à montrer que le critère de la valeur n'est<br/>
pas optimal pour le sac à dos.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>A pour $60$, alors que B et C ensemble valent $80$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : A remplit le sac à lui seul. Le glouton par<br/>
valeur rend $60$, tandis que B et C, qui tiennent ensemble,<br/>
rendent $80$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>B et C pour $80$, ce qui est aussi l'optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : trié par valeur, A vient en premier et est pris<br/>
puisqu'il tient dans le sac.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>A puis B pour $100$, le poids n'étant vérifié qu'à la fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après A, le sac est plein, B ne tient plus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>A pour $60$, ce qui est aussi l'optimum</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : B et C valent $80$ ensemble, pour un poids de $10$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmes gloutons — Q40 : Le nombre de combinaisons à examiner</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour résoudre exactement un sac à dos à $20$ objets, la recherche<br/>
exhaustive examine tous les sous-ensembles d'objets. Combien y en<br/>
a-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le nombre de sous-ensembles double à chaque objet ajouté : la<br/>
recherche exhaustive devient vite impraticable, d'où le recours<br/>
aux algorithmes gloutons.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$2^{20}$, soit $1\,048\,576$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque objet est pris ou non, et les choix se<br/>
combinent : $2^{20}$ sous-ensembles, environ un million. C'est ce coût qui<br/>
rend le glouton attrayant malgré ses limites.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$20^2$, soit $400$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le nombre de sous-ensembles n'est pas un carré mais une<br/>
puissance de deux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$2 \times 20$, soit $40$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : deux choix par objet se multiplient, ils ne<br/>
s'additionnent pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$20$, un par objet</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un sous-ensemble peut contenir plusieurs objets ; il y<br/>
en a bien plus que d'objets.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
