0% ont trouvé ce document utile (0 vote)
30 vues2 pages

Chapitre 16

Le chapitre 16 aborde les algorithmes gloutons, qui choisissent des solutions optimales locales pour résoudre des problèmes d'optimisation, bien qu'ils ne garantissent pas toujours la solution optimale globale. Il illustre ce concept avec des exemples tels que le problème du voyageur de commerce et le rendu de monnaie, où la stratégie gloutonne peut parfois offrir des solutions rapides et efficaces. Des exercices pratiques sont également proposés pour appliquer ces concepts, notamment en utilisant des outils comme Python et des tableurs.

Transféré par

scrapule10
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues2 pages

Chapitre 16

Le chapitre 16 aborde les algorithmes gloutons, qui choisissent des solutions optimales locales pour résoudre des problèmes d'optimisation, bien qu'ils ne garantissent pas toujours la solution optimale globale. Il illustre ce concept avec des exemples tels que le problème du voyageur de commerce et le rendu de monnaie, où la stratégie gloutonne peut parfois offrir des solutions rapides et efficaces. Des exercices pratiques sont également proposés pour appliquer ces concepts, notamment en utilisant des outils comme Python et des tableurs.

Transféré par

scrapule10
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre16

Algorithmes gloutons

16.1 Concepts généraux - Définition


Un algorithme glouton (greedy algorithm en anglais) est un algorithme qui suit le principe de faire,
étape par étape, un choix optimum local dans l’espoir d’obtenir un résultat optimum global.
Des fois l’algorithme glouton correspond à la solution optimale d’un problème, mais souvent ce n’est
pas le cas. Il s’agit alors d’un compromis, sans être la solution idéale, l’algorithme glouton apporte une
solution proche de celle-ci et dans un temps raisonnable. C’est donc une méthode pour trouver des
solutions aux problèmes d’optimisation d’un algorithme.

16.2 Un exemple : le voyageur de commerce


Un employeur impose a son représentant de commerce, basé à Périgueux, de voyager dans quatre
villes voisines : Bordeaux, Guéret, Toulouse et Clermont-Ferrand et que cela lui coûte le moins cher
possible afin de minimiser les coûts. Cela revient donc à minimiser la distance totale parcourue par le
voyageur. Si le représentant par de Périgueux, il souhaite bien évidemment y revenir à la fin.

Périgueux Bordeaux Guéret Toulouse Clermont-F.


Périgueux 137 245 274 251
Bordeaux 137 297 245 375
Guéret 245 297 374 177
Toulouse 274 245 374 376
Clermont-F. 251 375 177 376

Le problème se ramène à trouver un ordre de visite des quatre villes pour lequel la somme des
distances données est aussi petite que possible. Pour vous montrer à quel point cela peut-être fastidieux,
vous le ferez dans le premier exercice de la liste en fin de chapitre. Cela devient inenvisageable pour
une liste de quelques villes supplémentaires. Pour vous donner un ordre d’idée, pour 15 villes à visiter
il y a 43 milliards de possibilités, à partir de 71 villes, il y a plus de combinaisons que d’atomes dans
l’Univers !
La stratégie de l’algorithmie gloutonne appliquée à ce problème est de dire qu’une fois dans une
ville, le meilleur choix pour la prochaine ville est d’aller à celle qui est le plus près.
La solution obtenue n’est pas celle qui est l’idéale, le chemin le plus court réel est différent. Toutefois, la
solution obtenue est plutôt correcte pour le problème posé (on ne trouve pas la route la plus longue !),
et surtout elle a été trouvée très rapidement sans passer en revue toutes les solutions possibles. Voir
deuxième exercice de la liste et comparer le temps que cela vous a pris par rapport à faire le premier.

16.3 Problème du rendu de monnaie


Dans certains cas, la stratégie gloutonne donne toujours la solution idéale. Le système de monnaie
de l’euro a d’ailleurs était découpé afin de satisfaire ce problème : les valeurs des billets et des pièces
en circulation ont été choisies pour cela.

92
Spécialité NSI 2024-2025

Le problème est celui d’un commerçant qui doit rendre la monnaie a un de ses clients. Par exemple
le produit acheté vaut 11e et le client paie avec un billet de 20e. Le commerçant doit lui rendre 9e,
mais comment doit-il s’y prendre en utilisant le moins de billets et de pièces ?
L’approche gloutonne de ce problème et de dire qu’il doit donner la plus grande valeur possible et le
maximum de fois possibles avant de passer à la valeur inférieure.
Dans ce cas concret, cela suppose que le marchand possède à sa disposition toutes les valeurs de pièces
et de billets possibles. (Laissons les centimes de côté volontairement.)

Etape Encore à rendre Utilisé


1 9 1 billet de 5e
2 4 1 pièce de 2e
3 2 1 pièce de 2e
4 0 /

16.4 Exercices
Exercice 97
Créer un fichier sous un tableur (OpenOffice Calc) et calculer toutes les combinaisons possibles de
trajet. Si vous êtes curieux, lancer un chronomètre et à la fin de l’exercice noter le temps mis pour le
résoudre. Quelle est la solution du problème du voyageur ?

Exercice 98
Donner le parcours à suivre obtenu avec une approche du problème par la stratégie d’un algorithme
glouton. Si vous êtes curieux, lancer un nouveau chronomètre et comparer ! Pour un ordinateur avec
un algorithme, c’est bien évidement le même constat.

Exercice 99
Créer une fonction Python qui donne la solution au problème de rendu de monnaie

euros = [ 500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1 ]

def monnaie_a_rendre(somme):
'''combien de pièces-billets faut-il utiliser'''

Il faut partir sur une boucle non-bornée. En effet, il y a de la monnaie à rendre tant que la somme
encore à rendre n’est pas égale à 0.

Exercice 100
Les problèmes de remplissage de sac (Bin packing en anglais dans le texte) sont aussi un classique
de problèmes traités par une approche gloutonne. Un randonneur possède un sac à dos, mais la masse
qu’il peut transporter est limitée. Sur une liste d’objets à prendre, il faut affecter une utilité (choisie
arbitrairement, votre choix ne sera pas forcément le mien) à des objets ayant une certaine masse.

Objet livre jumelles couverture eau nourriture lampe matelas cartes


masse (kg) 0.3 1.3 1 3 4.3 0.5 1.5 0.5
utilité 2 9 6 20 15 10 4 8

Pour illustrer le problème, mettons que vous ne pouvez transporter que 8 kg. Quelle est la liste optimale
d’objets à prendre ? Refaire de nouveaux le problème mais en utilisant vos propres coefficients d’utilité,
votre masse maximale transportable.

Chapitre 16 page 93 OT

Vous aimerez peut-être aussi