2015-06-06 7 views
15

मैं एक एल्गोरिदम के बारे में सोच रहा हूं जो सच या गलत लौटाता है, मुझे बता रहा है कि क्या अंक ए के सेट के चारों ओर एक सर्कल खींचना संभव है, जैसे कि बिंदु बी के सेट से कोई भी बिंदु इसके अंदर नहीं है, या दूसरी तरफ (अंक बी के एक सेट के चारों ओर एक सर्कल आकर्षित करना संभव है, जैसे अंक ए के सेट से कोई भी बिंदु इसके अंदर नहीं है)।आप कैसे निर्धारित करते हैं कि आप अंक के एक सेट के चारों ओर एक चक्र खींच सकते हैं, जैसे कि दूसरे सेट के अंक इसके अंदर नहीं हैं?

असल में, आपको इनपुट के रूप में अंक के 2 सेट दिए जाते हैं, और आपको यह निर्धारित करने की आवश्यकता है कि किसी एक के चारों ओर एक सर्कल खींचना संभव है, जैसे कि दूसरे से कोई भी बिंदु इसके अंदर नहीं है।

मैंने Megiddo's linear time algorithm पर smallest enclosing circle problem के लिए देखा है, लेकिन समस्या यह है कि यह केवल छोटे सर्कल को खींचता है, जिसका अर्थ है कि यह उस स्थिति में काम नहीं करता है जहां आपको एक बड़े सर्कल की आवश्यकता है। ,

enter image description here

इस तस्वीर यह लाल अंक के सेट के चारों ओर एक बहुत बड़ा वृत्त आकर्षित करने के लिए संभव है में इतना हरा अंक में से किसी एक नहीं हैं कि:

यहाँ मैं क्या मतलब है की एक तस्वीर है इसके अंदर, इसलिए मेगीद्दो का एल्गोरिदम काम नहीं करेगा।

उत्तर

12

इस पत्र में, हम 3 डी में विमान एक चक्र के द्वारा अलग किया जा सकता है में किया जाए या नहीं अंक के दो सेट का पता लगाने को कम करने, अंक के रैखिक पृथकत्व रहे हैं:

ओ'रुरके, यूसुफ, एस राव कोसारजु, और निम्रोद मेगीद्दो। "कंप्यूटिंग परिपत्र अलगाव।" असतत & कम्प्यूटेशनल ज्यामिति, .1 (1 9 86): 105-113। (PDF download।)

+0

आपके सार से: "हम यह तय करते हैं कि दो सेट गोलाकार रूप से विभाजित हैं या नहीं * ओ * (* एन *) समय में मेगीद्दो के रैखिक प्रोग्रामिंग एल्गोरिदम के माध्यम से पूरा किया जा सकता है।" ओपी का दावा है कि मेगीद्दो का एल्गोरिदम उदाहरण पर काम नहीं करता है (लेकिन शायद यह गलत वर्तनी के लिए बदला है)। – usr2564301

+5

@ जोंगवेयर मेगीद्दो के एल्गोरिदम से पता चलता है कि 3 डी में रैखिक प्रोग्रामिंग समस्याओं को रैखिक समय में हल किया जा सकता है। मेगीद्दी भी एल्गोरिदम का उपयोग करने का एक उदाहरण प्रदान करता है जो सबसे छोटा घेरा सर्कल पाता है। यह उदाहरण ओपी चाहता है नहीं है। हालांकि, यहां पेपर एक अलग फॉर्मूलेशन दिखाता है जो वास्तव में मेगीद्दो के एल्गोरिदम को लागू करने की अनुमति देता है। (विचार एक पैराबोलॉइड को अंक पेश कर रहा है और फिर अलग विमान ढूंढ रहा है।) –

1

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

मुझे लगता है कि एक स्पैस ग्रिड से शुरू करके और "किसी भी लाल बिंदु की सबसे बड़ी दूरी" की निगरानी करके, "किसी भी हरे रंग की बिंदु से छोटी दूरी" मानों को आप अंततः पकड़ने के लिए कुछ आशाजनक क्षेत्रों को बेहतर और बेहतर (चालाक सेक्शनिंग) कर सकते हैं वांछित संपत्ति के साथ एक बिंदु या एक क्षेत्र।

आप कुछ डेरिवेटिव्स का उपयोग करने में भी सक्षम हो सकते हैं, जैसे दिशा में जाने की दिशा में जहां "किसी भी लाल बिंदु से सबसे बड़ी दूरी" का अनुपात "किसी भी हरे रंग की बिंदु से सबसे छोटी दूरी" का अनुपात सबसे तेज़ी से घटता है। दूसरी तरफ समस्या गैर-उत्तल हो सकती है और अभिसरण की गारंटी नहीं दी जा सकती है।

6

इसे आजमाएं: stereographic projection का उपयोग अपने बिंदुओं को किसी क्षेत्र पर प्रोजेक्ट करने के लिए करें। फिर आपको उस क्षेत्र के माध्यम से गुज़रने वाले विमान को खोजने की आवश्यकता है जो क्षेत्र को काटता है ताकि पहले सेट में सभी बिंदु विमान के एक तरफ हों, और दूसरे सेट में सभी बिंदु विमान के दूसरी तरफ हैं। विमान और गोलाकार का चौराहे एक सर्कल है, जो मूल विमान पर एक सर्कल (या दुर्लभ परिस्थितियों में, एक रेखा) के पीछे नक्शा करता है। मूल विमान पर परिणामी सर्कल में आपकी इच्छित संपत्तियां होती हैं।

