「サブセット製品」の問題はNP完全ですか?


21

サブセット合計問題は、古典的なNP完全問題です。

数字のリストとターゲットが与えられた場合、合計がになる数字サブセットはありますか?LkLk

学生から、「サブセット製品」問題と呼ばれるこの問題の変種がNP完全かどうかを尋ねられました。

数値のリストとターゲットが与えられた場合、積がからの数値のサブセットはありますか?k L kLkLk

私はいくつかの検索を行ったが、おそらく私はそれらを逃したが、この問題について話しているリソースを見つけることができなかった。

サブセット製品の問題はNP完全ですか?


2
興味深い答えですが、私は疑問に思っています:kとすべての数値のログを取得するだけで、Subset Sumに減らすことはできませんか?(たぶん私は別の質問をする必要がありますか?)
j_random_hacker 14年

1
@j_random_hacker、はい、このサイトとオンラインで検索しても答えが見つからない場合は、別の質問を投稿することをお勧めします。それはいい答えの良い質問です(ヒント:ログを取ると整数ではないものが残ります;逆の場合は、指数の大きさが数値のサイズにどう影響するかを考えてください)、しかしそれは少し接線です独自の質問の方が良いでしょう。
DW

1
@DW:ありがとうございます。時間があるときは、提案どおりにやります。
j_random_hacker 14年

回答:


13

コメントでは、X3CからYaoに起因するSUBSET PRODUCTへの削減について言及しています。削減の目標を考えると、削減がどのようなものであったかを推測するのは難しくありませんでした。

定義:

3セットによる正確なカバー(X3C)

で有限集合が与えられた場合 3の倍数、および収集の3要素のサブセットの、ない、正確なカバー含んのための、とのすべての要素で正確に一度に発生する?| X | C X C C X C C X C "X|X|CXCCXCCXC

サブセット製品

数値のリストとターゲットが与えられた場合、積がからの数値のサブセットはありますか?k L kLkLk

X3CインスタンスをSUBSET PRODUCTインスタンスに減らすには:

  1. のメンバーと最初の間に全単射マッピングを確立します 素数。およびサブセットのメンバーをマップされた素数で置き換えます。| X | X CX|X|XC

  2. 各サブセットに対して、そのメンバーを一緒に乗算します。結果の製品リストは、SUBSET PRODUCTインスタンスではです。ステップ1のマッピングには素数が使用されるため、一意の因数分解定理によりサブセットが同等である場合、積は同等であることが保証されます。LCL

  3. のメンバーを一緒に乗算します。結果の製品は、SUBSET PRODUCTインスタンスの値です。kXk

の素因数は、まさにのメンバーです。の数値の素因数は、サブセットのメンバーに正確に対応します。したがって、のソリューションメンバをのサブセットにマッピングすることにより、新しいSUBSET PRODUCTインスタンスのソリューションをX3Cソリューションに変換できます。X L C L CkXLCLC

3つの変換ステップのそれぞれには、入力のサイズに多項式である演算が含まれますまたはメンバーのサイズ。最初の素数はエラトステネスのふるいを使用して時間O()に生成でき、素数定理により空間に収まることが保証されます。X | X | | X | O | X | 2 ln | X ||X|X|X||X|O(|X|2ln|X|)


1
+1ですが、削減を進めるには、最初の| X |が必要だと思います 素数は| X |の多項式であるビット数で表すことができます -私はこれについて正しいですか、もしそうなら、その保証はありますか?
j_random_hacker 14年

1
素晴らしい点。それに対処するために段落を追加しました。
カイルジョーンズ14年

1
ありがとう、定理はそれを固めます!ピックするのではなく、リンク先のページによると、k番目の素数は約k log kであり、エラトステネスのふるいは時間O(n log log n)nまでのすべての素数を明らかに計算し、n = k log kは、最初のkを計算するために、O(k)(O(| X |))ではなく、O(k * log(k)* log(log(k log k)))の時間を与えるように見えます。そのように素数。
j_random_hacker 14年

1
カイル・ジョーンズ、ステップ3が指数関数的なサイズの数値を作成することは重要ではありませんか?これは本当に多項式時間の短縮ですか?k
user1742364 14

3
@ user1742364いいえ、計算には指数関数的な数の演算が必要ないか、指数関数的な数のビットを格納する必要がないためです。計算にはが必要ですk | X |kk|X|乗算と乗算は最悪の場合演算です。ながらkが最大素数よりも指数関数的に大きくなるPにおけるX、格納するために必要なビットの数kがあろうO 対数P O(n2)kPXkO(logP)
カイルジョーンズ14

9

[ 1 ]によると:はい

また、同じリファレンスを引用します。コメント:これと問題42には微妙な技術的な違いがあります。前者の場合、数値を単項で表現できるようにすることで得られる擬似効率的なアルゴリズムがあります。ただし、すべてのNP完全問題が高速アルゴリズムで解決できない限り、サブセット積問題は、この不合理な入力表現を使用する「効率的な」方法でも解決できません。

削減については[2]をご覧ください。[2]:フェロー、マイケル、ニールコブリッツ。「固定パラメータの複雑さと暗号化。」応用代数、代数アルゴリズムとエラー修正コード(1993):121-131。


1
可能であれば、雑誌記事の実際の削減または引用はいいでしょう。
templatetypedef

3
@templatetypedef Garey and Johnsonでは、削減は3セットの正確なカバーになります。Yaoとのプライベートコミュニケーションのため。
AJed

暗号化ペーパーの削減は、ターゲット製品がインスタンスで指定されたモジュラスを法とするターゲット数との一致によって置き換えられるという別の問題に対するものです。(証明を正しく理解していても、モジュラスの大きさは指数関数的であるため、とにかく弱い硬度しか得られません。)
ジェフリーボスブーム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.