"दोहरी" अंकगणितीय प्रगति का पता लगाना 3SUM- कठिन है?


20

यह एक साक्षात्कार प्रश्न से प्रेरित है ।

हम पूर्णांकों की एक सरणी दिया जाता है और विशिष्ट निर्धारित करने के लिए देखते हैं अगर है मैं < j < कश्मीर ऐसा है किa1,,ani<j<k

  • akaj=ajai
  • kj=ji

यानी, दृश्यों और { मैं , जे , कश्मीर } अंकगणितीय प्रगति में दोनों कर रहे हैं।{ai,aj,ak}{i,j,k}

इसके लिए एक आसान एल्गोरिदम है, लेकिन एक उप-द्विघात एल्गोरिथ्म को खोजने में मायावी लगता है।O(n2)

क्या यह एक ज्ञात समस्या है? क्या हम 3SUM-कठोरता को साबित कर सकते हैं? (या शायद एक उप-द्विघात एल्गोरिथ्म प्रदान करता है?)

यदि आप चाहें, तो आप मान सकते हैं < एक एन और कहा कि एक आर + 1 - एक आरकश्मीर कुछ ज्ञात निरंतर के लिए कश्मीर > 2 । (साक्षात्कार समस्या में, के = 9 )।0<a1<a2<...<anar+1arKK>2K=9

जवाबों:


12

यह एक खुली समस्या है।

A[1..n]

  • 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 या ConvolutionAiture के लिए एक समान चाल नहीं जानता!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.