Vous êtes sur la page 1sur 2

U.S.T.H.B.

, 2019-2020
Faculté de Mathématiques Master 1, ROMARIN, Complexité Algorithmique
Faculté d’Electronique et Informatique Master 1, MIND, Etude de Complexité

D
T.P. : Approximation du problème de sac à dos

IN
A rendre au plus tard le 15 septembre 2020

M
ter
L’objectif de ce T.P. est d’étudier l’approximabilité du problème d’ordonnancement suivant, où
m est une constante fixée :

as
P m||Cmax

M
Instance : n jobs J1 , . . . , Jn ayant chacun un temps d’execution pj , j =, . . . , n, à assigner sur
m machines identiques fonctionnant en parallèle. Les jobs ne sont pas divisibles.

&
Mesure à minimiser : La date totale de fin d’execution Cmax (makespan), c’est-à-dire le

N
temps pendant lequel au moins une machine est encore en train de calculer.

I
Ce problème est NP-complet. On fixe ε > 0 et k une constante plus grande que m (on verra plus

AR
tard comment la choisir intelligemment en fonction de ε). Considérons l’algorithme suivant :

1. Trier les jobs par temps d’execution décroissants de façon à avoir p1 ≥ . . . ≥ pn .


M
2. Obtenir par bruteforce une solution optimale Sk sur les k premiers jobs.
RO

3. Compléter la solution de manière gloutonne en choisissant la machine la moins


chargée, pour j de k + 1 à n.
ter

1. Quel est le temps d’execution de l’algorithme. Cela correspond-il à nos exigences ?


as

Soit I une instance du problème, Opt la mesure de la solution optimale et A(I) la mesure de
,M

la solution renvoyée par notre algorithme. Soit T la mesure de la solution optimale renvoyée
par la deuxième étape de l’algorithme, sur les k premiers jobs. Le but est de montrer que
A(I) = (1 + ε)Opt.
ne

2. Traiter le cas où A(I) = T .


a
ézi

n
X
Supposons maintenant que A(I) > T . On note psum = pj
M

j=1

3. Montrer que psum = mA(I) − (m − 1)pk+1 .


ER

k
4. Montrer que Opt≥ pk .
m
I¨D

5. En déduire que  
m−1
.A

A(I) ≤ 1+ opt.
k
Pr

6. Choisir k de manière à obtenir un PTAS.

1
Implémentation
Il vous est demandé de :
1. Implémenter (en langage C++) une procédure de simulation “Simul” pour générer uni-
formément des instances de ce problème de taille arbitraire.

D
IN
2. Implémenter l’algorithme “bruteforce1”.
3. Implémenter la méthode gloutonne de le deuxième étape.

M
4. Expérimentation numérique : Générer des instances de taille (m, n) = (2, 10), (2, 20), (2, 50),

ter
(3, 10), (3, 20), (3, 50) et leur appliquer votre programme, et présenter les résultats.

as
M
&
I N
AR
M
RO
ter
as
,M
ane
ézi
M
ER
I¨D
.A
Pr