यूक्लिडियन दूरी द्वारा छंटनी


17

एक समतल पर बिंदुओं का एक समूह है। एक यादृच्छिक बिंदु x is S एक ही विमान पर दिया गया है। कार्य सभी सॉर्ट करने के लिए है y एस के बीच इयूक्लिडियन दूरी से एक्स और वाईSxSySxy

एक नो-मस्तिष्क दृष्टिकोण के बीच दूरी की गणना करने के लिए है और y सभी के लिए y एस और उसके बाद उन्हें किसी भी तरह तेजी से कलन विधि का उपयोग।xyyS

वहाँ स्टोर करने के लिए किसी भी तरह से या preprocess है इसलिए छँटाई की प्रक्रिया तेजी से हो जाता है?S


1
आप संबंधित वर्ग द्वारा उपयुक्त आकार और समूह बिंदुओं के ग्रिड पर विचार कर सकते हैं (उपयोग, कहना, हैश तालिका)। फिर कुछ वर्गों के जोड़े के लिए आप अनुमान लगा सकते हैं कि एक वर्ग के सभी बिंदु दूसरे वर्ग के सभी बिंदुओं की तुलना में से अधिक दूर हैं । व्यवहार में यह मदद कर सकता है, मुझे लगता है। x
इलियाज

"नो-ब्रेन एप्रोच" जिसे आपने ओ (एन लॉग एन) समय में कहा था, जहां एन एस में अंकों की संख्या है, जो मुझे लगता है कि अभ्यास में बहुत तेज है। क्या आप लॉग एन फैक्टर को बंद करना चाहते हैं, या क्या आप बाहरी छँटाई जैसे कुछ और चाहते हैं ?
त्सुयोशी इतो

मुद्दा यह है कि मेरे पास अपने अंकों का सेट तैयार करने के लिए व्यावहारिक रूप से असीमित समय है, लेकिन उन्हें सॉर्ट करने का समय बहुत सीमित है। उस ने कहा, मानक छँटाई के किसी भी गति की सराहना की जाती है - भले ही यह एक ही हे (एन लॉग एन) हो, लेकिन सबसे खराब स्थिति (या सबसे अच्छा मामला, या जो भी) में तेज हो।
एलेक्स के।

उदाहरण के लिए, यदि मैं एस को 2-डी-ट्री के रूप में संग्रहीत करता हूं, तो मुझे ओ (लॉग एन) समय में एक निकटतम पड़ोसी मिल सकता है। हो सकता है कि मेरे कार्य का एक समान समाधान हो। मैं स्थानिक डेटा संरचनाओं में एक महान विशेषज्ञ नहीं हूं - और उनमें से बहुत सारे हैं - मैं इसे आसानी से याद कर सकता हूं।
एलेक्स के।

जवाबों:


13

समाधान 1: Θ खोजें (बिंदुओं के जोड़े के बीच लंबवत द्विभाजक n 2 )और इन पंक्तियों की व्यवस्था का निर्माण कीजिए। व्यवस्था है Θ ( n 4 ) कोशिकाओं है, जो भीतर क्रमबद्ध क्रम निरंतर है। इसलिए व्यवस्था के लिए एक बिंदु स्थान डेटा संरचना का निर्माण करें, और प्रत्येक सेल को उस सेल के भीतर अंक के लिए क्रमबद्ध क्रम से सजाया जाए। आसन्न कोशिकाओं के बीच सॉर्ट किए गए ऑर्डर केवल एक ट्रांसपोज़िशन में भिन्न होते हैं, इसलिए आप अंतरिक्ष साझा करने के लिए इन सॉर्ट किए गए आदेशों के अभ्यावेदन की अनुमति देने के लिए एक निरंतर डेटा संरचना का उपयोग कर सकते हैं। कुल स्थान O ( n 4 ) है और क्वेरी समय O हैΘ(n2)Θ(n4)O(n4)O(logn)

