क्विकॉर्ट का विश्लेषण करते समय अव्यवस्था का क्या उपाय उपयोग करें


9

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

जिस कारण से मुझे संदेह है कि मेरे यादृच्छिक अनुक्रम में उनके लिए "आदेश" का एक बहुत कुछ है, वह यह है कि धुरी को यादृच्छिक करने से प्रदर्शन की समस्या ठीक हो जाती है। लेकिन सैद्धांतिक रूप से इन कथित "यादृच्छिक" इनपुट अनुक्रमों पर कोई प्रदर्शन समस्या नहीं होनी चाहिए।


इस तरह की चीज के लिए विकार का एक अच्छा उपाय कोलमोगोरोव जटिलता है। यह मूल रूप से कहता है कि सबसे अधिक विकार वाले स्ट्रिंग वे हैं जो असंगत हैं। यह अपूर्णता विधि की ओर जाता है, जिसका उपयोग एल्गोरिदम को छांटने के औसत-केस विश्लेषण और औसत और सबसे खराब-केस विश्लेषण के बीच संबंध खोजने जैसी चीजों के लिए किया जाता है।
पीटर

मुझे ध्यान देना चाहिए, कि मैं एक अंडरग्रेजुएट हूं ... मैं कुछ अधिक सीधे आगे की ओर देख रहा था, जैसे शायद इस पेपर में एक उपाय (मुझे अभी पता नहीं है कि कौन सा है): citeseerx.ist.psu। edu / viewdoc / सारांश? doi = 10.1.1.45.8017
रॉबर्ट एस। बार्न्स


आपको प्रतिकूल पिवट केस के बजाय प्रोग्रामिंग त्रुटि पर संदेह करना चाहिए। बस अपने एल्गोरिथ्म तरह अगर देखने के लिए 1 से एन तक पूर्णांकों की एक क्रमबद्ध क्रमबद्ध क्रमबद्ध करें!
यवेस डेव

@YvesDaoust मुझे नहीं लगता कि यह वास्तव में मायने रखता है, "गैर-अखंडता" की मात्रा वास्तव में केवल लंबाई के तार की कोलमोगोरोव जटिलता है एलजीn!यह अनुक्रम में तत्वों के क्रम को कूटबद्ध करता है। बेशक, यह कम्प्यूटेशनल नहीं है, और आपको छद्म लोगों की तरह गहरे तारों के बारे में सोचना होगा, लेकिन यह इस अर्थ में उपयोगी है कि विकार के हर उपाय अनिवार्य रूप से कोलमोगोरोव जटिलता का एक अनुमान है। और आपको इसके साथ चीजों को साबित करने के लिए इसकी गणना करने की आवश्यकता नहीं है। कई जटिलता परिणाम अपूर्णता विधि के साथ दिखाए गए हैं।
पीटर

जवाबों:


1

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

विकार
का मापन क्विकॉर्ट के उद्देश्यों के लिए चुनने के लिए विकार का उपाय सरल है।
A: यादृच्छिक डेटा की तुलना में माध्यिका से कितनी दूर स्थाई धुरी है?
यदि आप लोमुटो विभाजन का उपयोग करने पर जोर देते हैं और यदि आप मानते हैं कि डुप्लिकेट मानों की अनुमति है तो आपको यादृच्छिकता के खिलाफ निम्नलिखित परीक्षण को जोड़ने की आवश्यकता है:
बी: यादृच्छिक की तुलना में कितने डुप्लिकेट तत्व हैं।

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

दोनों उपाय आँकड़ों का उपयोग करने के लिए तुच्छ हैं।

हम पैथोलॉजिकल डेटा को नियंत्रित कर सकते हैं
। यादृच्छिकता से कोई अन्य विचलन क्विकॉर्ट्स के विश्लेषण के प्रयोजनों के लिए मायने नहीं रखेगा। जब तक धुरी माध्यिका के करीब होगी तब तक यह सभी डेटा पर अच्छा प्रदर्शन करेगा जो रोगात्मक नहीं है।
रैंडम से दूरी को क्विकॉर्ट-पैथोलॉजिकल होने के लिए वास्तव में महान होना होगा, इसलिए हम इस पर शासन कर सकते हैं।

वास्तविक कोड में कभी भी किसी निश्चित धुरी का उपयोग न
करें। ध्यान दें कि यदि आप एक वास्तविक धुरी के साथ वास्तविक कोड लिखते हैं *) (जो भी धुरी हो सकती है) आप स्वयं को सेवा हमले से इनकार कर रहे हैं, क्योंकि एक हमलावर एक सम्मिलित कर सकता है उस बिंदु पर पैथोलॉजिकल वैल्यू और इस तरह आपको हमेशा धुरी के रूप में एक यादृच्छिक तत्व चुनना चाहिए।

*) या एकाधिक पिवोट्स यदि आप x पिवोट्स में से सर्वश्रेष्ठ का चयन करते हैं।

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