3 सम: Difference between revisions
No edit summary |
No edit summary |
||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Problem in computational complexity theory}} | {{Short description|Problem in computational complexity theory}} | ||
{{redirects| | {{redirects|3सम|माल्ट पेय|एल्कोपॉप्स की तुलना#बीयर-आधारित}} | ||
{{unsolved| | {{unsolved|कंप्यूटर विज्ञान|क्या 3सम समस्या को समय पर हल करने के लिए कोई एल्गोरिदम है? <math>O(n^{2-\epsilon})</math>, कुछ के लिए <math>\epsilon>0</math>?}} | ||
[[कम्प्यूटेशनल जटिलता सिद्धांत]] में, | [[कम्प्यूटेशनल जटिलता सिद्धांत]] में, '''3सम''' समस्या पूछती है कि क्या दिया गया समुच्चय <math>n</math> वास्तविक संख्याओं में तीन तत्व होते हैं जिनका योग शून्य होता है। सामान्यीकृत संस्करण, k-सम, k संख्याओं पर समान प्रश्न पूछता है। 3सम को सरलता से हल किया जा सकता है इस प्रकार <math>O(n^2)</math> समय, और मिलान <math>\Omega(n^{\lceil k/2 \rceil})</math> गणना के कुछ विशेष मॉडलों में निचली सीमाएं ज्ञात होती हैं {{harv|एरिक्सन|1999}}. | ||
यह अनुमान लगाया गया था कि | यह अनुमान लगाया गया था कि 3सम के लिए किसी भी नियतात्मक एल्गोरिदम <math> \Omega(n^2) </math> समय की आवश्यकता होती है। इस प्रकार 2014 में, मूल 3सम अनुमान का एलन ग्रोनलुंड और सेठ पेटी ने खंडन किया था, जिन्होंने नियतात्मक एल्गोरिदम दिया था जो 3सम को हल करता है <math>O(n^2 / ({\log n} / {\log \log n})^{2/3})</math> समय {{sfn|Grønlund|Pettie|2014}} इसके अतिरिक्त, ग्रोनलुंड और पेटी ने दिखाया कि 3सम की 4-निर्णय ट्री मॉडल रैखिक निर्णय ट्री जटिलता <math> O(n^{3/2}\sqrt{\log n}) </math> है इसके पश्चात् इन सीमाओं में सुधार किया गया था।{{sfn|Freund|2017}}{{sfn|Gold|Sharir|2017}}{{sfn|Chan|2018}} | ||
2014 में, मूल | |||
इसके अतिरिक्त, ग्रोनलुंड और पेटी ने दिखाया कि | |||
3सम के लिए वर्तमान सबसे प्रसिद्ध एल्गोरिदम <math>O(n^2 (\log \log n)^{O(1)} / {\log^2 n}) </math> चलता है {{sfn|Chan|2018}} केन, लवेट और मोरन ने दिखाया कि 6-निर्णय ट्री मॉडल 3सम की रैखिक निर्णय ट्री <math>O(n{\log^2 n})</math> जटिलता है {{sfn|Kane|Lovett|Moran|2018}} पश्चात् वाली सीमा कड़ी है (लघुगणकीय कारक तक) यह अभी भी अनुमान लगाया गया है कि 3सम का समाधान <math>O(n^{2-\Omega(1)})</math> नहीं हो सका है।<ref name="kpp14" /> | |||
जब श्रेणी में तत्व पूर्णांक हों <math>[-N, \dots, N]</math>, 3सम में हल <math>O(n + N\log N)</math> किया जा सकता है इनपुट समुच्चय का प्रतिनिधित्व करके समय <math>S</math> [[बिट सरणी]] के रूप में, समुच्चय की गणना करना <math>S+S</math> तेज फूरियर रूपांतरण का उपयोग करते हुए [[असतत कनवल्शन]] के रूप में सभी जोड़ीवार योगों की और अंत में इस समुच्चय <math>S</math> की तुलना की गई थी <ref>{{Introduction to Algorithms|edition=3}} Ex. 30.1–7, p. 906.</ref> | |||
== द्विघात एल्गोरिथ्म == | == द्विघात एल्गोरिथ्म == | ||
मान लीजिए कि इनपुट ऐरे | मान लीजिए कि इनपुट ऐरे <math>S[0..n-1]</math> है कंप्यूटिंग के पूर्णांक (शब्द रैम) मॉडल में, 3सम <math>O(n^2)</math> को हल किया जा सकता है प्रत्येक संख्या डालने पर औसतन समय <math>S[i]</math> [[हैश तालिका]] में, और फिर, प्रत्येक सूचकांक के लिए <math>i</math> और <math>j</math>, जाँच कर रहा है कि हैश तालिका में पूर्णांक है या नहीं <math>-(S[i]+S[j])</math> है | ||
कंप्यूटिंग या वास्तविक रैम के [[तुलना (कंप्यूटर प्रोग्रामिंग)]] | कंप्यूटिंग या वास्तविक रैम के [[तुलना (कंप्यूटर प्रोग्रामिंग)|कंप्यूटर प्रोग्रामिंग]] आधारित मॉडल में ही समय में समस्या को हल करना भी संभव है, जिसके लिए हैशिंग की अनुमति नहीं है। नीचे दिया गया एल्गोरिदम पहले इनपुट ऐरे को सॉर्ट करता है और फिर सावधानीपूर्वक सभी संभावित जोड़ियों का परीक्षण करता है, जिससे क्रमबद्ध सूची में जोड़ियों के लिए बाइनरी खोज की आवश्यकता से बचा जा सकता है, जिससे सबसे व्यर्थ स्थिति प्राप्त होती है। समय, इस प्रकार <math>O(n^2)</math> है.<ref>[http://www.ti.inf.ethz.ch/ew/courses/CG09/materials/v12.pdf Visibility Graphs and 3-Sum] by Michael Hoffmann</ref> | ||
निम्नलिखित उदाहरण छोटे क्रमबद्ध सरणी पर इस एल्गोरिदम के निष्पादन को दिखाता है। | सॉर्ट(s);<syntaxhighlight lang="abl"> | ||
sort(S); | |||
for i = 0 to n - 2 do | |||
a = S[i]; | |||
start = i + 1; | |||
end = n - 1; | |||
while (start < end) do | |||
b = S[start] | |||
c = S[end]; | |||
if (a + b + c == 0) then | |||
एल्गोरिथम की शुद्धता इस प्रकार देखी जा सकती है। मान लीजिए कि हमारे पास समाधान | output a, b, c; | ||
// Continue search for all triplet combinations summing to zero. | |||
// We need to update both end and start together since the array values are distinct. | |||
start = start + 1; | |||
end = end - 1; | |||
else if (a + b + c > 0) then | |||
end = end - 1; | |||
else | |||
start = start + 1; | |||
end | |||
end | |||
</syntaxhighlight>निम्नलिखित उदाहरण छोटे क्रमबद्ध सरणी पर इस एल्गोरिदम के निष्पादन को दिखाता है। a के वर्तमान मान लाल रंग में दिखाए गए हैं, b और c के मान मैजेंटा में दिखाए गए हैं।<syntaxhighlight> | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==-25) | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==-22) | |||
. . . | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==-7) | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==-7) | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==-3) | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==2) | |||
-25 -10 -7 -3 2 4 8 10 (a+b+c==0) | |||
</syntaxhighlight>एल्गोरिथम की शुद्धता इस प्रकार देखी जा सकती है। मान लीजिए कि हमारे पास समाधान a + b + c = 0 है . चूंकि सूचक केवल ही दिशा में चलते हैं, हम एल्गोरिदम को तब तक चला सकते हैं जब तक कि सबसे बाईं ओर का सूचक a की ओर इंगित न कर दे। एल्गोरिथम को तब तक चलाएँ जब तक कि शेष संकेतकों में से कोई b या c, जो भी पहले हो, को इंगित न कर दे। तब एल्गोरिथ्म तब तक चलेगा जब तक अंतिम सूचक सकारात्मक समाधान देते हुए शेष पद की ओर संकेत नहीं करता है। | |||
== वेरिएंट == | == वेरिएंट == | ||
=== गैर-शून्य योग === | === गैर-शून्य योग === | ||
उन संख्याओं की | उन संख्याओं की खोज करने के अतिरिक्त जिनका योग 0 है, उन संख्याओं की खोज करना संभव है जिनका योग कोई स्थिर c है। पूर्णांक के लिए हैश तालिका खोजने के लिए मूल एल्गोरिदम को संशोधित करना सबसे सरल विधि {{tmath|1=(C -(S[i]+S[j]))}} होती है . | ||
दूसरी विधि: | दूसरी विधि: | ||
Line 62: | Line 56: | ||
* संशोधित सरणी में, 3 तत्व खोजें जिनका योग 0 है। | * संशोधित सरणी में, 3 तत्व खोजें जिनका योग 0 है। | ||
उदाहरण के लिए, यदि A=[1,2,3,4] और यदि आपको C=4 के लिए | उदाहरण के लिए, यदि A=[1,2,3,4] और यदि आपको C=4 के लिए 3सम खोजने के लिए कहा जाए, तो A के सभी तत्वों में से 4/3 घटाएं, और इसे सामान्य 3सम विधि से हल करें, अर्थात। , {{tmath|1=(a-C/3) + (b-C/3) + (c-C/3) = 0}}. | ||
=== तीन अलग-अलग सरणियाँ === | === तीन अलग-अलग सरणियाँ === | ||
एक ही सारणी में 3 संख्याओं को खोजने के | एक ही सारणी में 3 संख्याओं को खोजने के अतिरिक्त, हम उन्हें 3 अलग-अलग सारणियों में खोज सकते हैं। अर्थात, तीन सरणियाँ X, Y और Z दी गई हैं, तीन संख्याएँ खोजें {{math|''a''∈''X'', ''b''∈''Y'', ''c''∈''Z''}}, ऐसा है कि {{tmath|a+b+c{{=}}0}}. 1-सरणी वैरिएंट 3सम×1 और 3-सरणी वैरिएंट 3सम×3 को कॉल करें। | ||
3सम×1 के लिए सॉल्वर दिए जाने पर, 3सम×3 समस्या को निम्नलिखित विधि से हल किया जा सकता है (यह मानते हुए कि सभी तत्व पूर्णांक हैं): | |||
* X, Y और Z में प्रत्येक तत्व के लिए, | * X, Y और Z में प्रत्येक तत्व के लिए, समुच्चय करें: {{tmath|X[i] \gets X[i]*10+1}}, {{tmath|Y[i] \gets Y[i]*10+2}}, {{tmath|Z[i] \gets Z[i]*10-3}}. | ||
* मान लीजिए S, सारणियों X, Y और Z का संयोजन है। | * मान लीजिए S, सारणियों X, Y और Z का संयोजन है। | ||
* तीन तत्वों को खोजने के लिए | * तीन तत्वों को खोजने के लिए 3सम×1 ओरेकल का उपयोग करें {{tmath|a' \in S,\ b' \in S,\ c' \in S}} ऐसा है कि {{tmath|a'+b'+c'{{=}}0}}. | ||
* वापस करना {{tmath|a \gets (a'-1)/10,\ b \gets (b'-2)/10,\ c \gets (c'+3)/10}}. | * वापस करना {{tmath|a \gets (a'-1)/10,\ b \gets (b'-2)/10,\ c \gets (c'+3)/10}}. | ||
जिस तरह से हमने सरणियों को रूपांतरित किया, इसकी गारंटी | जिस तरह से हमने सरणियों को रूपांतरित किया, इसकी गारंटी {{math|''a''∈''X'', ''b''∈''Y'', ''c''∈''Z''}} है .<ref>For a reduction in the other direction, see [https://cs.stackexchange.com/q/37888 Variants of the 3-sum problem].</ref> | ||
=== कनवल्शन योग === | === कनवल्शन योग === | ||
सरणी के | सरणी के इच्छानुसार तत्वों की खोज करने के अतिरिक्त: | ||
:<math>S[k]=S[i]+S[j]</math> | :<math>S[k]=S[i]+S[j]</math> | ||
कनवल्शन | कनवल्शन 3सम समस्या (कन्व3सम) विशिष्ट स्थानों में तत्वों की खोज करती है:<ref name=patrascu10>{{Cite conference | doi = 10.1145/1806689.1806772| title = गतिशील समस्याओं के लिए बहुपद निचली सीमा की ओर| conference = Proceedings of the 42nd ACM symposium on Theory of computing - STOC '10| pages = 603| year = 2010| last1 = Patrascu | first1 = M. | isbn = 9781450300506}}</ref> | ||
:<math>S[i+j]=S[i]+S[j]</math> | :<math>S[i+j]=S[i]+S[j]</math> | ||
==== कन्व3सम से 3सम तक कमी ==== | |||
3सम के लिए सॉल्वर दिए जाने पर, कन्व3सम समस्या को निम्नलिखित विधि से हल किया जा सकता है।<ref name=patrascu10/> | |||
नई सरणी टी परिभाषित करें, जैसे कि प्रत्येक सूचकांक के लिए: <math>T[i]=2n S[i]+i</math> (जहाँ n सरणी में तत्वों की संख्या है, और सूचकांक 0 से n-1 तक चलते हैं)। | |||
* सरणी T पर 3सम हल करें। | |||
==== | प्रमाण: | ||
* यदि मूल सारणी में त्रिगुण <math>S[i+j]=S[i]+S[j]</math> है , तब <math>T[i+j]=2n S[i+j]+i+j = (2n S[i] + i) + (2n S[j] + j)=T[i]+T[j]</math>, इसलिए यह समाधान 3सम द्वारा T पर पाया जाता है। | |||
* इसके विपरीत, यदि नए ऐरे में ट्रिपल <math>T[k]=T[i]+T[j]</math> विथ है , तब <math>2n S[k] + k = 2n(S[i]+S[j]) + (i+j)</math>. क्योंकि <math>i+j<2n</math>, अनिवार्य रूप से <math>S[k] = S[i]+S[j]</math> और <math>k=i+j</math>, इसलिए यह S पर कन्व3सम के लिए वैध समाधान है। | |||
==== 3सम से कन्व3सम तक कमी ==== | |||
कन्व3सम के लिए सॉल्वर दिए जाने पर, 3सम समस्या को निम्नलिखित विधि से हल किया जा सकता है।<ref name=kpp14>{{Cite arXiv|eprint=1407.6756|last1=Kopelowitz|first1=Tsvi|title=3SUM Hardness in (Dynamic) Data Structures|last2=Pettie|first2=Seth|last3=Porat|first3=Ely|class=cs.DS|year=2014}}</ref><ref name=patrascu10/> | |||
कमी [[हैश फंकशन]] का उपयोग करती है। पहले सन्निकटन के रूप में, मान लें कि हमारे पास रैखिक हैश फलन है, अर्थात फलन h ऐसा है कि: | |||
कमी [[हैश फंकशन]] का उपयोग करती है। पहले सन्निकटन के रूप में, मान लें कि हमारे पास रैखिक हैश | |||
:<math>h(x+y)=h(x)+h(y)</math> | :<math>h(x+y)=h(x)+h(y)</math> | ||
मान लीजिए कि सभी तत्व श्रेणी में पूर्णांक हैं: 0...N-1, और | मान लीजिए कि सभी तत्व श्रेणी में पूर्णांक हैं: इस प्रकार 0...N-1, और फलन h प्रत्येक तत्व को सूचकांकों की छोटी श्रेणी में तत्व में मैप करता है: 0...n-1 नया ऐरे टी बनाएं और s के प्रत्येक तत्व को टी में उसके हैश मान पर भेजें जाते है, अर्थात, s में प्रत्येक x के लिए({{tmath|\forall x \in S}}): | ||
:<math>T[h(x)] = x</math> | :<math>T[h(x)] = x</math> | ||
प्रारंभ में, मान लें कि मैपिंग अद्वितीय हैं (अर्थात टी में प्रत्येक | प्रारंभ में, मान लें कि मैपिंग अद्वितीय हैं (अर्थात टी में प्रत्येक सेल s से केवल ही तत्व स्वीकार करती है)। T पर कन्व3सम को हल करें। | ||
* यदि | * यदि 3सम के लिए कोई समाधान <math>z=x+y</math> है: तब: <math>T[h(z)]=T[h(x)]+T[h(y)]</math> और <math>h(z)=h(x)+h(y)</math>, इसलिए यह समाधान T पर कन्व3सम सॉल्वर द्वारा पाया जाता है। | ||
* इसके विपरीत, यदि T पर | * इसके विपरीत, यदि T पर कन्व3सम पाया जाता है, तो जाहिर तौर पर यह S पर 3सम समाधान से मेल खाता है क्योंकि T केवल S का क्रमपरिवर्तन है। | ||
यह आदर्श समाधान काम नहीं करता है, क्योंकि कोई भी हैश | यह आदर्श समाधान काम नहीं करता है, क्योंकि कोई भी हैश फलन S के कई अलग-अलग तत्वों को T के ही सेल में मैप कर सकता है। चाल सरणी बनाने की है {{tmath|T^*}} T के प्रत्येक सेल से यादृच्छिक तत्व का चयन करके, और कन्व3सम को चालू करें {{tmath|T^*}}. यदि कोई समाधान मिल जाता है, तो यह S पर 3सम के लिए सही समाधान है। यदि कोई समाधान नहीं मिलता है, तो अलग यादृच्छिक बनाएं {{tmath|T^*}} और फिर प्रयत्न करें। मान लीजिए कि टी के प्रत्येक सेल में अधिकतम आर तत्व हैं। फिर समाधान खोजने की संभावना (यदि कोई समाधान उपस्थित है) यह संभावना है कि यादृच्छिक चयन प्रत्येक सेल से सही तत्व का चयन करेगा, जो <math>(1/R)^3</math> है कन्व3सम चलाकर <math>R^3</math> कई बार, उच्च संभावना के साथ समाधान मिल जाता है। | ||
हमारे पास लीनियर परफेक्ट हैशिंग नहीं है, इसलिए हमें [[लगभग रैखिक हैश फ़ंक्शन|लगभग रैखिक हैश फलन]] का उपयोग करना होता है, अर्थात फलन h जैसे कि: | |||
:<math>h(x+y)=h(x)+h(y)</math> या | :<math>h(x+y)=h(x)+h(y)</math> या | ||
:<math>h(x+y)=h(x)+h(y)+1</math> | :<math>h(x+y)=h(x)+h(y)+1</math> | ||
इसके लिए S के तत्वों को T में कॉपी करते समय उनकी नकल करने की आवश्यकता होती है, | इसके लिए S के तत्वों को T में कॉपी करते समय उनकी नकल करने की आवश्यकता होती है, अर्थात, प्रत्येक तत्व को रखना होता है इस प्रकार <math>x\in S</math> में दोनों <math>T[h(x)]</math> और अंदर <math>T[h(x)]-1</math>. इसलिए प्रत्येक सेल में 2R तत्व होते है, और हमें कन्व3सम चलाना <math>(2R)^3</math> होता है . | ||
== | == 3सम-कठोरता == | ||
किसी समस्या को | किसी समस्या को 3सम-हार्ड कहा जाता है यदि इसे [[उपवर्गिक समय]] में हल करने से 3सम के लिए सबक्वाड्रैटिक-टाइम [[कलन विधि]] का पता चलता है। 3सम-कठोरता की अवधारणा किसके द्वारा प्रस्तुत की गई थी? {{harvtxt|गजेंटन|ओवरमार्स|1995}}. उन्होंने प्रमाणित किया कि [[कम्प्यूटेशनल ज्यामिति]] में समस्याओं का बड़ा वर्ग 3सम-कठिन है, जिसमें निम्नलिखित भी सम्मिलित हैं। (लेखक स्वीकार करते हैं कि इनमें से कई समस्याओं में अन्य शोधकर्ताओं का योगदान है।) | ||
* समतल में रेखाओं के समूह को देखते हुए, क्या तीन रेखाएँ बिंदु पर मिलती हैं? | * समतल में रेखाओं के समूह को देखते हुए, क्या तीन रेखाएँ बिंदु पर मिलती हैं? | ||
* गैर-प्रतिच्छेदी अक्ष-समानांतर रेखा खंडों के | * गैर-प्रतिच्छेदी अक्ष-समानांतर रेखा खंडों के समुच्चय को देखते हुए, क्या कोई रेखा है जो उन्हें दो गैर-रिक्त उपसमुच्चय में अलग करती है? | ||
* समतल में अनंत पट्टियों का | * समतल में अनंत पट्टियों का समुच्चय दिया गया है, क्या वे किसी दिए गए आयत को पूरी तरह से कवर करते हैं? | ||
* समतल में त्रिभुजों के | * समतल में त्रिभुजों के समुच्चय को देखते हुए, उनके माप की गणना करें। | ||
* समतल में त्रिभुजों के समूह को देखते हुए, क्या उनके मिलन में कोई | * समतल में त्रिभुजों के समूह को देखते हुए, क्या उनके मिलन में कोई छिद्र है? | ||
* कई दृश्यता और गति नियोजन समस्याएं, जैसे, | * कई दृश्यता और गति नियोजन समस्याएं, जैसे, | ||
** | ** समिष्ट में क्षैतिज त्रिभुजों के समुच्चय को देखते हुए, क्या किसी विशेष त्रिभुज को किसी विशेष बिंदु से देखा जा सकता है? | ||
** विमान में गैर-प्रतिच्छेदी अक्ष-समानांतर रेखा खंड बाधाओं के | ** विमान में गैर-प्रतिच्छेदी अक्ष-समानांतर रेखा खंड बाधाओं के समुच्चय को देखते हुए, क्या किसी दिए गए रॉड को बाधाओं से टकराए बिना प्रारंभ और समाप्ति स्थितियों के बीच अनुवाद और घुमाव द्वारा स्थानांतरित किया जा सकता है? | ||
अब तक इस श्रेणी में आने वाली कई अन्य समस्याएं भी | अब तक इस श्रेणी में आने वाली कई अन्य समस्याएं भी उपस्थित हैं। उदाहरण [[एक्स + वाई छँटाई|x + y]] का निर्णय संस्करण है: संख्याओं के दिए गए समुच्चय {{mvar|X}} और {{mvar|Y}} का {{mvar|n}} तत्व प्रत्येक वहाँ {{mvar|''n''²}} हैं <ref>{{cite web |first1=Erik |last1=Demaine |author-link1=Erik Demaine |first2=Jeff |last2=Erickson |first3=Joseph |last3=O'Rourke |title=Problem 41: Sorting X + Y (Pairwise Sums) |date=20 August 2006 |access-date=23 September 2014 |website=The Open Problems Project |url=http://cs.smith.edu/~orourke/TOPP/P41.html}}</ref> | ||
== यह भी देखें == | |||
* उपसमुच्चय योग समस्या | |||
== टिप्पणियाँ == | |||
== टिप्पणियाँ == | |||
{{Reflist}} | {{Reflist}} | ||
== संदर्भ == | == संदर्भ == | ||
*{{cite journal |last1=Kane |first1=Daniel M. |last2=Lovett |first2=Shachar |last3=Moran |first3=Shay |title=Near-optimal linear decision trees for k-SUM and related problems |journal=Proceedings of the 50th Annual ACM SIGACT Symposium on Theory of Computing (STOC) |year=2018 |pages=554–563 |doi=10.1145/3188745.3188770 |arxiv=1705.01720 |isbn=9781450355599 |s2cid=30368541 }} | *{{cite journal |last1=Kane |first1=Daniel M. |last2=Lovett |first2=Shachar |last3=Moran |first3=Shay |title=Near-optimal linear decision trees for k-SUM and related problems |journal=Proceedings of the 50th Annual ACM SIGACT Symposium on Theory of Computing (STOC) |year=2018 |pages=554–563 |doi=10.1145/3188745.3188770 |arxiv=1705.01720 |isbn=9781450355599 |s2cid=30368541 }} | ||
Line 203: | Line 191: | ||
| url = http://www.cs.mcgill.ca/~jking/papers/3sumhard.pdf | | url = http://www.cs.mcgill.ca/~jking/papers/3sumhard.pdf | ||
| year = 2004}}. | | year = 2004}}. | ||
[[Category: | [[Category:Articles with hatnote templates targeting a nonexistent page]] | ||
[[Category:Created On 10/07/2023]] | [[Category:Created On 10/07/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Missing redirects]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Pages with syntax highlighting errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:कंप्यूटर विज्ञान में अनसुलझी समस्याएं]] | |||
[[Category:कम्प्यूटेशनल ज्यामिति]] | |||
[[Category:बहुपद-समय की समस्याएँ]] |
Latest revision as of 09:22, 4 August 2023
क्या 3सम समस्या को समय पर हल करने के लिए कोई एल्गोरिदम है? , कुछ के लिए ?
कम्प्यूटेशनल जटिलता सिद्धांत में, 3सम समस्या पूछती है कि क्या दिया गया समुच्चय वास्तविक संख्याओं में तीन तत्व होते हैं जिनका योग शून्य होता है। सामान्यीकृत संस्करण, k-सम, k संख्याओं पर समान प्रश्न पूछता है। 3सम को सरलता से हल किया जा सकता है इस प्रकार समय, और मिलान गणना के कुछ विशेष मॉडलों में निचली सीमाएं ज्ञात होती हैं (एरिक्सन 1999) .
यह अनुमान लगाया गया था कि 3सम के लिए किसी भी नियतात्मक एल्गोरिदम समय की आवश्यकता होती है। इस प्रकार 2014 में, मूल 3सम अनुमान का एलन ग्रोनलुंड और सेठ पेटी ने खंडन किया था, जिन्होंने नियतात्मक एल्गोरिदम दिया था जो 3सम को हल करता है समय [1] इसके अतिरिक्त, ग्रोनलुंड और पेटी ने दिखाया कि 3सम की 4-निर्णय ट्री मॉडल रैखिक निर्णय ट्री जटिलता है इसके पश्चात् इन सीमाओं में सुधार किया गया था।[2][3][4]
3सम के लिए वर्तमान सबसे प्रसिद्ध एल्गोरिदम चलता है [4] केन, लवेट और मोरन ने दिखाया कि 6-निर्णय ट्री मॉडल 3सम की रैखिक निर्णय ट्री जटिलता है [5] पश्चात् वाली सीमा कड़ी है (लघुगणकीय कारक तक) यह अभी भी अनुमान लगाया गया है कि 3सम का समाधान नहीं हो सका है।[6]
जब श्रेणी में तत्व पूर्णांक हों , 3सम में हल किया जा सकता है इनपुट समुच्चय का प्रतिनिधित्व करके समय बिट सरणी के रूप में, समुच्चय की गणना करना तेज फूरियर रूपांतरण का उपयोग करते हुए असतत कनवल्शन के रूप में सभी जोड़ीवार योगों की और अंत में इस समुच्चय की तुलना की गई थी [7]
द्विघात एल्गोरिथ्म
मान लीजिए कि इनपुट ऐरे है कंप्यूटिंग के पूर्णांक (शब्द रैम) मॉडल में, 3सम को हल किया जा सकता है प्रत्येक संख्या डालने पर औसतन समय हैश तालिका में, और फिर, प्रत्येक सूचकांक के लिए और , जाँच कर रहा है कि हैश तालिका में पूर्णांक है या नहीं है
कंप्यूटिंग या वास्तविक रैम के कंप्यूटर प्रोग्रामिंग आधारित मॉडल में ही समय में समस्या को हल करना भी संभव है, जिसके लिए हैशिंग की अनुमति नहीं है। नीचे दिया गया एल्गोरिदम पहले इनपुट ऐरे को सॉर्ट करता है और फिर सावधानीपूर्वक सभी संभावित जोड़ियों का परीक्षण करता है, जिससे क्रमबद्ध सूची में जोड़ियों के लिए बाइनरी खोज की आवश्यकता से बचा जा सकता है, जिससे सबसे व्यर्थ स्थिति प्राप्त होती है। समय, इस प्रकार है.[8]
सॉर्ट(s);
sort(S);
for i = 0 to n - 2 do
a = S[i];
start = i + 1;
end = n - 1;
while (start < end) do
b = S[start]
c = S[end];
if (a + b + c == 0) then
output a, b, c;
// Continue search for all triplet combinations summing to zero.
// We need to update both end and start together since the array values are distinct.
start = start + 1;
end = end - 1;
else if (a + b + c > 0) then
end = end - 1;
else
start = start + 1;
end
end
निम्नलिखित उदाहरण छोटे क्रमबद्ध सरणी पर इस एल्गोरिदम के निष्पादन को दिखाता है। a के वर्तमान मान लाल रंग में दिखाए गए हैं, b और c के मान मैजेंटा में दिखाए गए हैं।
-25 -10 -7 -3 2 4 8 10 (a+b+c==-25)
-25 -10 -7 -3 2 4 8 10 (a+b+c==-22)
. . .
-25 -10 -7 -3 2 4 8 10 (a+b+c==-7)
-25 -10 -7 -3 2 4 8 10 (a+b+c==-7)
-25 -10 -7 -3 2 4 8 10 (a+b+c==-3)
-25 -10 -7 -3 2 4 8 10 (a+b+c==2)
-25 -10 -7 -3 2 4 8 10 (a+b+c==0)
एल्गोरिथम की शुद्धता इस प्रकार देखी जा सकती है। मान लीजिए कि हमारे पास समाधान a + b + c = 0 है . चूंकि सूचक केवल ही दिशा में चलते हैं, हम एल्गोरिदम को तब तक चला सकते हैं जब तक कि सबसे बाईं ओर का सूचक a की ओर इंगित न कर दे। एल्गोरिथम को तब तक चलाएँ जब तक कि शेष संकेतकों में से कोई b या c, जो भी पहले हो, को इंगित न कर दे। तब एल्गोरिथ्म तब तक चलेगा जब तक अंतिम सूचक सकारात्मक समाधान देते हुए शेष पद की ओर संकेत नहीं करता है।
वेरिएंट
गैर-शून्य योग
उन संख्याओं की खोज करने के अतिरिक्त जिनका योग 0 है, उन संख्याओं की खोज करना संभव है जिनका योग कोई स्थिर c है। पूर्णांक के लिए हैश तालिका खोजने के लिए मूल एल्गोरिदम को संशोधित करना सबसे सरल विधि होती है .
दूसरी विधि:
- इनपुट सरणी के सभी तत्वों से C/3 घटाएँ।
- संशोधित सरणी में, 3 तत्व खोजें जिनका योग 0 है।
उदाहरण के लिए, यदि A=[1,2,3,4] और यदि आपको C=4 के लिए 3सम खोजने के लिए कहा जाए, तो A के सभी तत्वों में से 4/3 घटाएं, और इसे सामान्य 3सम विधि से हल करें, अर्थात। , .
तीन अलग-अलग सरणियाँ
एक ही सारणी में 3 संख्याओं को खोजने के अतिरिक्त, हम उन्हें 3 अलग-अलग सारणियों में खोज सकते हैं। अर्थात, तीन सरणियाँ X, Y और Z दी गई हैं, तीन संख्याएँ खोजें a∈X, b∈Y, c∈Z, ऐसा है कि . 1-सरणी वैरिएंट 3सम×1 और 3-सरणी वैरिएंट 3सम×3 को कॉल करें।
3सम×1 के लिए सॉल्वर दिए जाने पर, 3सम×3 समस्या को निम्नलिखित विधि से हल किया जा सकता है (यह मानते हुए कि सभी तत्व पूर्णांक हैं):
- X, Y और Z में प्रत्येक तत्व के लिए, समुच्चय करें: , , .
- मान लीजिए S, सारणियों X, Y और Z का संयोजन है।
- तीन तत्वों को खोजने के लिए 3सम×1 ओरेकल का उपयोग करें ऐसा है कि .
- वापस करना .
जिस तरह से हमने सरणियों को रूपांतरित किया, इसकी गारंटी a∈X, b∈Y, c∈Z है .[9]
कनवल्शन योग
सरणी के इच्छानुसार तत्वों की खोज करने के अतिरिक्त:
कनवल्शन 3सम समस्या (कन्व3सम) विशिष्ट स्थानों में तत्वों की खोज करती है:[10]
कन्व3सम से 3सम तक कमी
3सम के लिए सॉल्वर दिए जाने पर, कन्व3सम समस्या को निम्नलिखित विधि से हल किया जा सकता है।[10]
नई सरणी टी परिभाषित करें, जैसे कि प्रत्येक सूचकांक के लिए: (जहाँ n सरणी में तत्वों की संख्या है, और सूचकांक 0 से n-1 तक चलते हैं)।
- सरणी T पर 3सम हल करें।
प्रमाण:
- यदि मूल सारणी में त्रिगुण है , तब , इसलिए यह समाधान 3सम द्वारा T पर पाया जाता है।
- इसके विपरीत, यदि नए ऐरे में ट्रिपल विथ है , तब . क्योंकि , अनिवार्य रूप से और , इसलिए यह S पर कन्व3सम के लिए वैध समाधान है।
3सम से कन्व3सम तक कमी
कन्व3सम के लिए सॉल्वर दिए जाने पर, 3सम समस्या को निम्नलिखित विधि से हल किया जा सकता है।[6][10]
कमी हैश फंकशन का उपयोग करती है। पहले सन्निकटन के रूप में, मान लें कि हमारे पास रैखिक हैश फलन है, अर्थात फलन h ऐसा है कि:
मान लीजिए कि सभी तत्व श्रेणी में पूर्णांक हैं: इस प्रकार 0...N-1, और फलन h प्रत्येक तत्व को सूचकांकों की छोटी श्रेणी में तत्व में मैप करता है: 0...n-1 नया ऐरे टी बनाएं और s के प्रत्येक तत्व को टी में उसके हैश मान पर भेजें जाते है, अर्थात, s में प्रत्येक x के लिए():
प्रारंभ में, मान लें कि मैपिंग अद्वितीय हैं (अर्थात टी में प्रत्येक सेल s से केवल ही तत्व स्वीकार करती है)। T पर कन्व3सम को हल करें।
- यदि 3सम के लिए कोई समाधान है: तब: और , इसलिए यह समाधान T पर कन्व3सम सॉल्वर द्वारा पाया जाता है।
- इसके विपरीत, यदि T पर कन्व3सम पाया जाता है, तो जाहिर तौर पर यह S पर 3सम समाधान से मेल खाता है क्योंकि T केवल S का क्रमपरिवर्तन है।
यह आदर्श समाधान काम नहीं करता है, क्योंकि कोई भी हैश फलन S के कई अलग-अलग तत्वों को T के ही सेल में मैप कर सकता है। चाल सरणी बनाने की है T के प्रत्येक सेल से यादृच्छिक तत्व का चयन करके, और कन्व3सम को चालू करें . यदि कोई समाधान मिल जाता है, तो यह S पर 3सम के लिए सही समाधान है। यदि कोई समाधान नहीं मिलता है, तो अलग यादृच्छिक बनाएं और फिर प्रयत्न करें। मान लीजिए कि टी के प्रत्येक सेल में अधिकतम आर तत्व हैं। फिर समाधान खोजने की संभावना (यदि कोई समाधान उपस्थित है) यह संभावना है कि यादृच्छिक चयन प्रत्येक सेल से सही तत्व का चयन करेगा, जो है कन्व3सम चलाकर कई बार, उच्च संभावना के साथ समाधान मिल जाता है।
हमारे पास लीनियर परफेक्ट हैशिंग नहीं है, इसलिए हमें लगभग रैखिक हैश फलन का उपयोग करना होता है, अर्थात फलन h जैसे कि:
- या
इसके लिए S के तत्वों को T में कॉपी करते समय उनकी नकल करने की आवश्यकता होती है, अर्थात, प्रत्येक तत्व को रखना होता है इस प्रकार में दोनों और अंदर . इसलिए प्रत्येक सेल में 2R तत्व होते है, और हमें कन्व3सम चलाना होता है .
3सम-कठोरता
किसी समस्या को 3सम-हार्ड कहा जाता है यदि इसे उपवर्गिक समय में हल करने से 3सम के लिए सबक्वाड्रैटिक-टाइम कलन विधि का पता चलता है। 3सम-कठोरता की अवधारणा किसके द्वारा प्रस्तुत की गई थी? गजेंटन & ओवरमार्स (1995) . उन्होंने प्रमाणित किया कि कम्प्यूटेशनल ज्यामिति में समस्याओं का बड़ा वर्ग 3सम-कठिन है, जिसमें निम्नलिखित भी सम्मिलित हैं। (लेखक स्वीकार करते हैं कि इनमें से कई समस्याओं में अन्य शोधकर्ताओं का योगदान है।)
- समतल में रेखाओं के समूह को देखते हुए, क्या तीन रेखाएँ बिंदु पर मिलती हैं?
- गैर-प्रतिच्छेदी अक्ष-समानांतर रेखा खंडों के समुच्चय को देखते हुए, क्या कोई रेखा है जो उन्हें दो गैर-रिक्त उपसमुच्चय में अलग करती है?
- समतल में अनंत पट्टियों का समुच्चय दिया गया है, क्या वे किसी दिए गए आयत को पूरी तरह से कवर करते हैं?
- समतल में त्रिभुजों के समुच्चय को देखते हुए, उनके माप की गणना करें।
- समतल में त्रिभुजों के समूह को देखते हुए, क्या उनके मिलन में कोई छिद्र है?
- कई दृश्यता और गति नियोजन समस्याएं, जैसे,
- समिष्ट में क्षैतिज त्रिभुजों के समुच्चय को देखते हुए, क्या किसी विशेष त्रिभुज को किसी विशेष बिंदु से देखा जा सकता है?
- विमान में गैर-प्रतिच्छेदी अक्ष-समानांतर रेखा खंड बाधाओं के समुच्चय को देखते हुए, क्या किसी दिए गए रॉड को बाधाओं से टकराए बिना प्रारंभ और समाप्ति स्थितियों के बीच अनुवाद और घुमाव द्वारा स्थानांतरित किया जा सकता है?
अब तक इस श्रेणी में आने वाली कई अन्य समस्याएं भी उपस्थित हैं। उदाहरण x + y का निर्णय संस्करण है: संख्याओं के दिए गए समुच्चय X और Y का n तत्व प्रत्येक वहाँ n² हैं [11]
यह भी देखें
- उपसमुच्चय योग समस्या
टिप्पणियाँ
- ↑ Grønlund & Pettie 2014.
- ↑ Freund 2017.
- ↑ Gold & Sharir 2017.
- ↑ 4.0 4.1 Chan 2018.
- ↑ Kane, Lovett & Moran 2018.
- ↑ 6.0 6.1 Kopelowitz, Tsvi; Pettie, Seth; Porat, Ely (2014). "3SUM Hardness in (Dynamic) Data Structures". arXiv:1407.6756 [cs.DS].
- ↑ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009) [1990]. Introduction to Algorithms (3rd ed.). MIT Press and McGraw-Hill. ISBN 0-262-03384-4. Ex. 30.1–7, p. 906.
- ↑ Visibility Graphs and 3-Sum by Michael Hoffmann
- ↑ For a reduction in the other direction, see Variants of the 3-sum problem.
- ↑ 10.0 10.1 10.2 Patrascu, M. (2010). गतिशील समस्याओं के लिए बहुपद निचली सीमा की ओर. Proceedings of the 42nd ACM symposium on Theory of computing - STOC '10. p. 603. doi:10.1145/1806689.1806772. ISBN 9781450300506.
- ↑ Demaine, Erik; Erickson, Jeff; O'Rourke, Joseph (20 August 2006). "Problem 41: Sorting X + Y (Pairwise Sums)". The Open Problems Project. Retrieved 23 September 2014.
संदर्भ
- Kane, Daniel M.; Lovett, Shachar; Moran, Shay (2018). "Near-optimal linear decision trees for k-SUM and related problems". Proceedings of the 50th Annual ACM SIGACT Symposium on Theory of Computing (STOC): 554–563. arXiv:1705.01720. doi:10.1145/3188745.3188770. ISBN 9781450355599. S2CID 30368541.
- Chan, Timothy M. (2018), "More Logarithmic-Factor Speedups for 3SUM, (median, +)-Convolution, and Some Geometric 3SUM-Hard Problems", Proceedings of the Twenty-Ninth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA): 881–897, doi:10.1137/1.9781611975031.57, ISBN 978-1-61197-503-1
- Grønlund, A.; Pettie, S. (2014). Threesomes, Degenerates, and Love Triangles. 2014 IEEE 55th Annual Symposium on Foundations of Computer Science. p. 621. arXiv:1404.0799. Bibcode:2014arXiv1404.0799G. doi:10.1109/FOCS.2014.72. ISBN 978-1-4799-6517-5.
- Freund, Ari (2017), "Improved Subquadratic 3SUM", Algorithmica, 44 (2): 440–458, doi:10.1007/s00453-015-0079-6, S2CID 253979651.
- Gold, Omer; Sharir, Micha (2017), "Improved Bounds for 3SUM, k-SUM, and Linear Degeneracy", In Proc. 25th Annual European Symposium on Algorithms (ESA), LIPIcs, 87: 42:1–42:13, doi:10.4230/LIPIcs.ESA.2017.42, S2CID 691387
- Baran, Ilya; Demaine, Erik D.; Pătraşcu, Mihai (2008), "Subquadratic algorithms for 3SUM", Algorithmica, 50 (4): 584–596, doi:10.1007/s00453-007-9036-3, S2CID 9855995.
- Demaine, Erik D.; Mitchell, Joseph S. B.; O'Rourke, Joseph (July 2005), "Problem 11: 3SUM Hard Problems", The Open Problems Project, archived from the original on 2012-12-15, retrieved 2008-09-02.
- Erickson, Jeff (1999), "Lower bounds for linear satisfiability problems", Chicago Journal of Theoretical Computer Science, MIT Press, 1999.
- Gajentaan, Anka; Overmars, Mark H. (1995), "On a class of O(n2) problems in computational geometry", Computational Geometry: Theory and Applications, 5 (3): 165–185, doi:10.1016/0925-7721(95)00022-2, hdl:1874/17058.
- King, James (2004), A survey of 3SUM-hard problems (PDF).