यादृच्छिक चयन


14

यादृच्छिक चयन एल्गोरिथ्म निम्नलिखित है:

इनपुट: एक सरणी के (अलग, सादगी के लिए) नंबर और एक नंबरAnk[n]

आउटपुट: का "रैंक तत्व" (अर्थात, यदि को सॉर्ट किया गया हो तो स्थिति में )kAkA

तरीका:

  • यदि में एक तत्व है , तो उसे वापस लौटाएंA
  • एक तत्व ("धुरी") समान रूप से यादृच्छिक पर चुनेंp
  • और सेट की गणना करें।L={aA:a<p}R={aA:a>p}
  • अगर , का रैंक तत्व लौटाता है ।|L|kkL
  • अन्यथा, रैंक तत्वk|L|R

मुझे निम्नलिखित प्रश्न पूछा गया था:

मान लीजिए कि , तो आप मध्यिका की तलाश कर रहे हैं, और let एक स्थिर है। संभावना क्या है कि, पहली पुनरावर्ती कॉल पर, माध्यिका वाले सेट का आकार अधिकांश ?k=n/2α(1/2,1)αn

मुझे बताया गया कि जवाब 2α1 , औचित्य के साथ "चयनित धुरी को मूल सरणी में 1α और α बार के बीच झूठ होना चाहिए "

क्यों? के रूप , जो भी तत्व धुरी के रूप में चुना जाता है वह आधे से अधिक मूल तत्वों से बड़ा या छोटा होता है। मंझला हमेशा बड़े सबरे में निहित होता है, क्योंकि विभाजित विभाजन में तत्व हमेशा धुरी से कम होते हैं।α(0.5,1)

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

यदि धुरी मूल सरणी (तत्वों के आधे से अधिक) के दूसरे भाग में स्थित है, तो मध्ययुगीन निश्चित रूप से पहले बड़ा आधा होगा, इसी कारण से, धुरी को छोटा मानने से पहले सब कुछ।

उदाहरण:

3 4 5 8 7 9 2 1 6 10

माध्य 5 है।

माना जाता है कि चुना धुरी 2 है। इसलिए पहले पुनरावृत्ति के बाद, यह बन जाता है:

१ २ .... बड़ा हिस्सा ...।

केवल 1और 2पहले पुनरावृत्ति के बाद स्वैप किया जाता है। नंबर 5 (माध्यिका) अभी भी पहले आधे में है (धुरी 2 के लिए accroding)। मुद्दा यह है कि, मध्ययुगीन हमेशा अधिक से अधिक आधे पर रहता है, यह एक छोटे से उपश्रेणी में रहने का मौका कैसे दे सकता है?


हम आपके व्याख्यान में नहीं बैठे, इसलिए कृपया विधि बताएं।
राफेल

यह जानने के बिना कि आप किस एल्गोरिथ्म के बारे में बात कर रहे हैं, आपका प्रश्न पठनीय नहीं है। आप कई क्षमताओं में का उपयोग करने लगते हैं ; मैंने संपादित करने की कोशिश की, लेकिन मुझे यकीन नहीं है कि मैंने इसका अर्थ पकड़ा है। कृपया संशोधित करें ताकि प्रश्न स्पष्ट हो। तब तक के लिए मतदान बंद .5
राफेल

यह निर्धारक विधि के विपरीत, यादृच्छिक विधि का उपयोग करते हुए चयन एल्गोरिथम है।
अमुमु

एक तत्व को बेतरतीब ढंग से चुनने के कई तरीके हैं।
राफेल

2
@ अम्मू: मैंने इसे एल्गोरिथम का वर्णन करने के लिए संपादित किया। इस तरह एक मंच में, हर कोई नहीं जानता कि आप किस बारे में बात कर रहे हैं, और चयन करने के लिए एक बहुत अलग यादृच्छिक दृष्टिकोण है जो विश्लेषण करना आसान है।
लुई

जवाबों:


12

मान लीजिए कि आपके सरणी में तत्व हैं। जैसा कि आपने उल्लेख किया है, पहले विभाजन के बाद माध्य हमेशा बड़े हिस्से में होता है। यदि बड़े भाग का आकार कम से कम ( 1 - α ) n हो तो बड़े भाग का आकार सबसे अधिक α n होता है । ऐसा तब होता है जब आप एक ऐसी धुरी को चुनते हैं जो सबसे छोटे या सबसे बड़े ( 1 - α ) n तत्वों में से एक न हो। क्योंकि α > 1 / 2 , तुम्हें पता है इन संबंध तोड़ना सेट कर रहे हैं, इतना बुरा इन्हीं में से एक से टकराने की संभावना सिर्फ 2 - 2 α , और 1 -nαn(1α)n(1α)nα>1/222α12+2α=2α1


जवाब के लिए धन्यवाद। मेरे पास अभी भी कुछ चीजें अस्पष्ट हैं। तो, α> 1/2 को डिसऑइंटमेंट सेट्स से क्या लेना-देना है? मैंने सोचा था कि जब हम हमेशा इस विधि के साथ असमान आकार की परवाह किए बिना सेट करते हैं।
अमुमू

1α<1/2(1α)n<n(1α)n

बस एक आखिरी बात: इससे बुरी / अच्छी धुरी का क्या करना है? जहाँ तक मुझे पता है, अच्छी धुरी आम तौर पर 25-75 श्रेणी में होती है (जो 25% -75% से मूल सरणियों को विभाजित करती है), और बुरा उस सीमा के बाहर होता है, और बुरा आमतौर पर मूल के शुरू या अंत में होता है सरणी। लेकिन यह?
अमुमु

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