Chapitre 1
Algorithmes gloutons
Les algorithmes qui résolvent les problèmes d’optimisation parcourent en général une série d’étapes, au cours
desquelles ils sont confrontés à un ensemble d’options. Pour de nombreux problèmes d’optimisation la program-
mation dynamique est une approche trop lourde pour déterminer les meilleures solutions; d’autres algorithmes
plus simples et efficaces y arriveront. Un algorithme glouton fait toujours le choix qui semble le meilleur sur
le moment. Autrement dit, il fait un choix optimal localement, dans l’espoir que ce choix mènera à la solution
optimale globalement.
Les algorithmes gloutons n’aboutissent pas toujours à des solutions optimales, mais la méthode gloutonne est
très puissante et fonctionne correctement pour des problèmes variés.
1.1 Location d’une voiture
On considère le problème de la location d’une unique voiture. Des clients formulent un ensemble de demandes
de location avec, pour chaque demande, le jour du début de la location et le jour de restitution du véhicule. Notre
but ici est d’affecter le véhicule de manière à satisfaire le maximum de clients possible (et non pas de maximiser
la somme des durées des locations).
Nous disposons donc d’un ensemble Edes demandes de location avec, pour chaque élément ede E, la date
d(e)du début de la location et la date f(e)de la fin de cette location. Nous voulons obtenir un ensemble Fmaximal
de demandes satisfaites. Cet ensemble Fdoit vérifier une unique contrainte : deux demandes ne doivent pas se
chevaucher dans le temps, autrement dit une location doit se terminer avant que la suivante ne commence. Cette
contrainte s’écrit mathématiquement :
e1F,e2F,d(e1)d(e2)f(e1)d(e2).
Algorithme
LOCATIONDUNEVOITURE(E)
Tri des éléments de Epar date de fin croissante.
On obtient donc une suite e1,e2, ..., entelle que f(e1)f(e2)... f(en).
F[1]e1
j1
pour i1ànfaire
si d(ei)f(F[j]) alors jj+1
F[j]ej
renvoyer F
Cet algorithme est glouton car à chaque étape il prend la location « la moins coûteuse » : celle qui finit le plus tôt
parmi celles qui sont satisfiables.
Preuve de l’optimalité de l’algorithme
Soit F={x1,x2, ..., xp}la solution obtenue par l’algorithme glouton, et soit G={y1,y2, ..., yq},qp, une
solution optimale. Nous voulons montrer que Fest optimal, et donc que q=p.
1
Nous supposons que les ensembles Fet Gsont classés par dates de fins de location croissantes. Si Gne
contient pas F, il existe un entier ktel que : i<k,xi=yiet xk6=yk. Par construction de F,xkest une demande de
location qui à la date de fin minimale et dont la date de début soit postérieure à la date de fin de xk1=yk1. Par
conséquent, f(yk)f(xk). On peut alors remplacer Gpar G0={y1,y2, ..., yk1,xk,yk+1, ..., yq}tout en satisfaisant
la contrainte de non chevauchement des demandes. G0est une autre solution optimale mais ayant strictement plus
d’éléments en commun avec Fque G. En répétant autant que faire se peut ce procédé, on obtient un ensemble H
de même cardinalité que Get qui contient F. Cet ensemble Hne peut contenir d’autres éléments que ceux de F
car ceux-ci, débutants après la fin de xp, auraient été ajoutés à Fpar l’algorithme glouton. Donc H=F, et Fet G
ont le même nombre d’éléments.
Limites de l’algorithme
Il est primordial, ici, que les demandes soit classées par dates de fin croissantes. Le tableau 1.1 présente
trois demandes de location classées par dates de début croissantes pour lesquelles l’algorithme glouton présenté
ci-dessus n’est pas optimal. Pour d’évidentes raisons de symétries, classer les demandes par dates de début dé-
croissantes donne par contre un résultat optimal.
e1e2e3
d2 3 5
F8 4 8
TAB. 1.1 – Demandes classées par dates de début
croissantes.
e1e2e3
d3 5 3
F6 7 5
TAB. 1.2 – Demandes classées par durées décrois-
santes.
L’algorithme glouton ne donne pas l’optimum si notre but est de maximiser la durée totale de location du
véhicule. Même si on classe les demandes de location par durées décroissantes, un algorithme glouton ne donnera
pas une solution optimale, le tableau 1.2 présentant un contre-exemple. En fait, le problème de la maximisation
de cette durée totale est NP-complet (cf. chapitre sur la NP-complétude) et on ne connaît pas d’algorithme de
complexité polynomiale pour le résoudre.
Si nous disposons de deux voitures et non plus d’une seule, l’algorithme précédent ne donne plus l’optimum.
1.2 Éléments de la stratégie gloutonne
Un algorithme glouton détermine une solution après avoir effectué une série de choix. Pour chaque point
de décision, le choix qui semble le meilleur à cet instant est retenu. Cette stratégie ne produit pas toujours une
solution optimale. Il existe cependant deux caractéristiques qui indiquent qu’un problème se prête à une stratégie
gloutonne : la propriété du choix glouton et une sous-structure optimale.
1.2.1 Propriété du choix glouton
Propriété du choix glouton : on peut arriver à une solution globalement optimale en effectuant un choix
localement optimal (ou choix glouton). En programmation dynamique on fait un choix à chaque étape, mais ce
choix dépend de la solution de sous-problèmes, au contraire, dans un algorithme glouton, on fait le choix qui
semble le meilleur sur le moment puis on résout les sous-problèmes qui surviennent une fois le choix fait. Une
stratégie gloutonne progresse en général de manière descendante en faisant se succéder les choix gloutons pour
ramener itérativement chaque instance du problème à une instance « plus petite ».
1.2.2 Sous-structure optimale
Montrer qu’un choix glouton aboutit à un problème similaire mais « plus petit » ramène la démonstration de
l’optimalité à prouver qu’une solution optimale doit faire apparaître une sous-structure optimale.
Un problème fait apparaître une sous-structure optimale si une solution optimale contient la solution optimale
de sous-problèmes. Cette propriété est un indice important de l’applicabilité de la programmation dynamique
comme des algorithmes gloutons. Le sujet du TD 6 montre un exemple de problème qui peut être résolu par
programmation dynamique mais pas par un algorithme glouton.
2
1.3 Fondements théoriques des méthodes gloutonnes
La théorie des matroïdes ne couvre pas tous les cas d’applications de la méthode gloutonne, mais elle couvre
de nombreux cas intéressants en pratique.
1.3.1 Matroïdes
Définition 1 (Matroïde). Un matroïde est un couple M = (E,I)vérifiant les conditions suivantes :
1. E est un ensemble fini non vide.
2. I est une famille non vide de sous-ensembles de E, appelés sous-ensembles indépendants de E, telle que si
HI et si F H alors F I (on dit que I est héréditaire). Autrement dit, si I contient un sous-ensemble
H de E, I contient tous les sous-ensembles de H. On remarque que l’ensemble vide est obligatoirement
membre de I.
3. Si F et H sont deux éléments de I, avec |F|<|H|, alors il existe (au moins) un élément x H\F tel que
F∪ {x} ∈ I (propriété d’échange).
Un premier résultat sur les matroïdes :
Théorème 1. Tous les sous-ensembles indépendants maximaux d’un matroïde ont la même taille.
Ce résultat est une conséquence directe de la propriété d’échange : si un de ces ensembles, H, est strictement
plus petit que les autres, la propriété d’échange nous garantit que Icontient un sur-ensemble strict H0de H, ce qui
contredit la maximalité de H.
Définition 2 (Matroïde pondéré). Un matroïde M = (E,I)est dit pondéré si l’on dispose d’une fonction de
pondération w qui affecte un poids strictement positif w(x)à chaque élément x de E. La fonction de pondération
w s’étend aux sous-ensembles de E. Soit F un sous-ensemble quelconque de E :
w(F) =
xFw(x).
1.3.2 Algorithmes gloutons sur un matroïde pondéré
De nombreux problèmes pour lesquels une approche gloutonne donne les solutions optimales peuvent être
ramenés à une recherche d’un sous-ensemble indépendant de pondération maximale dans un matroïde pondéré.
Autrement dit, on dispose d’un matroïde pondéré M= (E,I)et on souhaite trouver un ensemble indépendant FI
pour lequel w(F)est maximisé. Un tel sous-ensemble indépendant et qui possède la plus grande pondération pos-
sible est appelé sous-ensemble optimal du matroïde. Comme la pondération est strictement positive par définition,
un sous-ensemble optimal est toujours un sous-ensemble indépendant maximal.
L’algorithme ci-dessous prend en entrée un matroïde pondéré M= (E,I)et sa fonction de pondération wet
retourne un sous-ensemble optimal F.
GLOUTON(M= (E,I),w)
F/
0
Trier Epar ordre de poids décroissant
pour xEpar ordre de poids décroissant faire
si F∪ {x} ∈ Ialors FF∪ {x}
renvoyer F
Cet algorithme est glouton parce qu’il considère les éléments de Epar ordre de poids décroissant et qu’il
ajoute immédiatement un élément xàFsi F∪ {x}est indépendant. Si Econtient néléments et si la vérification
de l’indépendance de F∪ {x}prend un temps O(f(n), l’algorithme tout entier s’exécute en O(nlogn+nf(n))
—rappel : le tri d’un ensemble de néléments coûte O(nlogn).
Le sous-ensemble Fde Eest indépendant par construction. Nous allons maintenant établir l’optimalité de F.
Théorème 2 (Les matroïdes satisfont à la propriété du choix glouton). Soit M = (E,I)un matroïde pondéré
de fonction de pondération w. Supposons que E soit trié par ordre de poids décroissant. Soit x le premier élément
de E tel que {x}soit indépendant, s’il existe. Si x existe, il existe un sous-ensemble optimal F de E contenant x.
3
Si xn’existe pas, le seul élément de Iest l’ensemble vide. Soit Hun sous-ensemble optimal. On utilise Hpour
construire, au moyen de la propriété d’échange, un ensemble Fmaximal (de même cardinalité que H) et contenant
x. Par construction, Fet Hne diffèrent que d’un élément et il existe donc un élément ytel que : F= (H\{y}){x}.
Par maximalité du poids de x,w(y)w(x),w(H)w(F)et Fest optimal.
Théorème 3. Soit M = (E,I)un matroïde quelconque. Si x est un élément de E tel que {x}n’est pas élément de
I, alors x n’appartient à aucun sous-ensemble indépendant F de E.
Autrement dit, un élément qui n’est pas utilisable immédiatement ne pourra jamais être utilisé : l’algorithme
GLOUTON ne fait donc pas d’erreur en ne considérant pas les éléments de Equi ne sont pas extension de /
0.
Théorème 4 (Les matroïdes satisfont la propriété de sous-structure optimale). Soit x le premier élément de
E choisi par GLOUTON pour le matroïde pondéré M = (E,I). Le reste du problème —trouver un sous-ensemble
indépendant contenant x et de poids maximal— se réduit à trouver un sous-ensemble indépendant et de poids
maximal du matroïde pondéré M0= (E0,I0), où :
E0={yE:{x,y} ∈ I},
I0={HE\ {x}:H∪ {x} ∈ I},
et où la fonction de pondération de M0est celle de M restreinte à E0.
Une solution de poids maximum sur Mcontenant xengendre une solution de poids maximum sur M0, et vice
versa.
Théorème 5 (Validité de l’algorithme glouton sur les matroïdes). Si M = (E,I)est un matroïde pondéré de
fonction de pondération w, alors l’appel GLOUTON(M = (E,I), w) renvoie un sous-ensemble optimal.
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !