私が正しく知っていれば、サブセット和問題はNP完全です。ここにn個の整数の配列があり、ターゲット合計tが与えられ、ターゲットから合計できる(可能であれば)配列から数値を返す必要があります。
しかし、この問題は、テーブルn X tを作成し、最後の数が確かに出力に含まれている場合、ターゲットがt- aになるような動的計画法では、多項式時間で解決できません。 [n]。それ以外の場合、最後の数値はnot含まれ、ターゲットは同じtのままですが、配列のサイズはn-1になります。したがって、このようにして、問題のサイズを縮小し続けます。
このアプローチが正しい場合、このn * tの複雑さは多項式ではありませんか?これがPに属し、NP完全な場合(聞いたことから)、P = NPです。
確かに、私はここで何かが欠けています。この推論の抜け穴はどこにありますか?
ありがとう、
あなたのロジックは正しいです-そしてあなたが説明したのは、O(nt)
でそれを解決する有効なサブセット合計アルゴリズムです。
ただし、このタイプのアルゴリズムはpseudopolynomialであり、入力を表すために使用されるビット数に対して指数関数的です。つまり、t
が1000の場合、さらに0を追加することでプログラムを10倍遅くすることができます(t
は10000になりました)。
したがって、アルゴリズムはn
とt
のvalueに対して多項式ですが、入力のサイズ(入力内の文字数、ビット数、呼び出したいものは何でも)。
したがって、この問題はPにはありません(P = NPまたは同様のものでない限り)。