<?xml version="1.0" encoding="UTF-8"?>

<upm-export>
	<title>Enseignement de l&#039;informatique et du numérique au lycée Boissy d&#039;Anglas</title>
	<link>https://icn-isn-boissy.yj.fr/wp</link>
	<description></description>
	<pubDate>Wed May 6 11:56:31 2026 / +0000  GMT</pubDate>
	<generator>Universal Post Manager 1.1.2 [ www.ProfProjects.com ] </generator>
	<language></language>
	
			<item>
			<title>Algorithmes gloutons</title>
			<link>https://icn-isn-boissy.yj.fr/wp/?p=2837</link>
			<pubDate>Wed May 6 11:56:31 2026 / +0000  GMT</pubDate>
			<guid isPermaLink="false">https://icn-isn-boissy.yj.fr/wp/?p=2837</guid>
			<content-encoded><![CDATA[<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p>Présentation des d'algorithmes gloutons avec exemples et TD. cet article est une copie d'un article du site <a href="https://www.math93.com/">www.math93.com/</a> , vous pouvez le voir <a href="https://www.math93.com/lycee/nsi-1ere/nsi-1ere/146-pedagogie/lycee/nsi/1009-nsi-numerique-et-sciences-informatiques-algorithmes-gloutons.html">ici </a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Voici une petite vidéo sur les <a href="https://peertube.lyceeconnecte.fr/videos/watch/8a121d63-49c7-49d9-aab0-5d823b44b11d" data-type="URL" data-id="https://peertube.lyceeconnecte.fr/videos/watch/8a121d63-49c7-49d9-aab0-5d823b44b11d" target="_blank" rel="noreferrer noopener">algorithmes Glouton</a></p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Présentation de la notion d'algorithme glouton.<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Les problèmes d'optimisation.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Résoudre un problème d'optimisation : les algorithmes gloutons</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list --></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le problème du rendu de monnaie.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le TD sur les algorithmes gloutons et le rendu de monnaie.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">1. Présentation de la notion d'algorithme glouton</h2>
<!-- /wp:heading -->

<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:heading {"textAlign":"left","level":3} -->
<h3 class="wp-block-heading has-text-align-left">1.1. Les problèmes d'optimisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>L'optimisation</strong> est une branche des mathématiques cherchant à <strong>modéliser</strong>, à <strong>analyser</strong> et à <strong>résoudre</strong> les problèmes qui consistent à <strong>minimiser ou maximiser</strong> une fonction sur un ensemble.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les <strong>problèmes d'optimisation</strong> classiques sont par exemple :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>la <strong>répartition optimale de tâches</strong> suivant des critères précis (emploi du temps avec plusieurs contraintes) ;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>le problème du <strong>rendu de monnaie</strong> ;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>la recherche d'<strong>un plus court chemin dans un graphe ;</strong></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>le problème du <strong>voyageur de commerce</strong>.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:heading {"textAlign":"left","level":3} -->
<h3 class="wp-block-heading has-text-align-left">1.2. Résoudre un problème d'optimisation : les algorithmes gloutons</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>De nombreuses techniques informatiques sont susceptibles d'apporter une solution exacte ou approchée à ces problèmes.</p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Recherche de toutes les solutions</strong><br>La technique la plus basique pour résoudre ce type de problème d'optimisation consiste à<strong> énumérer de façon exhaustive toutes les solutions possibles</strong>, puis à choisir la meilleure. Cette approche par <strong>force brute</strong>, impose souvent un coût en temps trop important pour être utilisée.<br>&nbsp;&nbsp;&nbsp;&nbsp;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Les algorithmes gloutons</strong><br>Un <strong>algorithme glouton</strong> (<em>greedy algorithm</em>) est un algorithme qui suit le principe de faire, étape par étape, un choix optimum local.<br>Au cours de la construction de la solution, l'algorithme résout une partie du problème puis se focalise ensuite sur le sous-problème restant à résoudre.<br>La <strong>méthode gloutonne</strong> consiste à choisir des solutions locales optimales d'un problème dans le but d'obtenir une solution optimale globale au problème.<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Le principal avantage des algorithmes gloutons est leur <strong>facilité de mise en œuvre</strong>.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le principal défaut est qu'il ne renvoie <strong>pas toujours la solution optimale</strong> nous le verrons.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Dans certaines situations dites <strong>canoniques</strong>, il arrive qu'ils renvoient non pas un optimum mais l'optimum d'un problème</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">2. Le problème du rendu de monnaie</h2>
<!-- /wp:heading -->

<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p>Un achat dit en espèces se traduit par un échange de pièces et de billets. Dans la suite, les pièces désignent indifféremment les véritables pièces que les billets.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Supposons qu'un achat induise un rendu de 49 euros on considérant pour simplifier que les 'pièces' prennent les valeurs 1, 2, 5, 10, 20, 50, 100 euros. Quelles pièces peuvent être rendues ?</p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>49=4×10+1×5+2×2</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p>soit 7 pièces au total<br>(Quatre pièces de 10 euros, 1 pièce de 5 euros et deux pièces de 2 euros.) ou 49=9×5+2×2&nbsp; soit 11 pièces au total ou 49=9×5+4×1&nbsp; soit 13 pièces au total ou 49=49×1</p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>&nbsp; soit 49 pièces au total</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p>Le problème du rendu de monnaie consiste à déterminer la solution avec le <strong>nombre minimal de pièces</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Rendre 49 euros avec un minimum de pièces est un problème d'optimisation. En pratique, tout individu met en œuvre un algorithme glouton.</p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Il choisit d'abord la plus grandeur valeur de monnaie, parmi 1, 2, 5, 10, contenue dans 49 euros.<br>En l'occurrence, quatre fois une pièce de 10 euros.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>La somme de 9 euros restant à rendre, il choisit une pièce de 5 euros,</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Puis deux pièces de 2 euros.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:image {"id":4105,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://icn-isn-boissy.yj.fr/wp/wp-content/uploads/2023/09/glou1.png"><img src="https://icn-isn-boissy.yj.fr/wp/wp-content/uploads/2023/09/glou1.png" alt="" class="wp-image-4105"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p><a href="https://www.math93.com/images/images_doc/nsi/rendu-monnaie-exemple.PNG"></a></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Solution optimale et système canonique du rendu de monnaie</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cette stratégie gagnante pour la somme de 49 euros l'est-elle pour n'importe quelle somme à rendre ?</p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Un système canonique<br></strong><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>On peut montrer que l'<strong>algorithme glouton du rendu de monnaie</strong> renvoie une solution optimale pour le système monétaire français<br>{1,2,5,10,20,50,100}</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Pour cette raison, un tel système de monnaie est qualiﬁé de <strong>canonique</strong>.<br></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Des systèmes non canoniques</strong></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>D 'autres systèmes ne sont pas canoniques. L'algorithme glouton ne répond alors pas de manière optimale.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Par exemple, avec le système {1,3,6,12,24,30},l'algorithme glouton répond en proposant le rendu : 49=30+12+6+1 soit 4 pièces alors que la solution optimale est 49=2×24+1</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>soit 3 pièces.&nbsp;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">3. Le TD sur les algorithmes gloutons et le rendu de monnaie</h2>
<!-- /wp:heading -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Prérequis au TD</strong><!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Python</strong> : liste, parcours de listes.<br>&nbsp;&nbsp;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p>On cherche à implémenter un algorithme glouton de <strong>rendu de monnaie</strong> en ne considérant que des valeurs entières des pièces du système.<br>Par ailleurs, la plus petite pièce du système sera toujours 1, on est ainsi certain de pouvoir rendre la monnaie quelque soit la somme choisie.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Fonctionnement de l'algorithme glouton du rendu de monnaie</h3>
<!-- /wp:heading -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>On choisit un <code>système</code> de monnaies, par exemple&nbsp; systeme=[1,2,5,10,20,50,100]</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On choisit une <code>valeur</code>, par exemple valeur=49 euros .</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On choisit la plus grande 'pièce' du système inférieure à la valeur et on l'ajoute à la liste des pièces à rendre.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On calcule le reste à rendre et on recommence jusqu'à obtenir un reste à rendre nul.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:image {"id":4106,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://icn-isn-boissy.yj.fr/wp/wp-content/uploads/2023/09/glou2.png"><img src="https://icn-isn-boissy.yj.fr/wp/wp-content/uploads/2023/09/glou2.png" alt="" class="wp-image-4106"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>&nbsp;<a href="https://www.math93.com/images/images_doc/nsi/rendu-monnaie-exemple.PNG"></a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Exercice 1</strong></p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Écrire une une fonction python qui reçoit deux arguments – la somme à rendre et le système de monnaie – et qui renvoie la liste des pièces choisies par l'algorithme glouton.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Tester votre fonction avec les valeurs et les systèmes proposés dans les exemples du cours ci-dessus.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Inventez un <strong>système non canonique</strong> différent de celui de l'exemple (mais toujours de valeur minimale 1) et trouver un exemple qui le prouve.<br>Votre fonction devra donc donner une solution mais qui n'est pas optimale.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Complément : créer un programme (ou une autre fonction) qui va afficher toutes les informations suivantes :<br>49=4×10+1×5+2×2<br>Soit <em>7 pièces au total</em><br>C'est à dire : <em>Quatre pièces de 10 euros, 1 pièce de 5 euros et deux pièces de 2 euros</em>.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p>Aide pour l'exercice 1:</p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Etape 1</strong><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Définissons le système de pièces à l'aide d'un tableau nommé&nbsp; <code>systeme</code> constitué des valeurs des pièces classées par valeurs croissantes (de plus petite pièce 1).</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On définit aussi une valeur à tester, les 49 euros de l'exemple ci-dessus, dans la variable <code>valeur</code>.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ainsi que l'indice <code>i</code> de la plus grande des pièces de <code>systeme</code>.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:code -->
<pre class="wp-block-code"><code># valeurs des pièces du système choisi
systeme = &#91;1,2,5,10,20,50,100]
# valeur à tester (par exemple 49 euros)
valeur=49
# indice de la première pièce à comparer à la somme à rendre
i = len(systeme) - 1
</code></pre>
<!-- /wp:code -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Etape 2 : Fonctionnement de l'algorithme</strong><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>On cherche à déterminer les pièces à rendre pour la variable <code>valeur</code>.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Initialisations<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>La somme à rendre à rendre est initialement stockée dans la variable <code>somme_a_rendre</code>. On l'initialise donc à&nbsp; <code>valeur</code>.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>liste_pieces</code>, la liste des pièces à rendre est initialisée à une liste vide</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>i = len(systeme) - 1</code> : indice de la première pièce à comparer à la somme à rendre</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On boucle tant que <code>somme_a_rendre &gt; 0</code><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>La variable <code>piece</code> prend la valeur de la pièce de <code>systeme</code> d'indice <code>i</code></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Si <code>somme_a_rendre &lt; piece</code><br><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Alors <code>i</code> pend la valeur <code>i-1</code></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Sinon<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>alors on ajoute la&nbsp;<code>piece</code> à la liste des pièces à rendre <code>liste_pieces</code></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>on enlève la valeur de <code>piece</code> de <code>somme_a_rendre</code></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On renvoie la liste : <code>liste_pieces</code></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p><strong>Exercice 2</strong></p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>On cherche maintenant à généraliser notre algorithme avec le système de pièces et de billets utilisées en Europe et des valeurs décimales.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On va donc considérer un système composé de pièces et de billets :<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Les pièces (en euros) : 0,01 - 0,02&nbsp; - 0,05 - 0,10 - 0,20 - 0,50 - 1 - 2 ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Les billets (en euros)&nbsp; : 5 - 10 - 20 - 50 - 100 - 200 - 500.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Modifier donc votre programme afin qu'il affiche le nombre les pièces à rendre et les billets.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Tester les avec plusieurs exemples.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Et si il n'y avait ni billet de 5, ni billet de 10 euros.<br>Montrer avec un exemple bien choisi que la solution donnée par l'algorithme n'est pas optimale</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>Exercice 3 - Une pièce de 7 euros</strong></p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:list -->
<ul><!-- wp:list-item -->
<li>On peut se demander pourquoi il n'y a pas de pièce de 7 euros par exemple.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>En fait c'est parce que si tel était le cas, l'algorithme glouton de rendu de monnaie ne serait plus optimal.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div>
<!-- /wp:group -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Tester votre algorithme en ajoutant une pièce de 7 euros dans le système.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Trouver un exemple qui renvoie une solution qui n'est pas optimale.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->]]></content-encoded>
			<excerpt-encoded><![CDATA[]]></excerpt-encoded>
			<wp-post_id>2837</wp-post_id>
			<wp-post_date>2020-09-14 16:33:11</wp-post_date>
			<wp-post_date_gmt>2020-09-14 14:33:11</wp-post_date_gmt>
				</item>
</upm-export>
