Le probl`eme de la somme de sous-ensemble
Question 1 Qu’est-ce qu’un probl`eme NP-complet ?
Nous consid´erons le probl`eme suivant: Soient donn´ees deux s´equences d’entiers x1,...,xket
y1,...,yket un entier S. On veux savoir si il existe xiet yjavec xi+yj=S. L’algorithme le
plus simple est en O(k2) en supposant que les op´erations ´el´ementaires ont un coˆut constant.
Question 2 Donnez un algorithme en O(k∗log2(k)).
Le probl`eme de la somme de sous-ensemble. Un sous-ensemble fini d’entiers S⊂Zet un
entier Msont donn´es. Le probl`eme est de d´ecider, si il y a un sous-ensemble non-vide de Sdont
la somme des ´el´ements est M.
L’algorithme le plus simple pour r´esoudre le probl`eme de la somme de sous-ensemble parcourt
tous les sous-ensembles et teste si leur somme est ´egale `a M.
Question 3 Quel est la complexit´e de cet algorithme ?
Question 4 Donnez un algorithme plus efficace en se basant sur l’id´ee suivante: On s´epare Sen
deux sous-ensembles de mˆeme taille. Donnez la complexit´e de l’algorithme.
Question 5 Pourquoi est-ce qu’on ne peut pas s´eparer en quatre, etc. pour obtenir encore une
meilleure complexit´e ?
Un autre algorithme est donn´e comme suit: Soit S={x1,...,xn}. Soit Q(i, s) = 1 ssi il y a
un sous-ensemble de {x1, . . . , xi}dont la somme est s. On consid`ere toutes les valeurs de Q(i, s)
pour 1 ≤i≤net sentre deux bornes choisis judicieusement. On calcule les Q(i, s) r´ecursivement.
Question 6 Comment choisir les bornes ? Donnez l’algorithme. Quel est la complexit´e de cet
algorithme ?
Question suppl´ementaire:
Question 7 Montrez que le probl`eme de la somme de sous-ensemble est NP-complet. Indication:
R´eduisez 3-CNF-SAT (Satisfaisabilit´e de formules bool´eennes en forme normale conjonctive avec
exactement trois literaux par clause).
1