अद्यतन: मैंने एक पेपर में इस उत्तर का विस्तार किया , औसतन तुलना के साथ क्रमबद्धlg(n!)+o(n) ।
हां, ऐसा एल्गोरिथ्म मौजूद है। मैं केवल बाउंड को प्रमाणित करूंगा , लेकिन एक संभावित रैंडमाइज़ेशन धारणा के तहत हम । मैं और लिए एक प्रयास का भी वर्णन करूंगा ।एल जी ( n ! ) + हे ( एन 1 - ε ) n 0.5 + ओ ( 1 ) हे ( एन 0.5 - ε )lg(n!)+o(n)lg(n!)+O(n1−ε)n0.5 + ओ ( 1 )ओ ( एन)0.5 - ε)
हम मान सकते हैं कि सभी तत्व अलग-अलग हैं, यदि आवश्यक हो तो उन्हें एनोटेट करके; औसत क्रम यादृच्छिक क्रम में अलग तत्वों का उपयोग करता है। हम निष्पक्ष सिक्के के उपयोग के सापेक्ष प्रत्येक तुलना के लिए एन्ट्रापी नुकसान को जोड़कर तुलना की औसत संख्या की गणना कर सकते हैं।
प्रारंभिक बिंदु सम्मिलन सॉर्ट है बाइनरी खोज के साथ यह तय करने के लिए कि अगले तत्व को सॉर्ट किए गए सबसेट में कहां डालें । जब , एक सम्मिलन अधिकांश तुलनाओं पर उपयोग करता है , जो (एन्ट्रापी के संदर्भ में) एक योगात्मक कारक (और औसत-मामले की जटिलता के लिए, ) के लिए इष्टतम है। भी काम करता है)। अब, जब2 की शक्ति के करीब नहीं है, एक तत्व का सम्मिलन उप-रूपी है (औसत मामले में और इस बात की परवाह किए बिना कि हम प्रत्येक क्वेरी को कैसे संतुलित करते हैं), लेकिन यदि तुलना को बर्बाद करते हुए , हम को लगभग समान वितरण के लिए सक्षम कर सकते हैं के अंतराल पर( 1 - ε ) 2 मीटर ≤ | एस | ≤ 2 मीटर - 1 मीटर हे ( ε ) 2 मीटर ≤ | एस | ≤ ( 1 + ε ) 2 मीटर | एस | ए ओ ( 1 ) ए एसएस( १ - ε ) २म≤ | एस| ≤ २म- 1मओ ( ε )2म≤ | एस| ≤(1+ ε ) 2म| एस|एओ ( 1 )एएस 2 के एक शक्ति के लिए लंबाई करीब की है, हम वांछित optimality मिलता है।
हम बैचों में तत्वों को जोड़कर इसे प्राप्त करते हैं, और कभी-कभी कुशलता से एक-दूसरे के साथ बैच के तत्वों की तुलना करते हैं, जैसे कि तत्व अनुरूप का अंतराल अर्ध-यादृच्छिक तरीके से घटता है (और अंतराल के अंदर की संभावना वितरण के साथ। लगभग समान), और जब अंतराल की लंबाई 2 की शक्ति के करीब पर्याप्त होती है, तो डालने के लिए बाइनरी खोज करते हैं ।ए ए एएसएएए
आम निर्माण
हम सॉर्ट किए गए तत्वों का एक सबसेट रखेंगे , और प्रत्येक अनारक्षित तत्व , हम के न्यूनतम अंतराल का ट्रैक रखेंगे जहां स्थित होने के लिए जाना जाता है। की लंबाई है ; अंतराल की पहचान से है।A I A A S A | मैं ए | I A I A = I BएसएमैंएSA|IA|IAIA=IB
Let हो: तुलना साथ करें , और फिर (यादृच्छिक क्रम में) संबंधित तत्वों के खिलाफ और तुलना करें जब तक कि उनके अंतराल असंतुष्ट नहीं होते (या लंबाई 1 होती है)। तत्व को (सुसंगत तरीके से) तुलना के लिए संभाव्यता बनाने के लिए 1/2 के करीब संभव के रूप में बनाने के लिए, यह मानते हुए कि जब कहा जाता है, समान रूप से पर वितरित किया । अंत में असहमति के कारण, एकरूपता धारणा को बनाए रखता है।ए बी ए बी एस एस सी ओ एम पी एक आर ई ( ए , बी ) मैं एक ⨯ मैं बी सी ओ एम पी एक आर ईCompare(A,B)ABABSSCompare(A,B)IA×IBCompare
निम्नलिखित खंडों को एक दूसरे से स्वतंत्र रूप से पढ़ा जा सकता है।
A एल्गोरिथ्मlg(n!)+o(n)
दिया गया: एक सॉर्ट की गई सूची , और अनसर्टेड एलिमेंट्स का एक बैच ; ; अनसुलझे तत्व सापेक्ष यादृच्छिक हैं ।एम एम ∈ ω ( 1 ) ∩ ओ ( | एस | ) एसSmm∈ω(1)∩o(|S|)S
दोहराएँ (1) - (3) जबकि संभव हो:
1. साथ बैच से दो तत्वों और उठाओ (कोई भी विकल्प काम करेगा)।
2. भागो ।
3. यदि2 की शक्ति के करीब पर्याप्त है, (नोट 1) बैच से को हटा दें ( बिना ); और साथ भी ऐसा ही करें । अंत में: सभी तत्वों को में डालें और सॉर्ट को पूरा करें।B I A = I B C o m p a r e ( A , B ) | मैं ए | ए आई ए बी एसABIA=IB
Compare(A,B)
|IA|AIAB
S
नोट 1: "करीब पर्याप्त" के लिए, किसी भी सापेक्ष त्रुटि ( एक समारोह के रूप में) तब तक काम करती है जब तक तत्वों को चरण 4 में हटा दिया जाएगा (नोट 2 द्वारा संभव)। एक अनुमानित रैंडमाइज़ेशन धारणा के तहत, रिश्तेदार त्रुटि का उपयोग करके तत्वों को एक अनुमति देता है औसत तुलना छँटाई एल्गोरिथ्म।m m - o ( m ) c log log m / log m m ( 1 - log - Θ ( c ) m ) l g ( n ! ) + O ( n log log n / log n )o(1)mm−o(m)cloglogm/logmm(1−log−Θ(c)m)lg(n!)+O(nloglogn/logn)
नोट 2: क्योंकि समान अनुक्रम अनुक्रम समान अंतराल अंतराल की ओर जाता है, लगभग सभी तत्व चरण (1) बार (जब तक चरण 4 में हटाए नहीं जाते ) से । शुरुआत में, यदि और हम चुनते हैं , तो हम तुलना तत्व , और चरण के प्रत्येक अनुप्रयोग (3) से में कम करने की संभावनामें बार। अब प्रत्येक अनुपात के लिए जो कि 2 की तर्कसंगत शक्ति नहीं है, हमारे पास , और इसलिए हमेंएक < बी ए ए एस [ ≈ ( 1 - 1 / √Ω(logm)A<BAAAO(1)| मैंए| ≈1/(1-1/ √S[≈(1−1/2–√)|S|]AO(1)|IA|एक>1∀ε>0∀घ>0∃मीटर,एन∈एन≈1/(1−1/2–√)a>1ओ(n)∀ε>0∀d>0∃m,n∈N1−ε<amd2n<1+εo(n) बाध्य।
एक संभावित एल्गोरिथ्मlg(n!)+O(n1−ε)
मोडुलो एक यादृच्छिककरण धारणा है, हम औसत तुलना इस प्रकार प्राप्त कर सकते हैं।lg(n!)+O(n1−ε)
बेतरतीब ढंग से आइटम को फेरबदल करें, और पहले आधे को एक सूची में क्रमबद्ध करें , जबकि दूसरे छमाही को एक अनसूटेड बैच के रूप में रखें।S
बैच खाली होने तक दोहराएं:
यादृच्छिक रूप से । चलो । यदि खाली है, तो को बैच से निकालें और में डालें । अन्यथा:जी = { बी ∈ बैच : | पी ( ए < बी ) - 0.5 | < N - 0.51 ε } जी एक एसA∈batchG={B∈batch:|P(A<B)−0.5|<n−0.51ε}GAS
- यदि ऐसा है, जिसमें प्रायिकता (≥0.05 कहते हैं), बनाता हैभीतर 2 के एक शक्ति के रिश्तेदार त्रुटि, चलाने और यदि सफल (यानी के भीतर है 2 के एक शक्ति के रिश्तेदार त्रुटि) , से बैच हटाएं और में डालें ।Θ ( 1 ) सी ओ एम पी एक आर ई ( ए , बी ) | मैं ए | n - ε सी ओ एम पी एक आर ई ( ए , बी ) | मैं ए | n - ε एक एसB∈GΘ(1)Compare(A,B)|IA|n−εCompare(A,B)|IA|n−εAS
- यदि ऐसा कोई , तो एक यादृच्छिक लिए ।सी ओ एम पी एक आर ई ( ए , बी ) बी ∈ जीB∈GCompare(A,B)B∈G
अगर हमारी यादृच्छिकता धारणा काम करती है (यानी अंतराल लंबाई और पदों का वितरण यादृच्छिक रूप से पर्याप्त है), तो प्रक्रिया के अधिकांश भाग में, तत्वों ( साथ पसंद के साथ एक विशिष्ट को कुशलता से किया जा सकता है। विभिन्न अंतराल लंबाई)। इस प्रकार, हम आम तौर पर इसके बाद के संस्करण के लिए (1) एक तुलना चुन सकते हैं, और अगर हम तुलना परिणाम के साथ अशुभ हैं, हम अभी भी मिल संभावना है, इस प्रकार प्राप्त करने (यदि छोटे पर्याप्त है, 0.01 कहते हैं) एक -comparison एल्गोरिथम। कुछ परिवर्तनों और अनुमानों के साथ, कुल गणना को क्वैसिलिनियर बनाया जा सकता है: एक तत्व को देखते हुएn Θ ( 1 ) एन Θ ( 1 ) Θ ( लॉग एन ) ε एल जी ( n ! ) + हे ( एन 1 - ε ) एक बीAnΘ(1)nΘ(1)Θ(logn)εlg(n!)+O(n1−ε)A, अंतराल लंबी होनहार गणना, और फिर सही अनुमानित केंद्र और अंतराल लंबाई के साथ एस देखो ।B
तुलनाओं को अनुकूलित करने के कई तरीके हैं, लेकिन बाधा यह है कि प्रत्येक तुलना अनलकी हो सकती है और हमारे पास तुलनात्मक संख्या सीमित है। यदि अनुकूलन के बाद, औसतन 4 तुलना करता है और 1/4 संभावना के साथ 'सफल' होता है, तो हमें ।ε ≈ ( 1 - ε ) / 4 / लोग इन 4 / 3 2 ≈ 0.09Compare(A,B)ε≈(1−ε)/4/log4/32≈0.09
एक बेहतर तरीका यह है कि जब तक अंतराल 2 की शक्ति के करीब न हो जाए, तब तक इंतजार करना है, ताकि व्यक्तिगत अंतराल की लंबाई नहीं बल्कि लंबाई का वितरण नियंत्रित हो सके।
एक एल्गोरिथम पर एक प्रयासlg(n!)+n0.5+o(1)
मान लीजिए कि और हमें तत्वों का एक बैच दिया गया है अंतराल भी दिया गया है,आम तौर पर और साथ समान रूप से वितरित (एक यादृच्छिक त्रुटि के लिए, और पर्याप्त सटीकता के साथ पकड़े हुए भी अगर पर वातानुकूलित )। फिर, हम वस्तुओं को औसतन तुलना करने के लिए निम्नानुसार क्रमबद्ध कर सकते हैं:
(*) सभी तत्वों को उनके प्रारंभिक के क्रम में सम्मिलित करें । इस तरह से सभी तत्वों को डाला जाता है जब उनकी अंतराल लंबाई 2 की शक्ति के करीब होती है।एन आई ए | मैं ए | एन 1 - ओ ( 1 ) | मैं ए ||S|=nnIA|IA|n1−o(1) A<S[i]n0.5+o(1)| मैंए||IA|2⌊lg|IA|⌋A<S[i]n0.5+o(1)
|IA|2⌊lg|IA|⌋
सॉर्टिंग एल्गोरिदम होगा: सूची को बेतरतीब ढंग से फेरबदल करें और पहले आधे सॉर्ट करें । दूसरी छमाही सम्मिलित करने के लिए, वितरण सही करें, और ऊपर (*) करें।S
बनाने के लिए वितरण अधिकार, हम एक 'यादृच्छिक' वितरण कर सकते हैं, और फिर प्रत्येक के लिए तत्वों के सही अंश को रोक सकते हैं बाकी को यादृच्छिक करते समय (यदि आवश्यक हो तो )। हालाँकि, जबकि यह सही होना चाहिए विश्व स्तर पर, हम यह नहीं जानते हैं कि क्या इसे आवश्यक सटीकता के साथ स्थानीय रूप से नियंत्रित किया जा सकता है (इसलिए शब्द "प्रयास" उपरोक्त)। | मैंए| /2⌊एलजी| मैंए| ⌋| मैंए||IA|2⌊lg|IA|⌋|IA|/2⌊lg|IA|⌋|IA|2⌊lg|IA|⌋
'यादृच्छिक' वितरण करने के लिए, हम साथ यादृच्छिक रूप से , सिवाय इसके कि प्रारंभिक सभी समान के साथ, हम किसी सबलोगैथमिक गहराई पर यादृच्छिकता की उम्मीद नहीं करते हैं (यानी काफी लंबे समय के साथ )। हालाँकि, मैं अनुमान लगाता हूं कि हम से तत्वों का उपयोग करके सामान्यीकरण (शायद कोई भी उचित विकल्प काम करेंगे) का उपयोग करते हुए एक सबलोग्रैथिक गहराई पर यादृच्छिककरण प्राप्त करते हैं: यदि हम तत्वों को उलझाए रखते हैं (अर्थात तुलना परिणामों से जुड़े), हमें साथ प्रत्येक तुलना के लिए noncommuting पसंद के बारे में होना चाहिए । इसे अनुमति देनी चाहिएपी ( एक < बी ) ≈ 0.5 मैं एक मैं एक सी ओ एम पी एक आर ई कश्मीर = ω ( 1 ) कश्मीर = ω ( 1 ) कश्मीर एस ओ ( लॉग कश्मीर n + log k ) k Θ ( log k )Compare(A,B)P(A<B)≈0.5IAIAComparek=ω(1)k=ω(1)kSO(logkn+logk)यादृच्छिकता की गहराई, जैसा कि वांछित है (यह मानते हुए कि बहुत बड़ा नहीं है क्योंकि हमें तत्वों को विचलित करने के लिए गहराई की आवश्यकता है)। मुझे उम्मीद है कि अगर एक छोटे से पर्याप्त का उपयोग करके गणना को कैसिलिनियर बनाया जा सकता है ।kΘ(logk)k
1/2 साथ तुलना के बाद से हाँ प्रायिकता केवल एंट्रोपी बर्बाद करती है , प्रारंभिक यादृच्छिकरण और उनके अंतराल अंतराल में तत्वों की मामूली गैर-समरूपता को केवल आवश्यकता होनी चाहिए एन्ट्रापी वेस्ट। यदि वितरण आकार देने में अच्छी तरह से सफल होता है, तो एंट्रोपी अपशिष्ट मुख्य रूप से (*) (इसलिए ) के दौरान अंतराल लंबाई बेमेल से उपजा है । हे ( 1 / n ) n ओ ( 1 ) एन 0.5 + ओ ( 1 )1/2+n−0.5O(1/n)no(1)n0.5+o(1)
एक संभावित संयोजन:lg(n!)+O(n0.5−ε)| एस | + N 0.5 + ε ≈ n 0.5 + ε ≈ n 0.5 + ε n 0.5 - ε / 2 + ओ ( 1 ) एस एन ε मैं एक Θ ( n ε / 2 ) एन 1 - ओ ( यदि वितरण को आकार देने में अच्छी तरह से काम करता है और हम बैच आकार को समान बनाते हैं and चुनिंदा in तत्वों को (*) (ऊपर) में अस्वीकार करते हैं , हम एंट्रॉपी कचरे साथ सभी लेकिन इन elements तत्वों को सम्मिलित कर सकते हैं इस प्रकार है। को equal के बराबर अंतराल में विभाजित करें , और जब सम्मिलन के दौरान, एक अंतराल पर है, तो अंतराल को (यानी प्रविष्टि को रद्द करें) को अस्वीकार कर देता है यदि अंतराल बहुत लंबा है, इस प्रकार इन अंतरालों की लंबाई में भिन्नता को कम किया जा सकता है|S|+n0.5+ε≈n0.5+ε≈n0.5+εn0.5−ε/2+o(1)SnεIAΘ(nε/2)समय, जो बदले में यादृच्छिक लंबाई की लंबाई भिन्नता को कम करता है अंतराल में समय, आवश्यकतानुसार। अब, हम इसके बाद के संस्करण का उपयोग कर सकते एल्गोरिथ्म के साथ शेष तत्व डालने के लिए बर्बाद करता है, तो छोटा है बस। एन ε / 2 - ओ ( 1 ) एल जी (n!)+हे( एन 1 - ε )हे( एन 0.5 - ε ' ) εn1−o(1)nε/2−o(1)lg(n!)+O(n1−ε)O(n0.5−ε′)ε
छँटाई की सबसे खराब स्थिति: सबसे अधिक संभावना है, सबसे खराब-स्थिति तुलना के साथ एक छँटाई एल्गोरिथ्म है । मध्यिका खोजने के लिए, औसत मामले ( तुलना) और सबसे खराब स्थिति (कम से कम तुलनाओं के बीच एक रैखिक अंतर है । हालांकि, छँटाई के लिए, तुलना करने की व्यवस्था करने और नए छँटाई एल्गोरिदम खोजने के लिए बहुत स्वतंत्रता है।1.5 n + ओ ( n ) ( 2 + ε ) n - हे ( 1 )lg(n!)+o(n)1.5n+o(n)(2+ε)n−O(1)