Algorithmes gloutons

publicité
ACT
2014–2015
Master d’Informatique-S1
UFR IEEA
Fiche TD: Algorithmes gloutons
Exercice 1 : Les invités
Alice veut organiser une grande fête. Elle a la liste de ses connaissances, et sait qui connait qui. Elle veut
respecter cette règle: chaque invité connaît au moins 5 autres invités et ne connait pas au moins 5 invités.
Elle veut de plus inviter le maximum de personnes. Proposer un algorithme pour construire une liste optimale
d’invités, justifier sa correction et évaluer sa complexité.
Exercice 2 : Les antennes-relais, version simplifiée
Considérez une route rectiligne avec des habitations dispersées, placées aux positions {x1 , . . . , xn } (les xi sont
réels et représentent la distance en kilomètres à partir du kilométre 0 de la route). Une antenne-relais couvre
les habitations à une distance au plus égale à k kilomètres d’elle.
Concevez un algorithme qui calcule le nombre minimal d’antennes-relais à placer pour couvrir toutes les
habitations et les place. Analysez la complexité et justifiez l’optimalité de la solution.
Exercice 3 : Rendez la monnaie
Rappel du problème: On dispose des pièces de monnaie correspondant aux valeurs {a1 , . . . , an }, avec a1 <
a2 . . . < an . Pour chaque valeur le nombre de pièces est non borné. Etant donnée une quantité c entière, on
veut trouver une façon de "rendre" la somme c avec un nombre de pièces minimum.
L’algorithme glouton consiste à utiliser d’abord le plus grand nombre possible de pièces an , puis le plus
grand nombre possible de pièces an−1 si nécessaire, etc.
On suppose que dans trois pays, n = 5 et les valeurs des pièces sont les suivantes:
QUARTERLAND: a1 = 1, a2 = 5, a3 = 10, a4 = 20, a5 = 25.
DISLAND: a1 = 1, a2 = 5, a3 = 10, a4 = 20, a5 = 40.
Q 1. Quels sont le(s) pays dans le(s)quel(s) l’algorithme glouton donne une solution optimale? Justifier!
Q 2. Supposons que a1 = 1, a2 = d, a3 = d2 , . . . , ai = di−1 , . . . , an = dn−1 , pour un certain entier d. Montrer
que l’algorithme glouton qui consiste à utiliser le plus grand nombre de pièces de an , puis de an−1 ainsi de suite
jusqu’à a1 donne toujours une solution optimale.
Exercice 4 : Le problème du sac à dos dans le cas fractionnable
Donnée du problème:
n entiers p1 , · · · , pn positifs.
n entiers v1 , · · · , vn positifs.
un entier c
Interprétation: il y a un sac de capacité maximale c et n objets (ou projets ou..) de poids (ou volumes..ou
coûts) pi et de valeur vi .
On veut choisir les objets à emporter en respectant la capacité maximale et en optimisant la valeur.
Pb (Optimisation): trouver la valeur maximale d’un chargement. Dans le cas fractionnable, on suppose
qu’on peut fractionner les objets.
Q 1. Proposer un algorithme polynomial qui résout le pb dans ce cas. Montrer qu’il donne bien le remplissage
optimal et étudier sa complexité.
Q 2. Le cas non fractionnable (0-1) L’algorithme proposé ci-dessus marche-t-il? Pourquoi? Quelle méthode
proposeriez-vous? Quelle serait sa complexité?
Exercice 5 : Permanence
Une association cherche à assurer une permanence lors d’une journée. Chaque adhérent donne l’intervalle de
temps pour lequel il est disponible. On suppose que l’union des intervalles de temps correspond à la journée,
i.e. qu’à tout moment un adhérent est disponible.
Q 1. Proposer un algorithme qui permet d’assurer la permanence en mobilisant un minimum de personnes, le
prouver et analyser sa complexité.
Q 2. Comment assurer la permanence en minimisant le temps maximum de présence d’un adhérent sans
chercher à optimiser le nombre de personnes mobilisées? Quelle est la complexité de l’algorithme?
Exercice 6 : Les activités
La donnée du problème est un ensemble d’activités; pour chaque activité on a une "heure" de début et une
"heure" de fin. Le problème est d’affecter des salles à toutes les activités, en respectant bien sûr la contrainte:
"à un instant donné, il peut y avoir au plus une seule activité par salle" et en minimisant le nombre de salles
utilisées. On suppose qu’il n’y a pas de temps de battement entre deux activités, i.e. que dans la même salle
dès qu’une activité est terminée, une autre peut commencer. Un peu plus formellement, on a donc:
Donnée:
n - - nombre d’activités
((di , fi ))ni=1 , di < fi , di (resp. fi ): heure de début (resp. fin) de l’activité i
Sortie Une affectation compléte et correcte qui minimise le nombre de salles utilisées i.e.:
af f : [1..n] → [1..p], p ≤ n , aff(i) no de salle affectée à l’activité i
qui vérifie la contrainte:
si af f (i) = af f (j) et i 6= j, alors ]di , fi [∩]dj , fj [= ∅
et qui minimise card(af f ([1..n])).
Q 1. Soient les activités données par (1,5), (9,15), (4,8), (6,16). Proposer une affectation optimale.
Q 2. Une première proposition consiste à remplir les salles une par une en utilisant le critère glouton “par date
de fin croissante”. Pensez-vous que cette méthode forunit une solution optimale? Justifier.
Q 3. Proposer un algorithme glouton qui donne une solution optimale, le prouver et donner sa complexité.
Que dire du nombre de salles utilisées?
Exercice 7 : Ordonnancement de tâches
Le cadre général: Dans tous les cas, on a n tâches i = 1, . . . , n à exécuter sur une seule machine. Une tâche ne
peut être fractionnée. Pour chaque tâche, on a une durée di (un entier positif). On suppose que toute exécution
des taches commence à t = 0. Soit une exécution des tâches: à chaque tâche i, on peut donc associer ti la date
à laquelle elle est terminée. On essaie d’ordonnancer les tâches de façon optimale selon différents critères.
Q 1.Le retard maximal: pour chaque tâche, on a une date limite souhaitée fi (un entier positif); pour une
exécution donnée, une tâche est en retard si ti > fi . on cherche à trouver une exécution de l’ensemble des tâches
qui minimise maxi en retard (ti − fi ) i.e. le retard maximum.
Exemple: Soit 4 tâches données par d1 = 2, d2 = 1, d3 = 4, d4 = 2, f1 = 2, f2 = 3, f3 = 5, f4 = 4. L’exécution
dans l’ordre 1, 3, 2, 4, donnera un retard maximal de 5, l’exécution 1, 3, 4, 2 un retard maximal de 6 .
Q 1.1. Dans l’exemple ci-dessus, donner une séquence où le retard maximum est minimal.
Q 1.2. Proposer un algorithme glouton polynomial qui donne une séquence optimale. Evaluer sa complexité
et prouver que votre algorithme produit bien une solution optimale.
Q 2.Un autre critère d’optimalité: à chaque tâche est associée une pénalité pi strictement positive - mais pas
de date limite-; on cherche à trouver une exécution de l’ensemble des tâches qui minimise Σni=1 pi ti .
Q 2.1. Soit quatre tâches: d1 = 2, d2 = 1, d3 = 4, d4 = 2, p1 = 1, p2 = 1, p3 = 3, p4 = 2. L’exécution dans
l’ordre 1, 2, 3, 4 donnera t1 = 2, t2 = 3, t3 = 7, t4 = 9 et conduira donc à une pénalité totale de 44.
Quelle pénalité totale donnera l’exécution 1, 3, 4, 2?
Q 2.2. Proposer un algorithme glouton polynomial qui donne une séquence optimale. Evaluer sa complexité
et prouver que votre algorithme minimise bien la pénalité totale.
Q 3. Dans cette partie, on suppose qu’à chaque tâche est associée une pénalité pi et que toutes les tâches
ont le même deadline
d. On cherche à trouver une exécution qui minimise la somme des pénalités des tâches
P
en retard, i.e. i/ti >d pi . Le professeur Heuristus propose d’ordonnancer les tâches selon les pi /di décroissants.
Montrer que cet ordonnancement n’est pas toujours optimal.
2
Téléchargement