Vous êtes sur la page 1sur 6

page 1

Chapitre 1 : Mthodes gloutonnes

Chapitre 1 : Mthodes gloutonnes


1. Rsolution dun problme
1.1. Algorithme
Spcification dun schma de calcul, sous forme dune suite (finie) doprations lmentaires obissant un
enchanement dtermin.
1.2. Mthodologie
Llaboration dun programme qui rsout un problme suit ces phases :
Analyser et poser le problme : identifier les objectifs et les paramtres.
Modliser formellement le problme : choisir les variables et exprimer les relations (mathmatiques) entre
elles.
Rsoudre le problme : dfinir un algorithme. On peut alors faire les preuves de correction, de terminaison,
doptimalit et faire les calculs de complexit.
Coder lalgorithme : crire un programme.
1.3. Efficacit dun algorithme
Comment mesurer lefficacit dun algorithme ?
La complexit des algorithmes cest ltude de lefficacit compare des algorithmes. On mesure ainsi le temps
et aussi lespace ncessaire un algorithme pour rsoudre un problme.
Plusieurs complexits peuvent tre values :
Complexit en temps : il s'agit de savoir combien de temps prendra l'excution d'un algorithme.
Complexit en espace : il s'agit de savoir combien d'espace mmoire occupera l'excution de l'algorithme.
Remarque : Gnralement, on s'intresse essentiellement la complexit en temps (ce qui n'tait pas forcment
le cas quand les mmoires coutaient cher).
Il existe trois approches :
a. Approche empirique : tude exprimentale -a posteriori- : on limplante puis on lexcute sur diffrents
exemplaires du problme (lexcuter avec des donnes varies), prenant soin de mesurer prcisment la
quantit de ressource(s) consomme(s) (le temps dexcution et/ou lespace mmoire).
(+) Evaluation prcise de lefficacit
(-) Ncessite limplantation de lalgorithme
(-) Dpend du talent du programmeur, du matriel (cadence du CPU, mmoire vive, cache), du logiciel
(langage, compilateur)
(-) Restreint un nombre relativement petit dexemplaires, surtout de taille petite moyenne. Les essais
peuvent tre faits seulement sur un ensemble limit de donnes
b. Approche thorique : Etude formelle (mathmatique) -a priori- : pour pallier aux inconvnients de la
mthode exprimentale, on peut utiliser la mthode formelle. On exprime mathmatiquement la
consommation de ressource(s) en fonction de la taille des exemplaires. La mthode formelle consiste non pas
la mesure en unit de temps mais faire le dcompte des instructions de base excutes par lalgorithme.
(+) Pas besoin dimplanter lalgorithme
(+) Indpendant du programmeur, du langage et de lordinateur
(+) Sapplique lensemble des exemplaires de tailles varies
(-) Ne donne quun ordre de grandeur de lefficacit ( une constante multiplicative prs)
Remarque : Le dcompte dinstructions peut savrer fastidieux effectuer si on tient compte des diffrents
types dinstructions (accs un tableau, E/S, appels et retours de fonctions, oprations arithmtiques), cest
pourquoi on considre seulement certains types doprations (ex. affectations, comparaisons).
c. Approche hybride : on dtermine la fonction par lapproche thorique puis ses paramtres numriques par
lapproche empirique.
(+) Evaluation prcise de lefficacit
(+) Pas ncessit dvaluer empiriquement des exemplaires de trs grande taille
(-) Il faut quand mme rsoudre un bon nombre dexemplaires
Matire : Mthodes Algorithmiques (1re anne Master Informatique Architectures Distribues)

Anne universitaire 2014/2015

Chapitre 1 : Mthodes gloutonnes

page 2

2. Introduction aux algorithmes gloutons (greedy algorilhms en anglais)


