サブセット合計問題はNP完全ですか?


8

私が正しく知っている場合、サブセット合計問題はNP完全です。ここにn個の整数の配列があり、ターゲット合計tが与えられた場合、ターゲットから合計できる配列から数値を返す必要があります(可能な場合)。

しかし、この問題は、多項式時間でテーブルを構築するダイナミックプログラミング法では解決できません。nX tテーブルで、最後の数が出力に確実に含まれ、ターゲットがt- a [n]になる場合などです。その他の場合、最後の数は含まれ、ターゲットは同じtのままですが、配列のサイズはn-1になります。したがって、この方法で問題のサイズを小さくし続けます。

このアプローチが正しい場合、このn * tの複雑さは多項式ではありませんか?そして、これがPに属し、(私が聞いたことから)NP完全である場合、P = NP

確かに、私はここで何かを見逃しています。この推論の抜け穴はどこですか?

おかげで、


1
Math.SEからのクロスポスト
Peter Taylor、

3
それは素敵な質問ですが、これはそのような質問の場所ではありません。
フランク・シアラー、

回答:


12

あなたの論理は正しいです-そしてあなたが説明したことは、それをで解決する有効なサブセット合計アルゴリズムですO(nt)

ただし、このタイプのアルゴリズムは疑似多項式であり、入力を表すために使用されるビット数に対して指数関数的です。つまり、t1000の場合、さらに0を追加することでプログラムを10倍遅くすることができます(t現在は10000です)。

だから、アルゴリズムは多項式にありながらnt、それはに指数関数的であるサイズの入力の(あなたが入力して、それらを呼び出すために好きな文字の数、ビット、)。

したがって、この問題はPにはありません(P = NPまたは類似のものを除く)。

出典および参考文献

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