Le probl`eme de la somme de sous

publicité
Le problème de la somme de sous-ensemble
Question 1 Qu’est-ce qu’un problème NP-complet ?
Nous considérons le problème suivant: Soient données deux séquences d’entiers x1 , . . . , xk et
y1 , . . . , yk et un entier S. On veux savoir si il existe xi et yj avec xi + yj = S. L’algorithme le
plus simple est en O(k 2 ) en supposant que les opérations élémentaires ont un coût constant.
Question 2 Donnez un algorithme en O(k ∗ log2 (k)).
Le problème de la somme de sous-ensemble. Un sous-ensemble fini d’entiers S ⊂ Z et un
entier M sont donnés. Le problème est de décider, si il y a un sous-ensemble non-vide de S dont
la somme des éléments est M .
L’algorithme le plus simple pour résoudre le problème de la somme de sous-ensemble parcourt
tous les sous-ensembles et teste si leur somme est égale à M .
Question 3 Quel est la complexité de cet algorithme ?
Question 4 Donnez un algorithme plus efficace en se basant sur l’idée suivante: On sépare S en
deux sous-ensembles de même taille. Donnez la complexité de l’algorithme.
Question 5 Pourquoi est-ce qu’on ne peut pas séparer en quatre, etc. pour obtenir encore une
meilleure complexité ?
Un autre algorithme est donné 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ère toutes les valeurs de Q(i, s)
pour 1 ≤ i ≤ n et s entre deux bornes choisis judicieusement. On calcule les Q(i, s) récursivement.
Question 6 Comment choisir les bornes ? Donnez l’algorithme. Quel est la complexité de cet
algorithme ?
Question supplémentaire:
Question 7 Montrez que le problème de la somme de sous-ensemble est NP-complet. Indication:
Réduisez 3-CNF-SAT (Satisfaisabilité de formules booléennes en forme normale conjonctive avec
exactement trois literaux par clause).
1
Téléchargement