完全なカバーをサブセット合計に削減


7

サブセット合計問題(整数のシーケンスおよび整数と、合計が正確にになるサブシーケンスがあるか)がNP完全であることを示します。S=i1,i2,,inkSk

ヒント:正確なカバー問題を使用してください。

正確なカバーの問題は次のとおりです。セットのファミリーがある場合、ペアワイズの互いに素なセットのサブファミリーで構成されるセットカバーは存在しますか?S1,S2,,Sn

まず、この問題がことを示すために、次のことを行う必要がありますか?NP

非決定性チューリングマシンは、まず、探しているサブシーケンスがどれであるかを推測し、合計が線形時間で正確にkになることを確認できます。これは正しいです?

それがNP完全であることを示すために、正確なカバー問題をサブセット合計にどのように減らすことができますか?次のようですか?

正確なカバーの問題は、すべての要素が1つのセットに含まれている場合にのみ解決策があります。

各数が要素のセットに対応し、がセット全体に対応するように、セットと数を検討します。あると仮定要素は及び異なるセット。Skknk

各セットSを、iがSにある場合はi番目の位置がであり、そうでない場合はi番目の位置がである数値に置き換えます。10

kを、数値コピーである数値に設定します。n1


1
削減が機能することを証明してみてください。あなたが成功すれば、あなたはそれが成功することを知るでしょう。それ以外の場合は、製図板に戻ります。
Yuval Filmus 14

回答:


5

基本的な考え方:正確なカバー問題では、各要素は数値に削減されます。次に、各セットは、カバーする数の合計に削減されます。最後に、をすべての数値の合計に設定します。k

この削減は常に1つの方法で機能します。正確なカバー問題の解が存在する場合、サブセット合計問題の解も存在します。

難しいのは、反対の方法を証明することです。ささいな数字は機能しません。要素がに削減され、セットが1,2,3,4

  • S1={3,4}
  • S2={3}

サブセット合計への削減は、と数値で、YESを返しますが、正確なカバー問題の解決策はありません!7,3k=10

数字を選ぶときはもっと賢くする必要があります。前の数値の欠点は、がを置き換えることができることです。番号の置き換えを望まない。したがって、数値には十分に大きなギャップが必要です。要素の厳密なカバー問題で、最初の要素が減少するとします。2番目の数値はどのくらいの大きさにする必要がありますか?ある最初の番号を含むことができるセットが。したがって、2番目の要素はよりも大きい数に減らして、が何回出現しても、2番目の数を置き換えることができないようにする必要があります。2番目の要素を減らしましょう3 1,2n12n12n112n。同じ引数が3番目の引数にも適用されるため、に減らします。2n×2n=4n

結論として、厳密なカバー問題の番目の要素の値はです。各セットは、カバーする数の合計に削減されます。i2in

ここで、正確なカバーがNP-Hardであることを示しました。それがNP-Completeであることを示すために、それがNPにも含まれていることを証明する必要があります。それは比較的簡単だと思います。そのためのヘルプが必要な場合は、いくつかのヒントを提供します。


4

サブセットの合計は、パーティションの問題から簡単に変換できます。Exact Coverをそれに削減することの証明は、3次元マッチングの証明に似ており、GareyとJohnsonの教科書で見つけることができます。証明はやや複雑です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.