「二重に」算術的な進行を検出するのは3SUM難しいですか?


20

これはインタビューの質問に触発されたものです。

我々は、整数の配列を与えられている1... Nと異なるがあるかどうかを決定する必要がI < J < Kようにa1,,ani<j<k

  • akaj=ajai
  • kj=ji

すなわち、シーケンスおよび{ i j k }は両方とも算術級数です。{ai,aj,ak}{i,j,k}

これには簡単なアルゴリズムがありますが、2次アルゴリズムを見つけるのはわかりにくいようです。O(n2)

これは既知の問題ですか?これの3SUM硬さを証明できますか?(または、サブ2次アルゴリズムを提供しますか?)

必要に応じて、想定できます< NそのR + 1 - RKいくつかの既知の定数のK > 2。(インタビューの問題では、K = 9)。0<a1<a2<...<anar+1arKK>2K=9

回答:


12

これは未解決の問題です。

Mihai PătrașcuのSTOC 2010論文「動的問題の多項式下限に向けて」の結果を適用することで、おそらく3SUM硬さの弱い形式を証明できます。最初に、密接に関連する問題のシーケンスを定義します。各問題への入力は、異なる整数のソートされた配列ですA[1..n]

  • 3SUM:A [ i ] + A [ j ] = A [ k ]のような個別のインデックスはありますか?i,j,kA[i]+A[j]=A[k]

  • Convolution3SUM:A [ i ] + A [ j ] = A [ i + j ]のようなインデックスはありますか?i<jA[i]+A[j]=A[i+j]

  • 平均:A [ i ] + A [ j ] = 2 A [ k ]のような個別のインデックスはありますか?i,j,kA[i]+A[j]=2A[k]

  • ConvolutionAverage:A [ i ] + A [ j ] = 2 A [ i + j / 2 ]のようなインデックスはありますか?(これはあなたが尋ねている問題です。)i<jA[i]+A[j]=2A[(i+j)/2]

私の博士論文では、私はこれらの問題のすべての4つが必要であることを証明しただけできるフォーム「の照会計算の決定木モデルの時間がα A [ I ] + β A [ J ] + γ A [ k ] + δ正、負、またはゼロ?」、ここで、α β γ δは実数(入力に依存しない)です。特に、このモデルの3SUMアルゴリズムは「A [ iΩ(n2)αA[i]+βA[j]+γA[k]+δα,β,γ,δより大きい、小さい、または等しい A [ K ]「少なくとも? Ω N 2回の下限は、計算のより一般的なモデルでsubquadraticアルゴリズムを除外しないことを- 。実際、それはさまざまな整数RAMモデルでいくつかのログファクター削減することが可能ですが、どのような種類のより一般的なモデルがより大きな助けになるかは誰も知りません。A[i]+A[j]A[k]Ω(n2)

注意深いハッシュ化を使用して、Pǎtraşcuは3SUMが必要な場合ことを証明時間を予想、任意の機能のためにF、次いでConvolution3SUMは必要Ω N 2 / fは2N F N 予想時間。したがって、Convolution3SUMは「弱い3SUMハード」と言うのが妥当です。Convolution3SUMはで解決することができる場合、例えば、O N 1.8時間、次いで3SUMはで解決することができるO Ω(n2/f(n))fΩ(n2/f2(nf(n)))O(n1.8)時間。O(n1.9)

詳細については説明していませんが、並列引数は、平均が予測時間を必要とする場合、関数fに対して ConvolutionAverageがΩ n 2 / f 2N F N 予定時間。言い換えると、ConvolutionAverageは「弱平均ハード」です。Ω(n2/f(n))fΩ(n2/f2(nf(n)))

Ω(n2)Ω(n2)


KO(nlogn)

B[0..Kn]B[i]=1A[1]+iABO(KnlogKn)=O(nlogn)jA2A[1]+jA[i]+A[j]O(n)O(n)

しかし、Convolution3SUMまたはConvolutionAverageの同様のトリックは知りません!

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