2つのサブセットの合計が可能な限り近くなり、セットのカーディナリティーが等しい(nが偶数の場合)または1だけ異なるように、Nの指定された数値(等しくても等しくなくてもよい)を2つのサブセットに分割したい( nが奇数の場合)。
私はこれを擬似多項式時間で実行できると思います。ここで、はセット内の数値の合計です。A
これよりうまくできますか?つまり、で時間で実行される疑似多項式時間アルゴリズムはありますか?c < 2
前もって感謝します!
2つのサブセットの合計が可能な限り近くなり、セットのカーディナリティーが等しい(nが偶数の場合)または1だけ異なるように、Nの指定された数値(等しくても等しくなくてもよい)を2つのサブセットに分割したい( nが奇数の場合)。
私はこれを擬似多項式時間で実行できると思います。ここで、はセット内の数値の合計です。A
これよりうまくできますか?つまり、で時間で実行される疑似多項式時間アルゴリズムはありますか?c < 2
前もって感謝します!
回答:
時間で決定問題を解決できます。
数列をます。定義セットは、このようなことであることをのIFFが存在するサブシーケンス長さのの合計その。を計算した場合、問題を解決するためにを実行するには、追加時間が必要です。F S(I 、J )∈ F S SのJ I F S O (N A )F S
場合と、パーティション、二つのサブ配列されている、その後、S 2 S
ここで、はミンコフスキー和であり、タプル間の加算は座標的に定義されます。
主張:およびからを計算するには、時間かかります。F S 1 F S 2 〜O(| S | A )
証明:サイズ 2つのテーブルに2D畳み込みを適用します。
アルゴリズムは、シーケンスを2つの等しいサイズのシーケンスに分割し、それぞれに再帰を適用して、結果のミンコフスキー和を求めます。ましょう、アルゴリズムへの入力がある場合、時間を実行して、最悪の場合での要素及び上部和で結合しています。我々は
示す。N A T A(N )= 2 T A(N / 2 )+ A 〜O(N )T A(N )= 〜O(N A )
非表示の係数はです。ログをN ログN A
誰かが因子を気にしている場合は、注意深く分析することで、Chaoのアルゴリズムの時間の複雑さがことを証明でき。O (n A log (n A ))
証明。再帰ツリーの偶数層で、セットを2つの等しいサイズのセットとにします。これにより、 および再帰ツリーの奇数番目のレイヤーで、セットを2つの「等しく合計された」セットとに分割します。正確には、合計セットを2つのセットと分割し、それぞれの合計がになるようにします。ささいな動的プログラミングでその要素を処理できます。S 1 S 2 T e(n 、A )= T o(n / 2 、A ')+ T o(n / 2 、A − A ')+ O (n A log (n A ))、S S 1 S 2 S A S 1 S 2 ≤ A