Analyse d’algorithmes 2001 EXERCICES SUR L’APPROCHE VORACE 1
EXERCICES SUR L’APPROCHE VORACE
Chapitre 6
ÉNONCÉS
Exercice 1 (problème du sac alpin)
Nous disposons de n objets et d'un sac de capacité W. L'objet i a un poids total wi et il peut
nous apporter un profit total pi si on l’emporte dans le sac. Il est possible de fractionner les objets;
dans ce cas, si une fraction xi , 0 xi 1, de l'objet i est mise dans le sac, nous recevons un profit
pixi. Nous voulons maximiser notre profit.
Formellement, il faut maximiser
i=1
npixi avec
i=1
nwixi W, 0 xi 1, pi > 0 et wi > 0. On
peut supposer aussi que
i=1
nwi > W (sinon la solution est évidente).
Un algorithme vorace pour résoudre ce problème a la forme générale suivante:
TANT QUE le sac n’est pas plein FAIRE
- Choisir le “meilleur” objet qui reste. Si possible, mettre tout l'objet dans le sac; sinon,
mettre dans le sac la plus grande fraction possible de l'objet.
-FIN TANT QUE.
i) Prouvez que si l'on considère les objets dans l’ordre des pi décroissants, la solution obtenue
n'est pas nécessairement optimale.
ii) Prouvez que si l'on considère les objets dans l’ordre des pi
wi décroissants, la solution fournie
est optimale.
Exercice 2 (ancien problème 3.1.1)
Nous voulons rendre la monnaie à un client en lui donnant le moins de pièces possibles. Les
éléments du schéma général sont:
- candidats: un ensemble fini de pièces, par exemple de valeurs 1, 5, 10, et 25 unités;
- candidats choisis: les pièces déjà rendues;
- solution: la valeur totale des pièces choisies est exactement égale au montant à rendre;
- ensemble réalisable: la valeur totale des pièces choisies n’excède pas le montant à rendre;
- fonction de sélection: la plus grande pièce qui reste dans l’ensemble des candidats;
- fonction objective: le nombre de pièces utilisées dans la solution.
a) Prouvez que, dans le cas ci-dessus, l’algorithme vorace fournit toujours la solution optimale,
pour autant qu’une solution existe.
b) À l’aide d’exemples explicites, montrez que, par contre, cet algorithme n’est plus optimal
dans tous les cas si l’on ajoute des pièces de 12 unités aux pièces disponibles, ou si un type de pièce
2 EXERCICES SUR L’APPORHCE VORACE ©2001 R. Lelouche
est absent. Montrez que, dans ces conditions, il peut même arriver que l’algorithme vorace ne trouve
pas de solution alors qu’il en existe.
Exercice 3 (problème 3.2.5 de l’ancien livre)
Que peut-on dire sur le temps demandé par l’algorithme de Kruskal si, au lieu de fournir une
liste des arêtes, l’utilisateur fournit la matrice des distances L, laissant à l’algorithme le travail de
déduire quelles arêtes existent ?
Exercice 4 (problème 3.2.6 de l’ancien livre)
Prouvez que l’algorithme de Prim fonctionne correctement. La preuve, qui utilise également le
lemme de l’augmentation d’un ensemble prometteur (lemme 6.3.1 du livre), est par induction
mathématique sur le nombre de sommets dans B.
Exercice 5
1º Soit un graphe de n nœuds et a arêtes. Nous avons vu deux algorithmes voraces permettant
de trouver un arbre sous-tendant minimal dans un tel graphe: l'algorithme de Kruskal qui prend un
temps dans Θ(a logn) et l'algorithme de Prim (implantation classique) qui prend un temps dans
Θ(n2). Quand doit-on préférer l'algorithme de Kurskal à celui de Prim et vice-versa ?
2º L'algorithme de Yao (que nous n'avons pas vu) réussit à construire un arbre sous-tendant
minimal en un temps dans Θ(a log logn). Cet algorithme est-il toujours préférable à l'algorithme de
Kruskal ? Justifiez.
Exercice 6 (problème 6.15, ancien 3.2.11)
Démontrez à l’aide d’un exemple explicite que, si les longueurs des arcs peuvent être négatives,
l’algorithme de Dijkstra ne fonctionne pas toujours correctement. La notion de chemin le plus court
reste-t-elle valable si des distances négatives sont admises ?
Exercice 7 (problème 6,20, ancien 3.3.2)
Prouvez que l’algorithme vorace d’ordonnancement avec s serveurs donne toujours un
ordonnancement optimal.
Exercice 8 (problème 6.22, ancien 3.3.3)
Une bande magnétique contient n fichiers f1, f2, ..., fn, , de longueurs respectives l1, l2, ..., ln.
Une fraction (probabilité) pi des requêtes concerne le fichier i. (donc p1 + p2 + ... + pn = 1). La
densité de l’information sur la bande est constante, ainsi que la vitesse du dérouleur. De plus, après
chaque chargement de fichier, la bande est remise à son point de départ. Si les fichiers sont stockés
dans l’ordre i1, i2, ..., in sur la bande, le temps moyen requis pour en charger un sera
T
= c
j=1
n [(pij
k=1
j lik )],
où la constante c dépend de la densité et de la vitesse du dérouleur. On veut minimiser T
en utilisant
un algorithme vorace. Pour cela, suffit-il de placer les fichiers en ordre:
Analyse d’algorithmes 2001 EXERCICES SUR L’APPROCHE VORACE 3
a) de li croissant ? b) de pi décroissant ? c) de pi/li décroissant ?
Dans chaque cas, soit vous le prouvez, soit vous donnez un contre-exemple.
Exercice 9 (ancien problème 3.3.4)
Vérifiez le fonctionnement de l’algorithme Séquence de la section 6.6.2, p. 210 (ancienne
section 3.3.2), et montrez qu’en pire cas il prend un temps quadratique.
Exercice 10 (ancien problème 3.3.5)
Prouvez le lemme suivant (6.6.4, ancien 3.3.2):
Un ensemble J de n tâches est réalisable si et seulement si on peut construire une séquence
réalisable comme suit. Commencer avec un horaire vide de longueur n. Pour chaque tâche i de J,
l’exécuter au temps t, où t est le plus grand entier tel que 1 t min (n, di) et la tâche à exécuter à
l’instant t n’est pas encore déterminée.
Exercice 11 (ancien problème 3.4.1)
Pour un graphe G et un ordonnancement σ des sommets de G, soit cσ(G) le nombre de
couleurs utilisées par l’algorithme vorace de coloriage. Prouvez les assertions suivantes:
1º (G) (∃ σ) [Cσ (G) = c
^ (G)]
2º (∀ α R+) (G) (∃ σ) [c
^ (G) / Cσ (G) < α]
En d’autres termes, l’heuristique vorace peut donner la solution optimale, mais elle peut également
être arbitraitrement mauvaise.
Exercice 12
Monsieur Midas conduit une automobile d’un point A à un point B. Le réservoir de son auto lui
permet de parcourir une distance D lorsqu’il est plein. Au cours de son voyage, il rencontrera k postes
où il pourrait faire le plein. Soient di la distance pour aller du poste i–1 au poste i, d1 la distance du
point A au poste 1, et dB la distance du poste k au point B (on suppose di D et dB D). Monsieur
Midas veut effectuer le moins d’arrêts possibles. Présentez un algorithme vorace qui détermine les
postes où Monsieur Midas devrait arrêter. Est-il optimal (preuve ou contre-exemple) ?
4 EXERCICES SUR L’APPORHCE VORACE ©2001 R. Lelouche
EXERCICES SUR L’APPROCHE VORACE
Chapitre 6
SOLUTIONS
Exercice 1 (problème du sac alpin)
i) Prenons n = 2, w1 >> w2 = W, et p1 = p2 + ε avec ε > 0 arbitrairement petit fixé à l’avance. En
appliquant cet algorithme vorace, on obtient: x1 = W
w1 , x2 = 0 qui atteint l’objectif p1W
w1 .
Toutefois, cette solution n’est pas optimale car x1 = 0, x2 = 1 atteint l’objectif p2 > p1W
w1 .
ii) Supposons qu’il existe une solution optimale X = (x1, x2, ..., xn) dans laquelle l’objet j a été
choisi, mais pas l’objet i qui a un coefficient pi
wi “meilleur”, soit : xi = 0, xj > 0, et pi
wi > pj
wj.
Construisons une nouvelle solution X
~ où :
- les objets autres que i et j sont inchangés : x
~k = xk k i
- l’objet j est remplacé par un poids égal de l’objet i : x
~i = Min (1, wj xj
wi)
- l’objet j ne garde que ce qui reste : x
~j = xjwi
wj x
~i
Cette solution X
~ constitue une amélioration (l’objet i influe sur les objets suivants). En effet
Objectif (X
~) – Objectif (X) = pi x
~i + pj x
~jpj xj = pi x
~ipj wi
wj x
~i = wi x
~i (pi
wipj
wj) > 0.
Cette solution meilleure contredit donc le fait que la solution X était optimale.
Exercice 2 (ancien problème 3.1.1)
a) Pour i = 1, 5, 10, 25, soit ni le nombre total de pièces de valeur i disponibles, et soit xi le
nombre de pièces de valeur i utilisées dans une solution optimale lorsque le montant à rendre est x.
On suppose que pour tout i, ni > 0.
On veut montrer qu’il est toujours optimal de prendre, parmi les pièces qui restent dont la valeur
ne dépasse pas le montant restant à rembourser, la pièce de plus grande valeur. Si tel n’est pas le cas,
c’est qu’il y a dans la solution optimale un groupe G de pièces dont le montant total dépasse la valeur
d’une pièce non prise de valeur supérieure à celle de chacune des pièces de G.
Nous allons montrer que cela ne peut pas se produire. Il y a trois cas possibles où une solution
optimale n’utiliserait pas toujours au maximum les pièces de valeur maximale.
1er cas: les pièces de 5 sont sous-utilisées, c’est-à-dire : x1 5 et x5 < n5.
Dans ce cas, on peut remplacer dans la solution optimale cinq pièces de 1 par une pièce de 5,
obtenant ainsi une meilleure solution réalisable (nombre total de pièces diminué de 4), contredisant le
fait que la solution est optimale.
Les pièces de 5 ne sont donc pas sous-utilisées, ce qui implique: x1 < 5 ou x5 = n5 (1).
Analyse d’algorithmes 2001 EXERCICES SUR L’APPROCHE VORACE 5
2me cas: les pièces de 10 sont sous-utilisées, c’est-à-dire : x1 + 5x5 10 et x10 < n10.
On peut alors remplacer 10 sous en pièces de 1 et 5 par 1 pièce de 10, obtenant ainsi une
meilleure solution réalisable, ce qui conduit encore à une contradiction.
3me cas: les pièces de 25 sont sous-utilisées, c’est-à-dire : x1 + 5x5 + 10x10 25 et x25 < n25.
Si x5 > 0, on peut choisir une pièce de 5 et d’autres pièces de 1, 5, 10 totalisant 20 sous, et
remplacer le tout par une pièce de 25, obtenant une meilleure solution, d’où contradiction.
Si x5 = 0, comme n5 > 0 par hypothèse, x1 < 5 d’après (1), soit 0 x1 4. Cela implique
10x10 25 – x1 , ou x10 3. On peut alors remplacer 3 pièces de 10 par une pièce de 25 et une pièce
de 5, obtenant une solution meilleure, d’où contradiction.
b) S’il y a des pièces de 12, prendre par exemple x = 20.
- solution optimale : 10, 10 (2 pièces);
- solution selon l’algorithme vorace : 12, 5, 1, 1, 1. (5 pièces).
c) S’il n’y a pas de pièces de 5 (n5 = 0), prendre par exemple x = 30.
- solution optimale : 10, 10, 10 (3 pièces);
- solution selon l’algorithme vorace : 25, 1, 1, 1, 1, 1 (6 pièces).
Exercice 3 (ancien problème 3.2.5)
L’algorithme prend au moins un temps dans (n2), ne serait-ce que pour lire la matrice des
distances. Mais on peut construire la liste des arêtes en un temps dans O(n2) puis utiliser le même
algorithme que d’habitude. Le temps requis est donc dans O(max (n2, a logn)).
Exercice 4 (ancien problème 3.2.6)
Nous allons montrer par induction sur le nombre de sommets dans B que, à chaque sortie de la
boucle TANT QUE, les arêtes de T forment un ensemble prometteur.
C’est évidemment vrai lorsque B contient un seul sommet.
Supposons que c’est vrai à l'entrée dans la boucle et montrons que cela implique que c’est vrai à
la sortie. Si c’est vrai en entrant, alors l’arête e = {u,v} que l’on ajoute possède l’une de ses
extrémités dans B et l’autre dans N – B , c’est-à-dire rejoint B, et aucune autre arête de T ne rejoint
B (toutes les arêtes de T ont leurs deux extrémités dans B). De plus, e est l’arête de coût minimal
parmi celles qui rejoignent B. Donc, par la propriété 3.2.1, T {e} forme un ensemble prometteur.
Note. - “T est un ensemble prometteur” est un invariant de la boucle TANT QUE. La démonstra-
tion revient à affirmer successivement les 4 assertions correspondantes.
Exercice 5
1º On doit préférer l’algorithme de Kruskal lorsque le nombre d’arêtes est petit par rapport à n2.
2º Il n’est pas nécessairement toujours préférable: cela dépend de la constante cachée. Par contre, il
sera préférable pour n suffisamment grand.
1 / 10 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 !