Somme de sous-ensemble:
Entrée: {a1, a2, ..., am} st M = {1..m} et ai sont des nombres entiers non négatifs et S⊆ {1..k} et Σai (i∈S) = t
Cloison:
Entrée: {a1, a2, ..., am} et S⊆ {1, · · ·, m} st Σai (i∈S) = Σaj (j∉S)
Partition Np Proof:
si le prouveur fournit des partitions (P1, P2) pour le vérificateur, le vérificateur peut facilement calculer la somme de P1 et P2 et vérifier si le résultat est 0 en temps linéaire.
NP_Hard: SubsetSum ≤p PARTITION
Soit x l'entrée de SubsetSum et x = 〈a1, a2, ..., am, t〉 et Σai (i de 1 à m) = a
Cas 1: 2t> = a:
Soit f (x) = 〈a1, a2, ..., am, am + 1〉 où am + 1 = 2t − a
Nous voulons montrer que x∈SubsetSum ⇔ f (x) ∈PARTITION
donc il existe S⊆ {1, ..., m} st T = {1..m} - S et Σai (i∈T) = at
et Soit T '= {1 ... m, m + 1} - S donc Σaj (j∈T') = a-t + 2t-a = t
qui est exactement Σai (i∈S) = t et il montre f (x) ∈PARTITION
maintenant, nous allons également montrer que f (x) ∈PARTITION ⇔ x∈SubsetSum
il existe donc S⊆ {1, ..., m, m + 1} st T = {1, ..., m, m + 1} - S et Σai (i∈T) = [a + (2t-a ) -t] = t
et il montre Σai (i∈T) = Σaj (j∈S) donc m + 1∈T et S⊆ {1, · · ·, m} et Σai (i∈S) = t
donc x∈SubsetSum
Cas 2: 2t = <a :
nous pouvons vérifier la même chose, mais cette fois-ci, am + 1 est a − 2t