विभाजन योग्य ढेर


22

डेटा संरचनाओं के बारे में क्या जाना जाता है जो निम्नलिखित दो कार्यों के अधीन वस्तुओं के अनुक्रम को बनाए रख सकते हैं?

  • पुश (x): अनुक्रम के अंत में x जोड़ें, और अनुक्रम में अपनी स्थिति के लिए एक पहचानकर्ता लौटाएं
  • एक्स्ट्रेक्ट (S): आइडेंटिफायर्स का एक अनियंत्रित सेट दिया गया, अनुक्रम से उन स्थितियों में आइटम हटा दें, और अनुक्रम क्रम में हटाए गए आइटमों की सूची लौटाएं

यदि आप चाहें, तो आप इसे एक स्टैक या एक कतार के रूप में विभाजित कर सकते हैं, जो इसे दो स्टैक्स में विभाजित करता है: एक पॉप या डीक्यू ऑपरेशन को लागू करने के लिए एक्सट्रैक्ट ऑपरेशन का उपयोग किया जा सकता है, और आइटम का एक्सट्रैक्टेड सीक्वेंस भी डाला जा सकता है। फिर से एक अलग ढेर या कतार में।

मुझे पहले से ही पता है: एक अनुक्रम को एक दोहरी-लिंक की गई सूची के रूप में बनाए रख सकता है, जहां प्रत्येक पहचानकर्ता एक लिंक-लिस्ट नोड के लिए एक संकेतक है, और प्रत्येक नोड एक स्थिति संख्या भी संग्रहीत करता है जो दो असंबंधित तत्वों के पदों के बीच तेजी से तुलना की अनुमति देता है अनुक्रम में। स्थिति संख्याओं को अपडेट करना मुश्किल नहीं है क्योंकि डेटा संरचना आगे बढ़ती है ताकि वे अधिकतम मूल्य सभी सकारात्मक पूर्णांक हों , जहां n सूची में आइटमों की वर्तमान संख्या है। इस डेटा संरचना के साथ, एक निकालने के ऑपरेशन का एकमात्र मुश्किल हिस्सा निकाले गए आइटम को उनकी स्थिति संख्याओं के आधार पर छांट रहा है। का एक निष्कर्षण कश्मीर आइटम लेता हे ( कश्मीर O(n)nkFOCS 2002 से हान और थोरुप के पूर्णांक छँटाई एल्गोरिथ्म का उपयोग करके यादृच्छिक समय की उम्मीद करता है, उदाहरण के लिए, और एक पुश ऑपरेशन लगातार समय लेता है।O(kloglogk)

मुझे नहीं पता: क्या समय में अर्क को संभालना और निरंतर समय में धक्का देना संभव है ? क्या इस समस्या पर साहित्य है? क्या यह पूर्णांक छँटाई के समान कठिन है?O(k)

प्रेरणा: यह कॉफमैन-ग्राहम शेड्यूलिंग एल्गोरिदम में वस्तुओं को ऑर्डर करने के लिए आवश्यक बुनियादी कदम है, जिसमें ग्राफ ड्राइंग में भी एप्लिकेशन हैं। कॉफमैन-ग्राहम का कठिन हिस्सा एक लेक्सोग्राफिक टोपोलॉजिकल ऑर्डरिंग है। यह बनाए रखने के द्वारा किया जा सकता है, प्रत्येक अलग-अलग indegree के लिए, उप-भाग में उस indegree के साथ अनुलंबों का एक क्रम शेष शीर्षकों द्वारा प्रेरित है। फिर, बार-बार पहले वर्टेक्स को शून्य-इंडेग्री वर्टिस के अनुक्रम से हटा दें और इसे टोपोलॉजिकल ऑर्डर में जोड़ें; पहले से संबंधित डिग्री से v के पड़ोसियों को निकालें और उन्हें अगली छोटी डिग्री के लिए अनुक्रम पर धकेल दें। तो एक हे ( के )vvO(k) इस डेटा संरचना में अर्क संचालन के लिए समय कॉफ़मैन-ग्राहम एल्गोरिथ्म के एक रैखिक समय कार्यान्वयन के लिए नेतृत्व करेगा।

चूंकि मूल रूप से यह पूछने पर मुझे 1976 से सेठी का एक पेपर मिला, जो कॉफ़मैन-ग्राहम एल्गोरिथम को रैखिक समय में लागू करने की अनुमति देता है, और इसे कॉफ़मैन-ग्राहम एल्गोरिथम पर मेरे विकिपीडिया लेख में शामिल किया है , इसलिए मूल प्रेरणा कम सार्थक है। मैं अभी भी उत्सुक हूं कि उत्तर क्या है, हालांकि।


यदि सम्मिलन केवल अनुक्रम के अंत में होता है, तो आप एक डबल लिंक्ड सूची और आइटम पदों की हैश तालिका दोनों को मंटेन कर सकते हैं। सम्मिलन: amortized O (1) (बस अंतिम आइटम के लिए एक संकेतक रखें)। K आइटमों की निकासी: amortized O (k) (S के प्रत्येक तत्व के लिए, पॉइंटर प्राप्त करें और इसे हैश टेबल से हटा दें, आइटम को सूची से निकालें और निकालें और निष्कर्षण परिणाम में जोड़ें)।
मार्जियो डी बियासी

3
यह उस सूची से आइटम का निष्कर्षण नहीं है जो समय लेता है, यह उन्हें सही अनुक्रम क्रम में निकालने के लिए तर्क के अनियोजित क्रम से पुनर्व्यवस्थित कर रहा है।
डेविड एपपस्टीन

जवाबों:


1

मुझे लगता है कि यह मुश्किल के रूप में कम से कम पूर्णांकों का एक सेट छँटाई के रूप में है में आकार बहुपद का "यादृच्छिक सलाह" के साथ एन । यादृच्छिक सलाह से मेरा मतलब है कि किसी भी n के लिए एक निश्चित वितरण D n ( केवल n पर निर्भर करता है ) आकार की पाली ( n ) के तार पर है और हमारे एल्गोरिथ्म (RAM मशीन द्वारा निर्मित ) को D से एकल नमूने के लिए यादृच्छिक अभिगम दिया गया है एनD n पुश करने के बाद (यादृच्छिक) डेटा संरचना है [ n ]S[n]nnDnnnDnDn[n]क्रम में, हैश तालिका के साथ मिलकर जो अनुमानित समय में पहचानकर्ताओं को पूर्णांक देता है ।O(1)

यह देखते हुए कि सेटअप, एक उदाहरण के लिए पूर्णांक छँटाई समस्या के कारण, हम निकालने (जारी कर सकते हैं एस ) (वास्तव में हम के पहचानकर्ता की जरूरत एस लेकिन इस मानचित्रण में किया जा सकता हे ( 1 ) हैश का उपयोग कर आइटम प्रति समय तालिका जो सलाह का हिस्सा है) और इनपुट को निकालने के निष्पादन में लगने वाले समय में हल किया जाएगा।S[n]SSO(1)

इसलिए, संदेश यह है कि, जब तक कि कुछ "मुफ्त" पक्ष की जानकारी जो केवल पूर्णांकों की ऊपरी सीमा पर निर्भर करती है, पूर्णांक को छांटना आसान बना सकती है, अर्क पूर्णांक छँटाई के समान कठिन है।

क्या यह अजीब मॉडल के बिना दो समस्याओं के बीच का संबंध है? क्या यादृच्छिक सलाह की यह धारणा कुछ जानी जाती है? यह एमए प्रोटोकॉल की तरह है, लेकिन मर्लिन के संदेश को इनपुट पर निर्भर करने की अनुमति नहीं है और हम आर्थर के चलने के समय की परवाह करते हैं।


[n]DnΩ(n)DnΩ(n)k[n]O(n+k)O(k)
डेव

Ω(n)DnkO(k)Dn

यहाँ कारण है कि मैं इस जवाब को पूरी तरह से आश्वस्त नहीं पाता। यदि आपके पास केवल एक सेट S का पूर्णांक है जिसे आप सॉर्ट करना चाहते हैं, तो सब कुछ रैखिक समय है (बस O (n + k) में सॉर्ट करना है। लेकिन यदि आप इस डेटा संरचना का उपयोग करने के लिए कई छोटे प्रकारों के अनुक्रम का अनुकरण करने की कोशिश कर रहे हैं (ताकि गिनती अच्छी तरह से अच्छी न हो), तो केवल इन छोटे प्रकारों में से पहला पूरी तरह से असंबंधित है: उसके बाद, आपने कुछ हटा दिया है [एन] के तत्वों, इसलिए आपके द्वारा क्रमबद्ध प्रत्येक अनुक्रम को पिछले वाले से असहमति होना चाहिए। इसलिए छंटाई के काम से कमी करना मुश्किल लगता है।
डेविड एपपस्टीन

O(k)O(n+k)

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