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 xk−1=yk−1. Par
conséquent, f(yk)≥f(xk). On peut alors remplacer Gpar G0={y1,y2, ..., yk−1,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