क्या पूर्णांक मॉडल में O (n) में पूर्णांक छांटना संभव है?


9

मेरे ज्ञान में एक सबसे खराब स्थिति वाला एल्गोरिथ्म मौजूद नहीं है जो निम्न समस्या को हल करता है:O(n)

परिमित पूर्णांकों से मिलकर लंबाई अनुक्रम को देखते हुए क्रमचय को खोजें जहां हर तत्व इसके उत्तराधिकारी से कम या बराबर है।n

लेकिन क्या कोई सबूत है कि यह अस्तित्व में नहीं है, गणना के ट्रांसडाइकोटोमस मॉडल में ?


ध्यान दें कि मैं पूर्णांकों की सीमा को सीमित नहीं कर रहा हूं। मैं किसी भी तरह की तुलना करने के लिए समाधान सीमित नहीं कर रहा हूँ।


जहाँ तक मुझे पता है, वहाँ एक हो सकता है O(n)SAT के लिए समय एल्गोरिथ्म! तो उत्तर नहीं है।
लेम्बिक

5
AFAIK, यह अभी भी एक खुली समस्या है।
जुहो

2
मैं नहीं जानता कि क्या कोई सार्थक उत्तर हो सकता है जब तक आप यह निर्दिष्ट नहीं करते हैं कि आप किस गणना का उपयोग कर रहे हैं, यह देखते हुए कि आप अपने कंप्यूटर को तुलना और स्वैप करने के लिए सीमित नहीं कर रहे हैं। केवल रैम और दो-संख्या की तुलना के साथ, एन्ट्रॉपी से एक तर्क ए देता हैΩ(nएलजी(n))समय सीमा, यहां तक ​​कि ट्रांसडाइकोटोमस कंप्यूटरों के लिए भी। तुच्छ रूप से, यदि स्वैप और तुलना के बजाय, छँटाई एक प्राथमिक ऑपरेशन है, तो इसमें किया जा सकता हैΘ(1)। यदि सही जगह पर पूर्णांक सम्मिलित करना एक प्राथमिक कार्य है,Θ(n)। क्या आपके मन में एक विशिष्ट परे-तुलना-स्वैप मॉडल है?
लेउवे विन्खुइजेन

2
@LieuweVinkhuijzen मेरा प्रश्न अभिकलन के ट्रांसडिचोटोमस मॉडल को निर्दिष्ट करता है। सादे अंग्रेजी में: गणना का एक मॉडल जहां मशीन का शब्द आकार समस्या के किसी भी पूर्णांक को पकड़ने के लिए पर्याप्त होता है। इसलिए किसी भी दो पूर्णांकों की तुलना करना O (1) है, लेकिन उन्हें जोड़ना, गुणा करना आदि है। गणना के इस मॉडल में एन्ट्रोपिक बाउंड पहले से ही हरा दिया गया है, हान, यिजि (2004), "ओ में नियतात्मक छंटनी (एन लॉग लॉग एन) समय और रैखिक स्थान" देखें
orlp

@orlp मैं देख रहा हूँ; यदि आप पूर्णांक की संरचना का लाभ उठाते हैं, तो आप एन्ट्रोपिक बाउंड को हरा सकते हैं। मुझे पूर्णांक छँटाई के बारे में पता नहीं था; मुझे उस विषय पर पढ़ना सुनिश्चित होगा!
लेउवे विन्खुइजेन

जवाबों:


4

इंटेगर को अंदर से छांटा जा सकता है हे(n) इसके साथ समय हे(1)अतिरिक्त स्थान। अधिक सटीक, यदि आपके पास हैn सीमा में पूर्णांक [1,nसी], O (n) समय में हल किया जा सकता है।

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

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


1
अमूर्त से मैं जो समझ सकता हूं वह यह सामान्य नहीं है - यह केवल शब्दों को छांट सकता है लॉगn आकार में हे(n)। मेरे प्रश्न में स्पष्ट रूप से अनबाउंड पूर्णांक का उल्लेख है।
orlp

@orlp पेपर में तीसरा एल्गोरिथ्म अनबाउंड-लंबाई पूर्णांक के बारे में बात करता है।
छद्म नाम

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

3
मुझे माफ कर दो, लेकिन यह वर्तमान स्थिति में है यह जवाब सवाल का बिल्कुल भी जवाब नहीं देता है । मैंने स्पष्ट रूप से उल्लेख किया है कि पूर्णांक बाध्य नहीं हैं । यह उत्तर एक पूरी तरह से अलग समस्या का हल करता है।
orlp

1
अंतिम बिंदु अब एक छोटे से फ़ॉन्ट में नहीं है :)
orlp

-1

पूर्णांक के लिए, आप मूलांक सॉर्ट का उपयोग कर सकते हैं । यह बाल्टियाँ बनाता है और फिर संख्याओं की एक सूची बनाता हैO(bn) कहाँ पे b किसी भी पूर्णांक के बिट्स में आकार पर एक ऊपरी बाध्य है, और n सॉर्ट करने के लिए तत्वों की संख्या।

यदि आपके पूर्णांक के आकार पर कोई ऊपरी सीमा नहीं है, तो मुझे विश्वास नहीं है कि कोई ज्ञात रैखिक-समय सॉर्टिंग एल्गोरिथ्म है।


5
स्वागत हे! आप जो कहते हैं वह पूरी तरह सच है लेकिन मुझे नहीं लगता कि यह सवाल का जवाब देता है। प्रश्न विशेष रूप से एक सबूत के लिए पूछता है कि आवश्यक एल्गोरिथ्म गणना के एक विशेष मॉडल में मौजूद नहीं है; केवल यह कहना कि ऐसा कोई एल्गोरिथ्म ज्ञात नहीं है, यह साबित नहीं करता है कि कोई भी मौजूद नहीं है।
डेविड रिचेर्बी

वास्तव में, हमारी समस्या में एक निरंतरता होने के कारण, मैं इस एल्गोरिथ्म को o (n) में मानता हूं
RFC 2549

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

हाँ, निश्चित रूप से एक टाइपो;) उसके प्रश्न में, जैसा कि आप संख्या बी में एक शब्द फिटिंग को मानते हैं, यह एक स्थिर हो जाता है।
RFC 2549

1
यह शब्द की लंबाई को स्थिर नहीं बना रहा है। । (अन्यथा, वहाँ स्पष्ट रूप से यह मान "है कि एक शब्द पर कार्रवाई आपरेशन प्रति निरंतर समय लेने के लिए" करने के लिए कोई कारण नहीं होगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.