La rsolution dun problme algorithmique peut parfois se faire laide de techniques gnrales paradigmes
qui ont pour avantage dtre applicables un grand nombre de situations. Parmi ces mthodes on peut citer par
exemple le fameux principe diviser pour rgner ou encore la programmation dynamique. Les algorithmes gloutons
(appels aussi algorithmes voraces), que lon rencontre principalement pour rsoudre des problmes
doptimisation, constituent lune de ces techniques gnrales de rsolution.
2.1. Principe
Lors de la rsolution dun problme doptimisation, la construction dune solution se fait souvent de manire
squentielle, lalgorithme faisant chaque tape un certain nombre de choix.
Le principe est donc de partir d'une solution incomplte (ventuellement totalement indtermine) que l'on
complte de proche en proche en effectuant des choix dfinitifs : chaque tape, on traite (on mange ) une
partie des variables sur lesquelles on ne revient plus.
Le principe glouton consiste faire le choix qui semble le meilleur sur le moment (choix local), sans se proccuper
des consquences dans lavenir, et sans revenir en arrire. Autrement dit, il fait un choix optimal localement (il
faut donc tre capable d'valuer une "meilleure dcision" chaque tape), dans lespoir que ce choix mnera la
solution optimale globalement.
Un algorithme glouton est donc un algorithme qui ne se remet jamais en question et qui se dirige le plus
rapidement possible vers une solution. Aveugl par son apptit dmesur, le glouton nest pas sr darriver une
solution optimale, mais il fournit un rsultat rapidement.
Pour que la mthode gloutonne ait une chance de fonctionner, il faut que le choix local aboutisse un problme
similaire plus petit.
Les algorithmes gloutons sont ceux qui trouvent une solution parmi plusieurs possibles, comparables selon un
critre global. A chaque fin dtape de lalgorithme, on choisit ltape suivante en fonction des informations
locales. La mthode gloutonne ne trouve pas forcment la meilleure solution.
2.2. Ide intuitive
Le principe dune mthode gloutonne est trs simple : on construit une solution incrmentalement en rajoutant
chaque pas un lment selon un critre glouton, i.e. celui qui nous parat "localement" le meilleur ; on fait donc des
choix court terme sans jamais les remettre en cause. Il est utile de signaler que ce choix, localement optimal,
na aucune raison de conduire une solution globalement optimale. Cependant, certains problmes peuvent tre
rsolus dune manire optimale ainsi. Autrement dit, loptimalit locale conduit loptimalit globale.
La construction de la solution est donc souvent trs simple, le problme tant plutt de justifier que la solution
construite ainsi est bien optimale! Si cette vison court terme nous donne toujours une solution optimale, on
parlera dalgorithme glouton exact sinon dheuristique gloutonne.
Si on voit la recherche dune solution comme une exploration de larbre des choix, dans le cas dun algorithme
glouton, on construit uniquement et directement -sans backtracking- une -et une seule- branche de larbre. Si
elle correspond une solution optimale, on a bien un algorithme glouton exact.
2.3. Schma gnral
Le problme : On est souvent dans le cadre de problmes doptimisation. Plus prcisment, on est le plus souvent
dans le cas suivant :
On a un ensemble fini dlments, .
Une solution au problme est construite partir des lments de : cest par exemple une partie de ou un
multi-ensemble dlments de
(un multi-ensemble est une sorte d'ensemble dans lequel chaque lment
peut apparatre plusieurs fois) ou une suite (finie) dlments de ou une permutation de qui satisfait une
certaine contrainte.
A chaque solution est associe une fonction objectif
: on cherche donc une solution qui maximise (ou
minimise) cette fonction objectif.
Le schma de la mthode gloutonne : Il est bas sur un critre local de slection des lments de
pour
construire une solution optimale. En fait, on travaille sur lobjet " solution partielle"- "dbut de solution"- et on
doit disposer de :
Matire : Mthodes Algorithmiques (1re anne Master Informatique Architectures Distribues)

Anne universitaire 2014/2015

page 3

Chapitre 1 : Mthodes gloutonnes

: qui choisit le meilleur lment restant selon le critre glouton.


qui teste si une solution partielle est une solution (complte).
qui teste si un lment peut tre ajout une solution partielle, i.e. si la solution partielle reste
un dbut de solution possible aprs lajout de llment. Dans certains cas, cest toujours vrai!
qui permet dajouter un lment une solution si cest possible.
Lalgorithme est alors :

Le choix de la donne la plus prometteuse, lors de la construction de la solution, se fait suivant une rgle (le
critre glouton). Cette rgle dfinit en ralit la stratgie de lalgorithme glouton ainsi conu.
Pour slectionner, on trie souvent tout simplement la liste des lments selon le critre glouton au dpart ; on
balaye ensuite cette liste dans lordre.
Ceci est un schma gnral qui a lavantage est les inconvnients dun schma : dans certains cas, cest encore
plus simple! par exemple, lorsque la solution recherche est une permutation, en gnral lalgorithme se rduit au
tri selon le critre glouton! dans dautres cas, les solutions sont un peu plus compliques ... et on a besoin dun
schma un peu plus sophistiqu...
Remarque :
Si les algorithmes de ce type sont souvent rapides, en revanche la solution qu'ils dterminent peut tre
arbitrairement loin de la solution. On les utilise nanmoins frquemment pour obtenir rapidement une solution
ralisable. Par exemple, elle sert initialiser une mthode itrative. Mais dans certains types d'instances
relles, la solution gloutonne est parfois trs bonne.
3. Exemples classiques
3.1. Problme de totalisation dune somme dargent
Soit le problme de rendre la monnaie un client en lui donnant le moins de pices possibles. Les lments du
schma ci-dessus sont rsums comme suit:
1)
: ensemble fini de pices de monnaie.
2)
: le total de lensemble de pices choisies correspondant exactement au montant payer.
3)
: le total de lensemble de pices choisies ne dpasse pas le montant payer.
4)
est la grande pice qui reste dans lensemble des candidats.
5)
minimiser le nombre de pices utilises dans la solution.
On veut totaliser une somme dargent
.

