たぶんこれは非常に簡単ですが、この削減を得るのに苦労しています。Subset Sumを Partitionに減らしたいのですが、現時点では関係がわかりません!
レビン削減を使用してこの問題を減らすことは可能ですか?
わかりにくい場合は、説明を書いてください!
たぶんこれは非常に簡単ですが、この削減を得るのに苦労しています。Subset Sumを Partitionに減らしたいのですが、現時点では関係がわかりません!
レビン削減を使用してこの問題を減らすことは可能ですか?
わかりにくい場合は、説明を書いてください!
回答:
ましょうサブセット和、のインスタンスでLは数値のリスト(マルチセット)であり、そしてBは、目標合計です。S = ∑ Lとしましょう。してみましょうLは、「追加することによって形成され、リストもS + Bを、2 Sに Lを。
サブリストがある場合(1)に加算Bは、その後、L ':2つの等しい部分に分割することができるM ∪ { 2 S - B }及びL ∖ M ∪ { S + B }。実際、最初の部分の合計はB + (2 S − B )= 2 Sになり、2番目の部分の合計は(S − B )+ (S + B。
(2)を2つの等しい部分P 1、P 2に分割できる場合、Bに加算するLのサブリストがあります。実際、(S + B )+ (2 S − B )= 3 Sであり、各部分の合計は2 Sであるため、2つの要素は異なる部分に属します。一般性を失うことなく、2 S - B ∈ P 1。P 1の残りの要素は次のものに属しますへと合計 B。
によって言及された答え @Yuval Filmusがは間違っています(負の整数がない場合のみ正しいです)。次のマルチセットを検討してください。
ターゲットの合計はです。サブセットがないことがわかっています。次に、パーティション問題のインスタンスを作成します。追加した2つの新しい要素である2 σ - T = 12およびσ + T = 3。:マルチセットは今である { - 5 、2 、2 、2 、2 、2 、3 、12 }との総和であります
パーティションの問題は、サブセット与える回答解決 2つの新しい要素が同一サブセット(半分の和に分割する他の方法が存在しない)であり、ここ。したがって、これは反例です。正解は次のとおりです。
その値は要素の追加。マルチセットの合計は、現在2 tです。合計tの 2つのサブセットを与えるパーティション問題を解きます。パーティションの1つだけに新しい要素が含まれます。合計がtである他のパーティションを選択し、サブセットの問題をパーティションの問題に減らすことで解決しました。これがリンクの説明です。
これは簡単な証明です:
SET-PARTITIONが多項式時間で検証できることは簡単にわかります。パーティション与えられた場合、P 2は2つを合計し、それらの合計が互いに等しいことを確認します。これは明らかに多項式時間検証です(合計は多項式演算であり、最大で多くの合計)。
証明の核心は、SUBSETSUMをPARTITIONに減らすことです。そのために設定された所定のと値(サブセット和クエリ)新たなセットを形成。これが削減であることを確認するには:
()いくつかが存在すると仮定するよう次に我々はだろう
()パーティションが存在すると仮定するのよう。通知、この誘導自然のパーティション及びのように我々はWLOGその
, and conversely from a partition we can form a soltuion and therefore the mapping is a reduction (because is in the language/set SUBSETSUM is in the language/set PARTITION) and it is clear to see that the transformation was done in polynomial time.
Subset Sum:
Input: {a1,a2,...,am} s.t M={1..m} and ai are non negative integer and S⊆{1..k} and Σai(i∈S) = t
Partition:
Input: {a1,a2,...,am} and S⊆ {1,· · ·,m} s.t Σai(i∈S) = Σaj(j∉S)
Partition Np Proof: if prover provides a partitions(P1,P2) for verifier, verifier can easily calculate the sum of P1 and P2 and check if the result is 0 in linear time.
NP_Hard: SubsetSum ≤p PARTITION
Let x be input of SubsetSum and x=〈a1,a2,...,am,t〉 and Σai(i from 1 to m) = a
Case1: 2t >= a:
Let f(x)=〈a1,a2,...,am,am+1〉 where am+1= 2t−a
We want to show that x∈SubsetSum ⇔ f(x)∈PARTITION
so there exist S⊆ {1,...,m} s.t T = {1..m} - S and Σai(i∈T) = a-t
and Let T' = {1...m,m+1} - S so Σaj(j∈T') = a-t+2t-a = t
which is exactly Σai(i∈S)= t and it shows f(x)∈PARTITION
now We also will show that f(x)∈PARTITION ⇔ x∈SubsetSum
so there exist S⊆ {1,...,m,m+1} s.t T = {1,...,m,m+1} - S and Σai (i∈T)= [a+(2t-a)-t]=t
and it shows Σai(i∈T) = Σaj(j∈S) so m+1∈T and S⊆ {1,· · ·,m} and Σai(i∈S)= t
so x∈SubsetSum
Case 2: 2t =< a :
we can check same but just this time am+1 is a−2t
this link has a good description of both reductions, partition to subset-sum and subset-sum to partition. I think it is more obvious than YUVAL's answer. useful link