Algorithmes gloutons

publicité
ACT
2016–2017
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.
Q 1. 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.
Q 1. 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 : Gardons la tête froide
Un laboratoire doit stocker des produits au frais. Il dispose de réfrigérateurs mais veut minimiser le nombre de
ceux qu’il met en marche. La température d’un réfrigétrateur peut être réglée à une température entre MIN et
MAX (MIN et MAX sont indépendants du réfrigérateur). Chaque produit est muni d’une plage de température
de stockage admissible, sous la forme d’un intervalle d’entiers fermé [tmin , tmax ] - avec M IN ≤ tmin ≤ tmax ≤
M AX. On suppose que le volume d’un seul réfrigérateur est suffisant pour contenir tous les produits.
Q 1.Donnez un algorithme polynomial (glouton) qui détermine le nombre minimal de frigos nécessaires -et leur
réglage, pour stocker tous les produits à la bonne température. Justifier.
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 de poids pi et de valeur vi .
On veut choisir les objets à emporter en respectant la capacité maximale et en optimisant la valeur.
Q 1. Dans le cas fractionnable, on suppose qu’on peut fractionner les objets. Proposer un algorithme polynomial
qui résout le problème dans ce cas. Montrer qu’il donne bien le remplissage optimal et étudier sa complexité.
Q 2. Dans le cas non fractionnable, 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