Soma do subconjunto:
Entrada: {a1, a2, ..., am} st M = {1..m} e ai são números inteiros não negativos e S⊆ {1..k} e Σai (i∈S) = t
Partição:
Entrada: {a1, a2, ..., am} e S⊆ {1, · · ·, m} st ai (i∈S) = Σaj (j∉S)
Prova de partição Np:
se o prover fornecer partições (P1, P2) para o verificador, o verificador poderá calcular facilmente a soma de P1 e P2 e verificar se o resultado é 0 em tempo linear.
NP_Hard: SubsetSum ≤p PARTITION
Seja x entrada de SubsetSum e x = 〈a1, a2, ..., am, t〉 e Σai (i de 1 para m) = a
Caso1: 2t> = a:
Seja f (x) = 〈a1, a2, ..., am, am + 1〉 onde am + 1 = 2t − a
Queremos mostrar que x∈SubsetSum ⇔ f (x) ∈PARTITION
então existe S⊆ {1, ..., m} st T = {1..m} - S e Σai (i∈T) = em
e Seja T '= {1 ... m, m + 1} - S so Σaj (j∈T') = a-t + 2t-a = t
que é exatamente Σai (i∈S) = te mostra f (x) ∈PARTIÇÃO
Agora também mostraremos que f (x) TIPARTIÇÃO ⇔ x∈SubsetSum
então existem S⊆ {1, ..., m, m + 1} st T = {1, ..., m, m + 1} - S e Σai (i∈T) = [a + (2t-a ) -t] = t
e mostra Σai (i∈T) = Σaj (j∈S), então m + 1∈T e S⊆ {1, · ·, m} e Σai (i∈S) = t
então x∈SubsetSum
Caso 2: 2t = <a :
podemos verificar o mesmo, mas desta vez am + 1 é − 2t