Чи виявлення «подвійних» арифметичних прогресій 3SUM-жорстке?


20

На це надихає питання інтерв'ю .

Нам дається масив цілих чисел і ми повинні визначити, чи є чіткі такі, що i < j < ka1,,ani<j<k

  • akaj=ajai
  • kj=ji

тобто послідовності і обидва знаходяться в арифметичній прогресії.{ i , j , k }{ai,aj,ak}{i,j,k}

Для цього існує простий алгоритм , але пошук підквадратичного алгоритму видається невловимим.O(n2)

Це відома проблема? Чи можемо ми довести 3SUM-твердість цього? (чи, можливо, надати підквадратичний алгоритм?)

Якщо вам подобається, ви можете припустити і що для деякої відомої постійної . (У проблемі інтерв'ю, ).0<a1<a2<...<anar+1arKK>2K=9

Відповіді:


12

Це відкрита проблема.

Можливо, деяку слабку форму твердості 3SUM можна було б довести, пристосувавши результат статті "STOC 2010" Михайла Патрашку " До нижньої межі полінома для динамічних проблем ". По-перше, дозвольте мені визначити послідовність тісно пов'язаних проблем. Вхід до кожної задачі є відсортованим масивом різних цілих чисел.A[1..n]

  • 3SUM: Чи існують окремі індекси такі, що ?i,j,kA[i]+A[j]=A[k]

  • i<jA[i]+A[j]=A[i+j]

  • i,j,kA[i]+A[j]=2A[k]

  • i<jA[i]+A[j]=2A[(i+j)/2]

Ω(n2)αA[i]+βA[j]+γA[k]+δα,β,γ,δA[i]+A[j]A[k]Ω(n2)

Ω(n2/f(n))fΩ(n2/f2(nf(n)))O(n1.8)O(n1.9)

Ω(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!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.