समाधान 2: इनमें से समान द्विभाजक के का एक यादृच्छिक नमूना चुनें , उनकी व्यवस्था का निर्माण करें, और दो सैंपल लाइनों के प्रत्येक क्रॉसिंग के माध्यम से प्रत्येक पंक्ति को ऊर्ध्वाधर रेखा खंडों द्वारा विभाजित करें। परिणामी विभाजन में Θ (Θ(n) कोशिकाओं है, जो उच्च संभावना के साथ में से प्रत्येक से पार कर जाता हे ( एन ) नमूनारहित समद्विभाजक। विभाजन के प्रत्येक सेल को सेल के भीतर कुछ x से देखे गए अंकों के मान्य क्रमबद्ध क्रम से सजाएं। कुल स्थान O ( n 3 ) हैΘ(n2)O(n)O(n3)

अब, एक क्वेरी करने के लिए, विभाजन में क्वेरी बिंदु का पता लगाएं, विभाजन सेल के साथ संग्रहित ऑर्डर को देखें, और इस संग्रहित ऑर्डर के साथ शुरू होने वाले लेवकोपोलस और पीटरसन (1989) के कार्टेशियन ट्री तुलना छँटाई एल्गोरिथ्म का उपयोग करें । इस चरण के लिए समय के लिए आनुपातिक है जहां k मैं कि बाहर के आदेश बिंदु के साथ कर रहे हैं अंकों की संख्या है y मैं । लेकिन Σ k मैं है हे ( एन ) (सबसे एक बाहर के आदेश अंक की जोड़ी पर एक नमूनारहित द्विभाजक कारणों), तो क्वेरी समयiO(1+logki)kiyikiO(n) भी O ( n ) हैiO(1+logki)O(n)


1
PS यहाँ समाधान 2 का एक वैकल्पिक संस्करण है जो एक ही स्थान और क्वेरी समय का उपयोग करता है, लेकिन एक सरल क्वेरी एल्गोरिथ्म के लिए अधिक जटिल प्रीप्रोसेसिंग एल्गोरिथ्म को बंद कर देता है: 11011110.livejournal.com/233793.html
डेविड

जब आप ( एन 2 लॉग एन ) समय में सभी एन शुरुआती बिंदुओं से सॉर्ट कर सकते हैं तो प्री-प्रोसेसिंग क्यों करते हैं और लगातार देखने के लिए स्पेस ( एन 2 ) का उपयोग करके हैश टेबल में परिणाम स्टोर करते हैं ? n4nO(n2logn)O(n2)
डेव

क्योंकि देखते हैं विभिन्न प्रकार के आदेश, नहीं के साथ शुरू अंक Θ ( n 2 )Θ(n4)Θ(n2)
डेविड एपस्टीन

1

आप शायद से दूर जाने में सक्षम नहीं होने जा रहे हैं, किसी भी तरह से आप इसे टुकड़ा करते हैं; यहां तक कि सभी संभव प्रकार आदेश (मेरा मानना है कि) कर सकता है उपज के लिए इसी क्षेत्रों precomputing हे ( n ! ) क्षेत्रों और इस प्रकार किसी भी सार्थक खोज तकनीक द्वारा की खोज 'अपने' क्षेत्र लगेगा हे ( लॉग ( एन ! ) ) = हे ( एन लॉग ( एन ) ) समय। ( संपादित करें:nlog(n)O(n!)O(log(n!))=O(nlog(n))यह बिल्कुल गलत है; अधिक जानकारी के लिए डेविड एप्पस्टीन का उत्कृष्ट उत्तर देखें!) दूसरी ओर, जटिलता को कम करने का एक उपयोगी तरीका है - खासकर यदि आपको एक बार में पूर्ण प्रकार की आवश्यकता नहीं है, लेकिन बस निकटतम को बेतरतीब ढंग से खींचने में सक्षम होने की आवश्यकता है मक्खी पर - उच्च-क्रम वोरोनोई आरेखों के माध्यम से हो सकता है: मानक वोरोनोई सेल के विस्तार जो न केवल निकटतम पड़ोसी बल्कि दूसरे-निकटतम, आदि के साथ-साथ फ्रैंक-डे के पेपर को k- निकटतम पड़ोसी खोज, http: .people.scs पर जोड़ते हैं। .carleton.ca / ~ dehne / publications / 2-02.pdf विहित संदर्भ प्रतीत होता है; http://www.dehne.carleton.ca/publications पर उनके मुखपृष्ठ में वोरोनोई आरेखों पर कई अन्य पत्र हैं जो कुछ काम के हो सकते हैं।k


3
एक विभाजन अलग तरह आदेश के साथ क्षेत्रों में विमान हैं, तो देखते हैं क्षेत्रों, नहीं हे ( n ! ) । क्षेत्रों के बीच की सीमाएं बिंदुओं के जोड़े की लंबवत द्विभाजक रेखाएं हैं , ऐसी रेखाएं Θ ( n 2 ) हैं, और क्षेत्रों का सेट इन रेखाओं की व्यवस्था द्वारा दिया जाता है। Θ(n4)O(n!)Θ(n2)
डेविड एप्पस्टीन

@ डेविड मुझे लगता है कि आपको इसका जवाब देना चाहिए।
जेम्स किंग

दूसरा - n! गलत लगा जैसे मैं इसे लिख रहा था, लेकिन मैं इसके खिलाफ मामला नहीं देख सकता था। मैं इसे ठीक करने के लिए शीघ्र ही अपने उत्तर में संशोधन करूँगा, लेकिन मैं वास्तव में अधिक सीधे-सीधे सूचित व्यक्ति को देखना चाहूँगा; धन्यवाद!
स्टीवन स्टडनिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.