avec un nombre minimal de pices.

Au total pices.
Lalgorithme glouton pour cet exemple consiste :
- Prendre la pice la plus grande
. Donc une pice de
- Prendre la pice la plus grande
. Donc une pice de
- Prendre la pice la plus grande
. Donc une pice de
- Etc

, il reste
, il reste
, il reste

Matire : Mthodes Algorithmiques (1re anne Master Informatique Architectures Distribues)

.
.
.

Anne universitaire 2014/2015

page 4

Chapitre 1 : Mthodes gloutonnes

A chaque tape on choisit l'option localement optimale.


Si on a des pices de
et
et si l'on veut reconstituer
et
. (5 pices)
Mais la meilleure solution est
. (3 pices)

, le mme algorithme donnerait :

3.2. Problmes de graphes (Arbre couvrant de poids minimum)


Considrons le problme, connu en thorie des graphes, la recherche de larbre couvrant de poids minimum (en
anglais minimum spanning tree).
Soit un rseau comportant des machines
et qui doivent pouvoir communiquer entre elles. Les liaisons
envisages sont reprsentes par le graphe suivant (les artes sont tiquetes par la distance entre les
machines) :
A
B
C
D
E

A
0
5
0
0
4

B
5
0
2
4
6

C
0
2
0
3
0

D
0
4
3
0
2

E
4
6
0
2
0

Question : Comment cbler le rseau moindre cot ?


Rponse : Il sagit denlever des artes au graphe de faon quil reste connexe, et que la somme des pondrations
des artes soit la plus petite possible. Remarquons que le graphe partiel recherch est sans cycle.
Le problme est ramen au problme suivant :

Le problme de larbre couvrant de poids minimal est celui qui consiste dterminer un arbre qui soit un graphe
partiel dun graphe G simple connexe et dont le poids total est minimal.
Il existe 2 algorithmes clbres pour rsoudre le problme de l'arbre couvrant de poids minimum.
3.2.1. Algorithme de Prim -1957Principe :
on part dun arbre initial A rduit un seul sommet s ;
ensuite, chaque itration, on augmente larbre A en le connectant au plus proche sommet libre au sens des
poids.
ALGORITHME Prim
ENTREES G=(X,E) un graphe connexe avec une valuation positive des artes
SORTIE T=(A, E) un arbre couvrant de poids minimum

A : ENSEMBLE des sommets marqus


