Fiche TD: Algorithmes gloutons

publicité
20062007
Algorithmique Avancée et Complexité
Master 1 d'Informatique
S.Tison
UFR IEEA
Fiche TD: Algorithmes gloutons
Exercice 1 :
Décrire un algorithme qui, étant donné un ensemble
{x1 , . . . , xn }
de points sur la droite réelle, détermine le
plus petit ensemble d'intervalles fermés de longueur 1 qui contienne tous les points donnés. Montrer que votre
algorithme est correct.
Exercice 2 : Les stations-services
Le professeur Midas conduit sa voiture de Lille à Pékin. Il part avec son réservoir d'essence plein. On suppose
sa consommation constante. Il a une carte avec les stations et les distances les séparant. Il veut minimiser le
nombre d'arrêts aux stations: quelle stratégie gloutonne proposez-vous?
Il connait maintenant le prix du litre dans chaque station; on suppose que sa consommation est constante
et connue. Quelle stratégie proposez-vous pour minimiser le coût total?
Exercice 3 :
Le problème du sac à dos dans le cas fractionnable
Donnée du problème:
p1 , · · · , p n
n entiers v1 , · · · , vn
un entier c
n entiers
positifs.
positifs.
Interprétation: il y a un sac de capacité maximale
coûts)
pi
et de valeur
c
et
n
objets (ou projets ou..) de poids (ou volumes..ou
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?
Exercice 4 : Les gardiens de musée
Considérez une galerie de peinture rectiligne. Les tableaux sont placés aux positions
réels).
{x1 , . . . , xn }
(les
xi
sont
Un gardien peut surveiller des tableaux se trouvent à une distance au plus égale à 1 de lui-même à
gauche comme à droite.
Concenvez et écrivez un algorithme qui calcule le nombre minimal de gardiens requis pour surveiller tous
les tableaux et les place. Analysez la complexité et justiez l'optimalité de la solution.
Exercice 5 : 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 n. Le problème est d'aecter 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. n) de l'activité
i
Sortie Une aectation complète et correcte qui minimise le nombre de salles utilisées i.e.:
af f : [1..n] → [1..p], p ≤ n
, a(i) no de salle aectée à l'activité
1
i
qui vérie la contrainte:
af f (i) = af f (j)
card(af f ([1..n])).
si
et qui minimise
et
i 6= j ,
alors
]di , fi [∩]dj , fj [= ∅
Q 1. Soient les activités données par les "heures" de début et n suivantes (1,5), (9,15), (4,8), (6,16). Proposer
une aectation optimale.
Q 2. Une première proposition consiste à remplir les salles une par une en utilisant le critère glouton par date
de n croissante. pensez-vous que cette méthode forunit une solution optimale? Justier.
Q 3. Proposer un algorithme glouton qui donne une solution optimale ... et le prouver. Que dire du nombre
de salles utilisées?
Exercice 6 : Stockage
On a
ei
n
enregistrements de longueur variable stockés dans un chier à accès séquentiel. Chaque enregistrement
est de longueur
si .
Après chaque accès, on suppose que la fenêtre de lecture est repositionnée au début du
ième
chier. On suppose que le temps d'accès au
des
i
enregistrement est proportionnel à la somme des longueurs
premiers.
e1 , e2 , si ils sont stockés dans l'ordre (e2 , e1 ),
c ∗ (s2 + s1 ), c étant une constante.
Par exemple pour deux enregistrements
l'enregistrement
e2
est
c ∗ s2 ,
pour
e1 ,
c'est
le temps d'accès à
Dans un premier temps, on suppose que les demandes d'accés à chaque enregistrement sont équiprobables.
Donc, si les enregistrements sont stockés dans l'ordre
eσ(1) , . . . , eσ(n)
M = c ∗ 1/n ∗
j
n X
X
(
le temps moyen d'accès est
sσ(k) )
j=1 k=1
Par exemple pour deux enregistrements, si les enregistrements sont stockés dans l'ordre
moyen est donc
1/2 ∗ c ∗ (s2 + (s2 + s1 )),
soit
(e2 , e1 ),
le temps
c ∗ (s2 + s1 /2).
Le problème est donc déni par:
Entrée:
n le nombre d'enregistrements.
s1 , s2 , .., sn les longueurs des enregistrements.
Sortie: L'ordre de stockage optimal, i.e. une permutation
Pn
σ(1), .., σ(n) telle que M = c∗1/n∗
Pj
j=1 (
k=1 sσ(k) )
( on a
Pn
soit minimal.
Q 1. Soit la donnée suivante :
n = 3, s1 = 12; s2 = 26; s3 = 19.
Donner la meilleure façon de stocker les enregistrements.
Q 2. Proposer une méthode gloutonne qui donnera toujours une solution optimale. Justier!
On suppose maintenant que pour chaque enregistrement i, on connait la fréquence d'accès,
1).
fi
i
fi =
Le temps moyen d'accès sera donc :
M =c∗
n
X
(fσ(j) ∗
j=1
j
X
sσ(k) )
k=1
Par exemple pour deux enregistrements, si les enregistrements sont stockés dans l'ordre
moyen est donc
c ∗ (f2 ∗ s2 + f1 ∗ (s2 + s1 )),
soit
(e2 , e1 ),
le temps
c(s2 + f1 ∗ s1 ).
Q 3. Soit l'heuristique consistant à ordonner les enregistrements selon les si croissants. Donner un exemple qui
montre qu'elle ne donne pas toujours la solution optimale.
Q 4. Soit l'heuristique consistant à ordonner les enregistrements selon les
fi
décroissants. Donner un exemple
qui montre qu'elle ne donne pas toujours la solution optimale.
Q 5. Proposer un algorithme glouton qui donne toujours la solution optimale. Justier.
Exercice 7 : Réservation de trains
Soient
p
trains numérotés dans l'ordre de leur heure de départ et
le nombre de places libres,
dem1 , ..., demn
plac1 , ..., placp .
n
clients.
Pour chaque train, on connaît
et pour chaque client le numéro du train qu'il souhaite prendre,
(on suppose que chaque client veut une et une seule place). On suppose que si le train demandé
est complet, le client accepte de prendre un train après celui qu'il avait choisi. Le problème est d'aecter une
place à chaque client dans un train, soit formellement:
2
Entrée:
n, p le nombre de clients, le nombre de trains
plac1 , ..., placp le nombre de places libres par train
dem1 , ..., demn les demandes des clients (une demande: un numéro de train)
Sortie: Une aectation i.e. af f : [1..n] → [1..p] telle que
af f (i) >= demi 1 ≤ i ≤ n le client i ne prend pas un train avant celui qu'il avait
choisi
Et
Card{i/af f (i) = j} <= placj 1 ≤ j ≤ p
Q 1. Soient
p = 3 , n = 6,
il n'y a pas de surbooking!
les demandes
2, 1, 3, 2, 2, 3
avec deux places de disponibles dans chacun des trois
trains. Y-a-t-il une aectation possible?
Q 2. Proposer un algorithme qui vérie si il existe une aectation possible.
Q 3. Bien sûr toutes les aectations ne satisfont pas les clients de la même façon! On impose donc d'abord la
condition suivante (Cond) si
demi < demj ,
alors
af fi <= af fj :
Si un client a demandé un train qui part avant celui demandé par un autre, il ne peut partir après!
p = 3, n = 6 et les demandes 2, 1, 1, 2, 1, 1 avec deux places libres dans chaque train, si
af f (1) = 2, af f (2) = 1, af f (3) = 1, af f (4) = 2, af f (5) = 3, af f (6) = 3, la condition n'est pas respectée:
le client 4 part avant le client 5 alors qu'il avait demandé à partir après!
Q 3.1. Soient p = 3, n = 6 et les demandes 2, 2, 1, 3, 1, 1 avec deux places de disponibles dans chacun des trois
Par exemple, pour
on a
trains. Proposer une aectation qui respecte la condition (Cond).
Q 3.2. Montrer que si il existe une aectation possible, il existe une aectation qui vérie la condition (Cond).
Q 4. La condition (Cond) n'est pas susante pour exprimer le contentement des passagers: par exemple, si le
dernier train contient susamment de places, on pourrait mettre tous les clients dans ce dernier train!
On ajoute donc une mesure du mécontentement: on mesure le degré de mécontentement d'un client par
af f (i) − dem(i),
qui est donc nul si il a eu le train désiré, >0 sinon.
Le degré total de mécontentement est simplement la somme des degrés de mécontentement des clients, i.e.
Pi=n
i=1 (af f (i)
− demi ).
Par exemple, pour p = 3, n = 6 et les demandes 2, 1, 1, 2, 1, 1 avec trois places libres dans chaque train, si on
af f (1) = 3, af f (2) = 1, af f (3) = 1, af f (4) = 3, af f (5) = 2, af f (6) = 1, le degré total de mécontentement
est (3 − 2) + (1 − 1) + (1 − 1) + (2 − 1) + (2 − 1) + (1 − 1), soit 3.
a
Q 4.1. Pour l'exemple précédent, donner une aectation qui vérie la condition (Cond) et qui minimise le
mécontentement.
Q 4.2. Proposer un algorithme polynômial (de type glouton) qui permet de réaliser une aectation qui respecte
la condition (Cond) et minimise le degré de mécontentement.
Justier que votre algorithme produit bien une solution optimale et donner l'ordre de grandeur de la complexité de votre algorithme.
Exercice 8 :
Ordonnancement de tâches
Le cadre général:
Dans tous les cas, on a
fractionnée.
n
tâches
i = 1, . . . , n
Pour chaque tâche, on a une durée
taches commence à
t = 0.
à exécuter sur une seule machine.
di
(un entier positif ).
Une tâche ne peut être
On suppose que toute exécution des
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 diérents critères.
Q 1.Le retard maximal
Dans cette partie, pour chaque tâche, on a une date limite souhaitée
donnée, une tâche est en retard si
minimise
ti > fi .
fi (un entier positif ); pour une exécution
on cherche à trouver une exécution de l'ensemble des tâches qui
− fi ) i.e. le retard maximum.
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
1, 3, 2, 4, donnera un retard maximal de 5, l'exécution 1, 3, 4, 2 un retard maximal de 6 .
maxi
en retard (ti
Exemple: Soit
dans l'ordre
Q 1.1. Dans l'exemple ci-dessus, donner une séquence où le retard maximum est minimal.
3
Q 1.2. Proposer un algorithme glouton polynômial 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é
Dans cette partie, à 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. Reprenons un exemple avec quatre tâches:
de
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
44.
Quelle pénalité totale donnera l'exécution 1, 3, 4, 2?
Q 2.2. Proposer un algorithme glouton polynômial 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 sont associées une pénalité
d.
P
i/ti >d pi .
ont le même deadline
en retard, i.e.
pi
et que toutes les tâches
On cherche à trouver une exécution qui minimise la somme des pénalités des tâches
Le professeur Heuristus propose d'ordonnancer les tâches selon les
ordonnancement n'est pas toujours optimal.
4
pi /di
décroissants.
Montrer que cet
Téléchargement