एक दिया त्रिज्या का अधिकतम संलग्नक चक्र


19

मैं निम्नलिखित समस्या के लिए एक दृष्टिकोण खोजने की कोशिश करता हूं:

बिंदु और त्रिज्या के सेट को देखते हुए , वृत्त के केंद्र बिंदु को ढूंढें, जैसे कि वृत्त में सेट से अधिकतम अंक होते हैं। चलने का समय होना चाहिए ।SrO(n2)

पहले यह छोटी से छोटी घेरने वाली सर्कल की समस्या के समान प्रतीत होता था, जिसे आसानी से में हल किया जा सकता है । विचार एक मनमाना केंद्र स्थापित करने और सभी बिंदुओं को घेरने के लिए था । अगला, चरण दर चरण, बाएं / दाएं बिंदुओं को छूने के लिए सर्कल को बदलें और सर्कल को दिए गए त्रिज्या तक सिकोड़ें, जाहिर है, यह काम नहीं करने वाला है।एसO(n2)S

जवाबों:


7

मैं इस समस्या को समय में हल करना नहीं जानता , लेकिन एल्गोरिथ्म मौजूद है।O ( n 2 log n )O(n2)O(n2logn)

आज्ञा देना वृत्त है जिसका केंद्र , बिंदु, त्रिज्या साथ है । यह पता लगाना मुश्किल नहीं है कि बिंदु सेट को त्रिज्या iff चौराहे के साथ एक वृत्त द्वारा संलग्न किया जा सकता है खाली नहीं है। इसके अलावा, अगर खाली नहीं है, वहाँ कुछ अंक में होना चाहिए कुछ पर रखना (की सीमा )। तो प्रत्येक और इसके बिंदु पर प्रत्येक बिंदु , हम यह पता लगाने की कोशिश करते हैं कि कितने मंडल हैंs i i r p = { p 0 , p 1 , , p m } r I ( P ) C ( p 0 ) , C ( p 1 ) , , C ( p m ) I ( P ) I ( P ) bd C ( p i )C(si)siirP={p0,p1,,pm}rI(P)C(p0),C(p1),,C(pm)I(P)I(P)bdC(pi)C ( s i ) p pC(pi)C(si)pp । सभी अधिकतम गणना इस समस्या का जवाब होगी।p

चलो में बिंदुओं की जांच करते हैं । और वास्तविक संख्या में अंकों के बीच एक-से-एक मैपिंग है । प्रत्येक सर्कल , और बीच के अंतर को एक अंतराल द्वारा दर्शाया जा सकता है । इसलिए अलावा अन्य सभी मंडलियों के लिए , अधिकांश अंतराल हैं (कुछ मंडल C (s_i) के साथ प्रतिच्छेद नहीं कर सकते हैं )। अधिकतम गिनती अंतराल के सभी 2 (एन -1) अंत बिंदुओं को क्रमबद्ध करके उन्हें क्रम में स्कैन करके और वर्तमान ओवरलैपिंग संख्या की गिनती करके आसानी से पाया जा सकता है । प्रत्येक के लिएBD सी ( एस मैं ) [ 0 , 2 π ) सी ( रों ) सी ( रों ) BD सी ( एस मैं ) [ जी मैं एन जे , एन डी जे ] सी ( रों i ) n - 1 C ( s i ) 2bdC(si)bdC(si)[0,2π)C(sj)C(sj)bdC(si)[beginj,endj]C(si)n1C(si)2(n1)C(si) , यह चरण समय में किया जा सकता है , और ऐसे वृत्त हैं, इसलिए इस एल्गोरिथ्म की समय जटिलता ।O(nlogn)nO(n2logn)


2
हलकों की व्यवस्था का निर्माण समय (उच्च संभावना के साथ) में एक मानक यादृच्छिक वृद्धिशील एल्गोरिथ्म का उपयोग करके किया जा सकता है। वास्तव में, रनिंग टाइम , जहां उन सर्कल्स के जोड़े की संख्या है जो प्रतिच्छेद करते हैं। अपनी पसंदीदा कम्प्यूटेशनल ज्यामिति पाठ्यपुस्तक देखें। O(n2)O(nlogn+k)k
जेफ़ई

2

मुझे लगता है कि कठिन प्रश्न यह जान रहे हैं कि आपके द्वारा चयनित सर्कल वास्तव में सेट के भीतर "अधिकतम" है या नहीं। एकमात्र तरीका मैं यह निर्धारित करने के लिए सोच सकता हूं कि अंकों के सभी संभावित संयोजनों की कोशिश करना, और उस घेरे के आकार का परीक्षण करना जो उन्हें घेरता है।

आप चौड़ाई 2r के साथ वर्ग कोशिकाओं के एक ग्रिड में बिंदु स्थान को विभाजित करके हालांकि खोज स्थान को कम कर सकते हैं। फिर सबसे बड़े घनत्व वाले सेल का पता लगाएं। चूँकि आप पहले से ही X बिंदुओं के एक वृत्त पर स्थित हैं, इसलिए आप यह निष्कर्ष निकाल सकते हैं कि यदि कोई चक्र अधिक बिंदुओं के साथ मौजूद है, तो उसमें कम से कम X अंक होने चाहिए। और इसे बिंदुओं के विभिन्न संयोजनों के परीक्षण के लिए एक प्रारंभिक बिंदु के रूप में उपयोग करें।

यदि आप केवल उन बिंदुओं के समूह की तलाश में हैं, जो अधिकतम होने की संभावना है, तो आप उन बिंदुओं का चयन करके उन संयोजनों की संख्या को कम करने में सक्षम हो सकते हैं, जो उन कोशिकाओं के पड़ोस में आते हैं, जहां कोशिकाओं का पड़ोस होता है, जहां पड़ोस का घनत्व X से अधिक है।

यह कहने के बाद, दोनों "कटौती" विफल हो सकती हैं, और सबसे खराब स्थिति में आप अंकों के सभी संभावित संयोजनों के लिए हलकों की गणना करेंगे।


1

चेज़ेल में, बी।; ली, DT का पेपर कम्प्यूटिंग 36, 1-16 (1986), प्रमेय 3 पेज 15 में, यह बताता है कि एल्गोरिथ्म खोजने वाले अधिकतम एन्कोडिंग सर्कल में समय लगता है।O(n2)

मुझे लगता है कि कुंजी अभी भी चौराहे ग्राफ निर्माण एल्गोरिथ्म का उल्लेख है जिसमें जल्दी उल्लेख किया गया है (या एडेल्सब्रनर, एच। (1987), एल्गोरिदम इन कॉम्बिनेटरियल ज्योमेट्री, अध्याय 7) देखें। बाद में मैक्सिमम एनक्लोजिंग सर्कल ढूंढना सीधा होना चाहिए।O(n2)

जाहिरा तौर पर, यह समस्या दी गई मंडलियों की अधिकतम संख्या द्वारा कवर किए गए बिंदु को खोजने के बराबर है और यह आसानी से केवल उन बिंदुओं को जानना है जिन्हें दिए गए n हलकों द्वारा उम्मीदवारों के रूप में माना जाना चाहिए। (यह भी एक O ( n 2 l o g ( n ) ) एल्गोरिदम को सीधे ले जाता है)2n2O(n2log(n))

O(n2)O(n2)

V+EF=2O(n2)


यदि इसे स्वीकृत उत्तर के पूरक के रूप में पढ़ा जाना है, और इसे अपने आप पढ़ना चाहिए (जो मुझे नहीं पता, जैसा कि मैं इस विषय से अनभिज्ञ हूं), तो आपको इसके बारे में स्पष्ट होना चाहिए।
बबौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.