
Q 3. Proposer un algorithme glouton qui donne une solution optimale ... et le prouver. Que dire du nombre
de salles utilisées?
Exercice 5 : Identification
Soit un mélange de npeptides. On connaît la masse moléculaire de chacun des peptides présents w1, ....wn
(toutes distinctes). On sait séparer les peptides mais ensuite il faut les identifier, i.e. à chaque peptide séparé
j, associer la masse moléculaire wid’un des npeptides. Pour cela, on mesure la masse moléculaire de chaque
peptide à l’aide d’un spectomètre de masse. On obtient ainsi pour le jième peptide une masse xj. Malheureuse-
ment le spectromètre n’est pas exact ... On cherche donc à associer à chaque xjun wij-de façon injective, c’est
à dire deux peptides différents sont associés à des widifférents-, en minimisant Pj|xj−wij|.
Q 1. Montrer qu’on peut toujours trouver une association optimale telle que: si jxjest plus grand que xk,wij
est plus grand que wik. En déduire un algorithme efficace pour optimiser l’association. Justifier.
Exercice 6 : Foot ou Tennis?
Le contexte général de l’exercice est le suivant: une chaîne sportive réfléchit à la programmation des événements
qu’elle veut retransmettre en direct.
Pour cela la donnée est une liste de névénements avec pour chacun l’heure de début et de fin. Pour simplifier
on supposera que les heures sont données comme des entiers représentant le nombre de minutes depuis 0h. Un
événement est toujours retransmis dans son intégralité.
Les deux questions sont indépendantes.
Q 1.Optimisation du nombre d’événements
Dans un premier temps, la chaîne cherche à maximiser le nombre d’événements qu’elle va retransmettre.
Donnée:
n, nombre d’événements
(di, fi)les heures de début et fin des événements
Sortie:
Une programmation optimale en nombre d’événements, i.e. J, un sous-ensemble de [1, n]de cardinal maximal
tel que pour tout jde J, pour tout kde J, si j6=k, alors ]dj, fj[∩]dk, fk[= ∅
Remarque: On suppose donc qu’on peut enchaîner les événements sans pause ... Si l’événement eise
termine à fiet si l’événement ejcommence à djavec fi=dj, ils peuvent être programmés à la suite.
Exemple 1: Soit n= 6, et les événéments donnés par
e1: (50,180), e2: (60,100), e3: (120,240), e4: (130,250), e5(150,220), e6: (220,300).
La programmation optimale en nombre d’événements sera (60,100),(150,220),(220,300), donc J={2,5,6}.
Q 1.1. Soit l’exemple 2suivant: n= 6 et les événements sont donnés par
e1: (50,80), e2: (120,340), e3: (90,170), e4: (110,150), e5: (160,200), e6: (220,300).
Quelle sera la programmation optimale en nombre d’événements?
Q 1.2. Donner un algorithme polynômial pour le problème. Evaluer sa complexité et justifier la correction de
l’algorithme.
Q 2.Optimisation de la durée totale des retransmissions
On cherche maintenant à maximiser la durée totale de la programmation. Par exemple, pour l’exemple 1,
la sortie serait maintenant (50,180),(220,300).
Formellement, le problème est donc:
Donnée:
n, le nombre d’événements
(di, fi)les heures de début et fin des événements
Sortie:
Une programmation optimale en durée totale de programmation, i.e. J, un sous-ensemble de [1, n]tel que pour
tout jde J, pour tout kde J, si j6=k, alors ]dj, fj[∩]dk, fk[= ∅tel que Pi∈J(fi−di)soit maximal.
Q 2.1. Quelle est maintenant la sortie pour l’exemple 2?
3
On suppose maintenant dans tout le reste de l’exercice que les événements sont triés par di
croissants.
Pour résoudre le problème, on définit la notion suivante: pour un numéro d’événement i, on notera durila
durée totale d’une programmation optimale à partir des événements ei, ..., en. La valeur recherchée est donc
dur1. Pour l’exemple 1, on a donc:
i1 2 3 4 5 6
duri210 190 150 150 150 80
Q 2.2.Donner les valeurs des duripour l’exemple 2.
i123456
duri??????
On cherche maintenant à calculer les duridans le cas général.
Q 2.3.Que vaut durnen fonction de dnet fn?
Soit i,1≤i≤n. On dira que eiest final, si aucun événement ne peut être transmis après lui, i.e. pour
tout j dj< fi. par exemple, dans l’exemple 1, sont finaux e3, e4, e6.
Q 2.4. Quels sont les événements finaux pour l’exemple 2?
Q 2.5. Proposer un algorithme en O(1) pour tester si un événement est final.
Q 2.6. Soit i < n tel que eiest final: exprimer durien fonction de fi,diet duri+1.
Q 2.7.Soit i,1≤i<net einon final.
Proposer en algorithme en O(log(n)) pour trouver jminimal tel que dj≥fi. On notera apr(i)cet entier j.
Par exemple, dans l’exemple 1, on a apr(1) = 6,apr(2) = 3.
Q 2.8. Soit i,1≤net einon final. Exprimer durien fonction de duri+1,di,fiet durapr(i).
Q 2.9. Déduire de ce qui précède un algorithme polynômial pour le problème. Evaluer sa complexité temporelle.
Vous pouvez dans un premier temps vous contenter de calculer la durée optimale d’une solution, puis ensuite
la solution.
Exercice 7 : Stockage
Soient nenregistrements de longueur variable stockés dans un fichier à accès séquentiel. L’enregistrement ei
est de longueur si. On suppose que le temps d’accès au ième enregistrement est proportionnel à la somme des
longueurs des ipremiers. Par exemple pour deux enregistrements e1, e2, si ils sont stockés dans l’ordre (e2, e1),
le temps d’accès à l’enregistrement e2est c∗s2, pour e1, c’est c∗(s2+s1),cétant une constante. Pour chaque
enregistrement i, on connait la fréquence d’accès, fi( on a Pn
ifi= 1). Le temps moyen d’accès sera donc :
M=c∗
n
X
j=1
(fσ(j)∗
j
X
k=1
sσ(k))
Par exemple pour deux enregistrements, si les enregistrements sont stockés dans l’ordre (e2, e1), le temps
moyen est donc c∗(f2∗s2+f1∗(s2+s1)), soit c(s2+f1∗s1). Proposer une méthode gloutonne de stockage
qui donnera toujours une temps moyen d’accès optimal:
Entrée:
n–le nombre d’enregistrements.
s1, s2, .., snles longueurs des enregistrements.
f1, f2, .., fnles fréquences d’accès
Sortie: L’ordre de stockage optimal, i.e. une permutation σ(1), .., σ(n)telle que M=c∗Pn
j=1(fσ(j)∗
Pj
k=1 sσ(k))soit minimal.
4