一般化された3SUM(k-SUM)問題?


29

3SUMの問題は、3つの整数を識別しようとしB CセットからSサイズをNよう+ B + C = 0a,b,cSna+b+c=0

二次、すなわちよりも良い解はないことが推測されます。または、別の言い方をすると:on log n + n 2o(n2)o(nlog(n)+n2)

これが一般化問題に適用される場合、私は思っていたので:整数を探すのためのI [ 1 ... K ]集合でSサイズのNようにΣ I [ 1 .. kの] A I = 0aii[1..k]Sni[1..k]ai=0

私はあなたがこれを行うことができると思いますのためのk 2(それは、単純な一般化するために些細だのk = 3アルゴリズム)。 しかし、kの他の値に対してより良いアルゴリズムはありますか?o(nlog(n)+nk1)k2k=3
k


意思決定ツリーの複雑さの下限を調べる3SUMに関する最近のニュース/ペーパー
vzn 14

回答:


27

k -SUMは、次のようにしてより迅速に解くことができます。

  • 偶数kk / 2個の入力要素のすべての合計のソート済みリストSを計算します。かどうかを確認してくださいSは、いくつかの数の両方が含まれ、Xとその否定を- X。アルゴリズムはO n k / 2 log n 時間で実行されます。k/2SxxO(nk/2logn)

  • 奇数kk 1 / 2入力要素のすべての合計のソート済みリストSを計算します。各入力要素aについて、ある数xについてSxa xの両方を含むかどうかを確認します。(2番目のステップは、基本的に3SUM のO n 2時間アルゴリズムです。)アルゴリズムはO n k + 1 / 2時間で実行されます。(k1)/2aSxaxxO(n2)O(n(k+1)/2)

両方のアルゴリズムは、計算の線形決定木モデルの特定の弱いが自然な制限の定数kに対して最適です(kが偶数で2より大きい場合の対数係数を除く)。詳細については、以下を参照してください。k


stackoverflow.com/a/14737071/511736は、k = 4の場合にO(n ^ 2)アルゴリズムを提案します
Kowser

1
ハッシュは不正行為です。StackOverflowで説明されているアルゴリズムは、整数入力に対してO(n ^ 2)時間でのみ実行され、高い確率でのみ、適切なランダムハッシュ関数を使用する場合にのみ実行されます。私の答えのアルゴリズムは実際のRAMモデルで機能し、完全に決定論的であり、時間制限は最悪の場合です。「ビットトリック」を使用して、整数設定でログ係数を削減することもできますが、それはちょっと退屈です。
JeffE

12

dnΩ(d)2o(n)

言い換えると、指数時間仮説を仮定すると、アルゴリズムは指数の定数因子(多項式因子まで最適です。n

(1)Mihai PatrascuおよびRyan Williams。より高速なSATアルゴリズムの可能性について 手続き 第21回離散アルゴリズムに関するACM / SIAMシンポジウム(SODA2010)



-1

http://arxiv.org/abs/1407.4640を参照してください

rSUM問題を解決するための新しいアルゴリズムValerii Sopin

抽象:

場合によっては時間の複雑さの準二次評価を使用して、任意の自然rのrSUM問題を解決するための決定されたアルゴリズムが提示されます。使用されるメモリ量の観点から、取得されたアルゴリズムは2次以下の順序にもなります。得られたアルゴリズムの考え方は、整数を考慮するのではなく、2進記数法でこれらの数値のk∈N連続ビットを考慮することに基づいています。整数の合計がゼロに等しい場合、これらの数値のk個の連続するビットによって表される数値の合計は、ゼロに十分に「近い」必要があることが示されています。これにより、解決策が確立されていない数字を破棄することができます。

それはこの問題で新しいものです。


1
質問に関連する記事の結果を明示的に引用できますか?(記事全体が関連している場合は、抄録を貼り付けても構いません。)SEへの投稿は単なるリンク以上のものであると想定されています。
FrankW 14

1
現状では、この回答は回答ではなく(潜在的に有用な)コメントです。そのため、独自の言葉でアルゴリズムを説明するなど、元のコンテンツを含める必要があります。あなたはそれをやりたいですか?回答しない場合は、回答をコメントに変換できます。(私はあなたの担当者のためにコメントできなかったことを知っています。)
ラファエル

それは信頼できる論文のようには見えません。「場合によっては準二次の時間の複雑さ」という主張は有用な声明ではありません。時間の複雑さは、定義上最悪の場合の実行時間です。バブルソートは線形時間で実行される場合もありますが、時間の複雑さは2次のままです。
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.