E : ENSEMBLE des artes de l'arbre
Initialiser E vide
Marquer arbitrairement un sommet x : A = {x}
Tant Que il existe un sommet non marqu adjacent un sommet marqu (A
Slectionner un sommet y non marqu adjacent un sommet marqu x
tel que (x,y) est l'arte sortante de plus faible poids
E := E {(x,y)}
Marquer y : A = A {y}
Fin TantQue
Retourner T=(X,E)
3.2.2. Algorithme de Kruskal - 1956Principe
Lalgorithme de Kruskal pour la recherche d'un arbre couvrant de poids minimum est glouton : on traite
successivement les artes sans revenir sur les dcisions prises propos des artes prcdentes. Cet algorithme
conduit nanmoins une solution exacte ! Mais ce n'est que rarement le cas.

Matire : Mthodes Algorithmiques (1re anne Master Informatique Architectures Distribues)

Anne universitaire 2014/2015

page 5

Chapitre 1 : Mthodes gloutonnes

On numrote les artes


selon un ordre croissant de leurs valuations ( la valuation
de larte
vrifie :
On construit alors un arbre couvrant du graphe en considrant les artes
dans lordre de
numrotation, et en retenant si elle ne forme pas de cycle avec les artes pralablement slectionnes.
ALGORITHME Kruskal
ENTREES G=(X,E) un graphe connexe avec une valuation positive des artes
SORTIE T=( A, E) un arbre couvrant de poids minimum
Dbut
trier les arcs de G dans lordre croissant des poids;
[On les notera e1, e2, ... , em.]
Initialiser E vide
pour i = 1 m faire
si le graphe (X ; E {ei}) ne contient pas de cycle alors
E = E {ei} ;
fin si;
fin tant que;
Retourner T=(X,E)
Fin
3.3. Location dun camion
Une agence de location de vhicules dispose dun seul camion pour lequel des clients ont formul une demande
caractrise par la date de dbut et la date de fin. Notons lensemble de ces demandes, et pour tout
,
(resp.
) la date de dbut (resp. de fin). La politique commerciale de lentreprise consiste satisfaire le
plus grand nombre de clients. Le problme est donc de trouver un sous-ensemble de , constitu de demandes
compatibles et de cardinal maximum. Formellement, la compatibilit des demandes et
signifie que :
Pour rsoudre ce problme on propose lalgorithme suivant :
LocationCamion(E)
Trier les lments de par date de fin croissante
// on choisit la demande qui termine le plus tt
// dsigne le nombre de clients actuellement satisfaits
pour i = 2 n faire
si
alors

fin si
fin pour
retourner
Cet algorithme est glouton car il construit lensemble
de manire squentielle et quil fait chaque
tape le choix le moins coteux (cest dire la demande compatible qui termine le plus tt).
Notons que lensemble est bien constitu de demandes compatibles. Il reste donc prouver quil est de cardinal
maximum.
Thorme : Lensemble S produit par lalgorithme LocationCamion est bien une solution optimale, cest dire de
cardinal maximum.
Exemple : Considrons lensemble de demandes reprsent dans le tableau ci dessous :
0
1

0
3

2
6

3
6

Le tri des demandes donne


Voici ensuite les diffrentes itrations :
;
tant incompatible avec , rien ne se passe ;

Matire : Mthodes Algorithmiques (1re anne Master Informatique Architectures Distribues)

Anne universitaire 2014/2015

Chapitre 1 : Mthodes gloutonnes

page 6

tant compatible avec


on a
;
- tant incompatible avec , rien ne se passe.
La solution retourne est donc
.
Remarque 1 : Le temps de location total correspondant la solution produite est de 5 units. Par ailleurs il est
clair que
est aussi une solution dont le temps total de location est de 6 units. Ceci prouve que notre
algorithme ne permet pas de maximiser le temps de location.
Remarque 2 : Pour maximiser le temps de location on pourrait penser adapter lalgorithme en classant les
demandes par dure dcroissante. Notons
la dure de la demande .
Reprenons notre exemple prcdent.
Le tri des demandes donne
.
Voici ensuite les diffrentes itrations :
;
tant incompatible avec , rien ne se passe ;
tant incompatible avec , rien ne se passe.
- tant compatible avec
on a
;
La solution retourne est donc
, dont la dure totale nest pas maximale. Cette mthode ne permet
donc pas de maximiser la dure totale de location.
Remarque 3 : Notons que le classement des demandes par date de dbut croissante ne fournit pas non plus de
solution optimale. On peut le voir trs facilement sur lexemple ci-dessous :
0
3

1
2

2
3

Remarque 4 : Si lagence dispose de plusieurs camions, on pourrait penser adapter la mme mthode, en
affectant le premier camion disponible. Malheureusement cette mthode ne donne pas de solution optimale. Pour
la location de deux camions prenons lexemple ci-dessous :
0
1

0
2

2
3

1
4

Le tri des demandes donne


.
Voici ensuite les diffrentes itrations :
;
tant incompatible avec , on utilise le deuxime camion
;
tant compatible avec , on a
tant incompatible avec
dune part et avec
dautre part, rien ne se passe.
La solution retourne est donc
et
. Celle ci nest pas optimale car la solution
et
permet de satisfaire tous les clients.
Le problme se situe au niveau du traitement de la demande
: cest le deuxime camion quil faut lui affecter
et non pas le premier. Mais sil est facile pour nous a posteriori de faire cette constatation, lalgorithme glouton
na lui aucune raison daffecter le deuxime camion la demande .

Matire : Mthodes Algorithmiques (1re anne Master Informatique Architectures Distribues)

Anne universitaire 2014/2015