तीन आयामों (रैखिक वस्तुओं) में विमानों के बारे में विमान में मंडलियों के बारे में किसी एक से समस्या को बदलने का अर्थ है कि आप मदद के लिए रैखिक प्रोग्रामिंग और उत्तल सेट से विचारों का उपयोग कर सकते हैं। एक दृष्टिकोण यह है कि hyperplane separation theorem का उपयोग यह दिखाने के लिए है कि आप एक विमान ढूंढ सकते हैं जो अंक के परिवारों की छवियों को अलग करता है और केवल तभी होता है जब ए और बी में बिंदुओं की छवियों के उत्तल ढक्कन छेड़छाड़ न करें।

हार्डवेयर और सॉफ़्टवेयर में कई तेज विधियां हैं यह निर्धारित करने के लिए कि दो उत्तल निकायों का अंतर होता है: यह टकराव का पता लगाने की समस्या है, उदाहरण के लिए वीडियो गेम में महत्वपूर्ण है। उस समस्या पर बहुत से काम किए गए हैं (देखें, उदाहरण के लिए, https://www.medien.ifi.lmu.de/lehre/ss10/ps/Ausarbeitung_Beispiel.pdf, जो दावा करता है कि एल्गोरिदम ओ (एन) समय में चलता है) और निश्चित रूप से स्वतंत्र रूप से उपलब्ध कोड है।

सारांश में: सूत्र द्वारा दिए गए stereographic प्रक्षेपण के माध्यम से इकाई क्षेत्र पर अपने अंक (एक्स, वाई) (एक्स, वाई, जेड) के नक्शे

(x,y,z) = (2*X/(R^2+1), 2*Y/(R^2+1), (R^2-1)/(R^2+1)), R^2 = X^2+Y^2 

फिर गिल्बर्ट-जॉनसन-कीर्ति एल्गोरिथ्म का उपयोग करें या कुछ अन्य टकराव का पता लगाने एल्गोरिदम यह निर्धारित करने के लिए कि एक सेट में बिंदुओं की छवियों का उत्तल ढक्कन दूसरे सेट में बिंदुओं की छवियों के उत्तल हॉल से अलग है या नहीं। यह सवाल है कि सर्कल मौजूद है या नहीं। वास्तव में सर्कल को खोजने के लिए, आपको दो उत्तल निकायों के बीच एक अलग विमान की आवश्यकता होती है, जिसे आप गोलाकार क्षेत्र में एक सर्कल प्राप्त करने के लिए क्षेत्र के साथ छेड़छाड़ करते हैं, जिसे आप स्टीरियोग्राफिक प्रक्षेपण के विपरीत विमान में वापस मानचित्र करते हैं।

यदि मैं सही ढंग से समझता हूं, तो उपर्युक्त ओ (एन) समय में पूरा किया जा सकता है।

1

बस एक विचार: लाल और हरे रंग डॉट्स के सभी जोड़े रखना।

प्रत्येक जोड़ी के लिए, ऑर्थोगोनल सेंटर लाइन की गणना करें।

लाइन पर ये बिंदु अंक हैं, जहां हरे और लाल बिंदु की दूरी बराबर है, इसलिए केंद्र के साथ एक सर्कल समझ में नहीं आता है।

लेकिन रेखा के उसी तरफ वाला क्षेत्र जहां लाल बिंदु भी क्षेत्र है, जहां एक संभावित केंद्र बिंदु झूठ बोलता है।

प्रत्येक जोड़ी {लाल, हरा} के लिए, आपको एक रेखा और एक क्षेत्र मिलेगा, जहां सर्कल का केंद्र बिंदु होगा।

यदि आप सभी जोड़ों के सभी क्षेत्रों को छेड़छाड़ करते हैं, तो आपको सभी मंडलियों के लिए सभी संभावित केंद्र बिंदु मिलेंगे।

अपने उदाहरण में उनके बीच दो हरे और लाल बिंदु ले लो। आपको दो लाइनों को 1/2 दूरी तक और ऊर्ध्वाधर धुरी के दाएं तरफ मिलेगा।

बाएं हरे रंग के बिंदु और सभी लाल वालों को लें, आपको ऊपरी बाएं से नीचे दाईं ओर की रेखाएं मिलेंगी और सर्कल सेंटर उनके ऊपर होगा।

लाल वालों के साथ सही हरा बिंदु उसी के बारे में करेगा। तो इस मामले में आपको एक परिणाम क्षेत्र (बहुभुज) मिलता है जो लंबवत अक्ष से बहुत दूर नहीं है और कम से कम क्षैतिज धुरी के ऊपर एक निश्चित दूरी और अनंत तक फैलता है।

अंक का एक और सेट चौराहे एक खाली सेट करने के लिए ले जा सकता है, जिसका अर्थ है कि आप में हरे वाले से कुछ लेने के बिना लाल वालों के आसपास इस तरह के एक वृत्त नहीं कर सकते।

यह हमेशा सही परिणाम की गणना करेगा , लेकिन मुझे नहीं पता, यूसुफ के एल्गोरिदम से प्रदर्शन की तुलना कितनी अच्छी है। शायद वह एक नज़र देख सकता है?

संबंधित मुद्दे