एक गेंद को खोजने के लिए जटिलता जो इसमें झूठ बोलने वाले अंकों की संख्या को अधिकतम करती है


10

अंक का एक सेट को देखते हुए x1,,xnR2 और एक त्रिज्या । तुलना में छोटी दूरी पर अधिक अंक वाले बिंदु को खोजने की जटिलता क्या है । उदाहरण के लिए, जो अधिकतम करता है ?rri=1n1xxir

एक क्रूर बल एल्गोरिथ्म हर बिंदु पर जाने और आर की तुलना में छोटे बिंदुओं की संख्या को गिनने के लिए होगा r। यह \ mathcal {O} (n ^ 2) की जटिलता देगा O(n2)

क्या एक बेहतर दृष्टिकोण है?


क्या आपने चतुर्भुज और द्विआधारी अंतरिक्ष विभाजन पेड़ों को देखा है? मुझे आशा है कि वे एक एल्गोरिथ्म दे सकते हैं जो व्यवहार में अधिक कुशल है, हालांकि मुझे नहीं पता है कि सबसे खराब स्थिति वाला असममित चलने वाला समय क्या हो सकता है।
DW

( ballशीर्षक से केंद्र का केंद्र सेट से होना चाहिए?) एक विचार यह अनुमान लगाने का हो सकता है कि त्रिज्या निकटतम पड़ोसी से औसत दूरी की तुलना में छोटा है या व्यास के आदेश पर (और इन चरम सीमाओं के लिए दृष्टिकोण पर विचार करें) (छोटे लिए विमान स्वीप ) और बीच में व्यापक स्थान)। r
ग्रेबर्ड

गेंद का केंद्र एक होना चाहिए लेकिन अगर उस स्थिति के साथ बेहतर एल्गोरिथ्म हो तो मुझे भी दिलचस्पी है। xi
मैनुअल

ऐसा लगता है कि बॉल रेंज काउंटिंग प्रॉब्लम के लिए अल्गोरिथम से अधिक तेज़ अज्ञात है। हालाँकि, यदि आप एक गैर-सटीक उत्तर स्वीकार कर सकते हैं, तो आप अलग-अलग अभिविन्यास वाले वर्गों के समूह द्वारा एक डिस्क का अनुमान लगा सकते हैं। प्रत्येक अभिविन्यास के लिए आपको एक रेंज ट्री ( en.wikipedia.org/wiki/Range_tree ) का निर्माण करना होगा, जो आपको समय (k में एक वर्ग के अंदर सभी बिंदुओं को गिनने देगा। - परिणामस्वरूप अंकों की एक संख्या)। O ( l o g 2 ( n ) + k )O(n)O(log2(n)+k)
17

@HEKTO आप लागत का एक संरचना का निर्माण का सुझाव दे रहे हैं क्वेरी के लिए करता है, तो लागत से एक आयत में एक बिंदु झूठ हे ( एल जी 2 ( एन ) + कश्मीर ) ? फिर सभी बिंदुओं पर जाएं कि कितने अन्य बिंदु अनुमानित गेंद में झूठ हैं? यह काम कर सकता है, लेकिन फिर, ऐसे डेटा संरचना के लिए आवश्यक मेमोरी क्या होगी? क्या यह O ( n 2 ) से कम होगा ) ? O(nlog(n))O(log2(n)+k)O(n2))
मैनुअल

जवाबों:


5

यह बॉल रेंज काउंटिंग प्रॉब्लम के लिए एक सबलाइनर अल्गोरिथम की तरह दिखता है जो अभी के लिए ज्ञात नहीं है।

हालाँकि, यदि आप एक गैर-सटीक उत्तर स्वीकार कर सकते हैं, तो आप अलग-अलग अभिविन्यास वाले वर्गों के समूह द्वारा एक डिस्क का अनुमान लगा सकते हैं। प्रत्येक अभिविन्यास के लिए आपको एक रेंज ट्री का निर्माण करना होगा, जो आपको समय (k - परिणामी अंकों की एक संख्या ) में एक वर्ग के अंदर सभी बिंदुओं को गिनने की अनुमति देगा ।O(log2(n)+k)

प्रत्येक रेंज पेड़ की आवश्यकता होगी स्मृति, आप और अधिक झुकाव का उपयोग करना चाहिए चाहते हैं बेहतर सन्निकटन। उदाहरण के लिए, दो झुकाव आपको एक अष्टकोना देंगे , जो 6% से कम क्षेत्र की त्रुटि के साथ एक डिस्क का अनुमान लगाता है।O(nlog(n))


3

इसका उत्तर इतना सरल नहीं है, जटिलता सिद्धांत में इस प्रश्न का उन्नत अध्ययन है; यह निम्न समस्या के रूप में उदाहरण के लिए अध्ययन किया जा रहा है, जो तेजी से "गोलाकार श्रेणी की गिनती" प्रश्नों के आसपास केंद्रित है। हां, बेहतर सैद्धांतिक सीमाएँ संभव हैं, लेकिन ये अमूर्त एल्गोरिदम प्रतीत होते हैं जिन्हें किसी ने भी लागू नहीं किया है। यदि आप वास्तविक कार्यान्वयन चाहते हैं, तो यह एक अलग प्रश्न है।

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