Académique Documents
Professionnel Documents
Culture Documents
Descartes
Algorithmes approchés & online – optimisation
(Correction)
Un algorithme d’approximation consiste à d’abord trier les ai en ordre décroissant puis de manière
gloutonne à mettre les objets dans le premier paquet disponible tant que celui-ci peut recevoir un objet.
1
1. Montrer que si pour tout i, ai > 3 alors l’algorithme glouton consistant à trier puis ranger est optimal.
.
– Avec cette hypothèse (ai > 1/3), chaque objet de poids supérieur à 2/3 occupe un paquet (un objet — un
paquet). Quelque soit l’algorithme utilisé, on peut donc les enlever.
– On peut donc supposer que tous les objets ont un poids dans l’intervalle ]1/3, 2/3[. On peut aussi observer
qu’un paquet peut contenir au mieux deux objets. Donc au mieux, on mettra deux objets de poids dans
l’intervalle ]1/3, 1/2[ dans un même paquet et c’est ce que fait l’algorithme.
– Voyons sur un exemple.
[0.88, 0.94, 0.42, 0.94, 0.75, 0.40, 0.52, 0.70, 0.97, 0.98, 0.44,
0.98, 0.97, 0.68, 0.87, 0.43, 0.61, 0.94, 0.86, 0.97, 0.77, 0.36,
0.90, 0.96, 0.79, 0.84, 0.83, 0.59, 0.77, 0.45, 0.80, 0.35, 0.52,
0.36, 0.40, 0.88, 0.80, 0.54, 0.97, 0.36]
Tri décroissant :
[.98, .98, .97, .97, .97, .97, .96, .94, .94, .94, .90, .88, .88,
.87, .86, .84, .83, .80, .80, .79, .77, .77, .75, .70, .68, .61,
.59, .54, .52, .52, .45, .44, .43, .42, .40, .40, .36, .36, .36, .35]
On peut enlever ceux qui vont occuper un paquet (poids > 2/3), il reste
[.61, .59, .54, .52, .52, .45, .44, .43, .42, .40, .40, .36, .36, .36, .35]
L’évolution des paquets est alors p1 := [.61], p2 := [.59], p3 := [.54] p4 := [.52], p5 := [.52]. Puis p3 :=
[.54, .45] (de poids 0.99). Puis p4 := [.52, .44] et p5 := [0.52, .43]. Quand .42 arrive, on ne peut que le
mettre tout seul dans p6 := [.42]. Le premier .40 est mis dans p2 qui devient p2 := [.59, .40]. Le second est
mis dans p6 := [.42, .40]. Quand le premier .36 arrive, on le met dans le premier paquet : p1 := [.61, .36].
Les paquets p1 , p2 , p3 , p5 , p5 , p6 sont donc remplis à plus de 2/3 = 0.66 . . .. On aura donc à ouvrir deux
paquets pour le reste p7 := [.36, .36] et p8 := [.35]. On remarque que seul un paquet seul (ici p8 ) est rempli
à moins de 2/3.
2. Maintenant on suppose qu’il existe i tel que 0 < ai < 1/3. Montrer qu’au plus un paquet n’est pas
rempli à plus de 2/3.
.
1
M1 Année 2020 – 2021
– On utilise l’algorithme. On peut voir le tableau comme scindé en deux, les éléments strictement plus grands
que 1/3 et les autres.
– Précédemment, on a vu que la première partie du tableau traité avec l’algorithme va remplir tous les paquets
à plus de 2/3 (sauf au plus un). Pour la seconde partie du tableau, les objets de poids < 1/3 peuvent être
regroupés (au moins 3 par paquets) Chaque paquet constitué est de poids > 2/3 sauf 1 (sinon on pourra
encore mettre un objet).
3. Montrer que c’est un algorithme d’approximation polynomial dont la solution offerte S (S := nombre
de paquets) vérifie
3
SOpt ≤ S ≤ 1 + SOpt
2
où SOpt est la solution optimale (nombre minimum de paquets).
.
– Le tri se fait en temps polynomial O(n log n) (si n est le nombre des objets).
– Après les rangements des paquets vont se faire en au plus O(n2 ) itérations.
– Comme S est une solution et SOpt la plus petite solution pour un problème d’optimisation difficile, nous
avons
SOpt ≤ S .
– Tous les paquets sont remplis à plus de deux tiers sauf au plus 1 (même pour la solution optimale), nous
avons donc (en notant par m le nombre de paquets d’un algorithme quelconque)
4. Si le raisonnement précédent est basé sur 1/3, est-ce-que la même démarche fonctionne si on prend
1/4 (au lieu et en place de 1/3) ?
.
– On espère que le même raisonnement va conduire à
4
SOpt ≤ S ≤ 1 + SOpt .
|{z} 3
problème ?
Si on revient à l’exemple
[.61, .59, .54, .52, .52, .45, .44, .43, .42, .40, .40, .36, .36, .36, .35]
[.61, .59, .54, .52, .52, .45, .44, .43, .42, .40, .40, .36, .36, .36, .35, .24, .24, · · · , .24 ]
| {z }
un grand nombre
Il est clair qu’on a aussi un nombre indéfini de paquets avec [0.24, 0.24, 0.24] (de poids 0.72 < 3/4) qui ne
sont pas remplis à plus de 3/4.
Donc, on n’a plus l’assertion “tous les paquets sont remplis à 3/4 sauf 1” ! (On aura toujours l’assertion
équivalente pour 2/3.)
– D’autre part, le cours nous dicte qu’il y a une limite à l’approximabilité sauf si P = N P . Autrement dit,
on aura toujours
S − SOpt 2
≥ 1 − > ε > 0.
S 3
(sauf si P = N P .)
2
M1 Année 2020 – 2021
3. Dans le cas où on a besoin de générer plusieurs bits aléatoires montrer qu’on peut “optimiser” en
“recyclant des bits”.
3. Montrer que pour k > ν alors k clauses de la formule F peuvent être SAT si et seulement si au moins
k − ν clauses de Fc peuvent être SAT.
.
“retour” Supposons que k − ν clauses de Fc peuvent être SAT. On va satisfaire ν clauses de F` car pour
satisfaire les k − ν clauses de Fc on fixe au plus k − ν variables et le glouton permet de satisfaire ν clauses
longues.
“aller” S’il n’est pas possible de satisfaire au moins k − ν clauses de Fc alors satisfaire l’ens. de toutes les
clauses longues ne suffira pas à satisfaire au moins k clauses.
4. Déduire alors que MAXSAT ∈ FPT.
. |Fc | = m − ν ≤ m < 2k. Chaque clause courte a au plus k littéraux. Le nombre de variables impliquées dans
2
les clauses courtes est < 2k2 . On peut donc décider si k − ν clauses de Fc peuvent être SAT en 2O(k ) n.