मैंने एक डेटा संरचना का सपना देखा था, क्या यह मौजूद है?


27

मैंने इस डेटा संरचना को खोजने में कामयाबी नहीं पाई है, लेकिन मैं इस क्षेत्र का विशेषज्ञ नहीं हूं।

संरचना एक सेट को लागू करती है, और मूल रूप से एक अपरिवर्तनीय के साथ तुलनीय तत्वों की एक सरणी है। आव्रजन निम्नलिखित है (पुनरावर्ती रूप से परिभाषित):

लंबाई 1 की एक सरणी एक मर्ज-सरणी है।

लम्बाई 2 ^ n (n> 0 के लिए) एक मर्ज-सरणी iff है:

  • पहली छमाही एक मर्ज-सरणी है और दूसरी छमाही खाली है या
  • पहला सरणी पूर्ण और क्रमबद्ध है, और दूसरी छमाही एक मर्ज-सरणी है।

ध्यान दें कि यदि सरणी पूर्ण है, तो इसे क्रमबद्ध किया गया है।

एक तत्व सम्मिलित करने के लिए, हमारे पास दो मामले हैं:

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

एक तत्व को खोजने के लिए, सरणी के पूर्ण होने पर बाइनरी खोज का उपयोग करके, दोनों हिस्सों में पुनरावृत्ति करें। (यह कुशल होना चाहिए क्योंकि ज्यादातर आरोही टुकड़े हैं)।O(log(n))

संरचना को विलय के स्थिर संस्करण के रूप में सोचा जा सकता है।

यह स्पष्ट नहीं है कि किसी तत्व को मिटाने के लिए क्या करना चाहिए।

संपादित करें: संरचना की मेरी समझ में सुधार के बाद।


5
आपने इसे परिभाषित किया है, इसलिए यह मौजूद है। मुझे लगता है कि आपको कुछ बिंदु सुचारू करने होंगे। सबसे पहले, आक्रमणकारी # 2 मुझे भ्रमित करता है क्योंकि यह मध्यवर्ती राज्यों पर लागू नहीं होता है जैसा कि आप उनका वर्णन करते हैं। दूसरा, जब तत्व हटा दिए जाते हैं तो आप क्या करते हैं?
राफेल

7
आप सपना देखा ऊपर एक डेटा संरचना है, यह का सपना देखा नहीं ...
एंड्रेज बॉयर

@ राफेल आपकी टिप्पणियों के लिए धन्यवाद, मैंने आपके विचारों का अनुसरण करते हुए परिभाषा में सुधार किया है। मुझे हटाने के लिए एक एल्गोरिथ्म के बारे में नहीं सोचा था, मैं सिर्फ यह जांचना चाहता था कि क्या यह संरचना साहित्य में थी ताकि इसे और समय समर्पित किया जा सके (और Google में कुछ भी नहीं मिल सके)। अपने पहले वाक्य पर, आप भगवान को परिभाषित कर सकते हैं, लेकिन क्या यह मौजूद है? :)
परबन

@Andrej धन्यवाद, अंग्रेजी मेरी मूल भाषा नहीं है। (मुझे लगता है कि यह तुम्हारा नहीं है :)
pbaren

3
@Andrej: ओपी मूल रूप से "के साथ सपना देखा था" , जो लगभग निश्चित रूप से नहीं था जिसका मतलब था। मैंने इसे "अप" के बजाय "" में बदल दिया। दोनों व्याकरणिक रूप से सही हैं, लेकिन दोनों अर्थ भी बदलते हैं। "का" अधिक दिलचस्प लग रहा था विकल्प ...
András Salamon

जवाबों:


31

आप शास्त्रीय बेंटले-सक्से लॉगरिदमिक विधि का वर्णन कर रहे हैं , जिसे स्टैटिक सॉर्ट किए गए सरणियों पर लागू किया गया है। इसी विचार का उपयोग किसी भी डीकोमोटर खोज समस्या के लिए किसी भी स्थिर डेटा संरचना (कोई प्रविष्टि या विलोपन) के लिए सम्मिलन के लिए समर्थन जोड़ने के लिए किया जा सकता है। (कोई खोज समस्या है विच्छेद यदि कोई संघ के लिए इस सवाल का जवाब सेट के लिए जवाब से आसानी से की जा सकती है और ।) परिवर्तन का एक पहलू से परिशोधित क्वेरी समय बढ़ जाती है (जब तक यह पहले से ही में कुछ बहुपद से बड़ा थाABABO(logn)n), लेकिन केवल एक स्थिर कारक द्वारा अंतरिक्ष बढ़ाता है। हां, यह अधिकमास हो सकता है, ओवरमर्स और वैन लीउवेन के लिए धन्यवाद, लेकिन आप वास्तव में ऐसा नहीं करना चाहते हैं यदि आपके पास नहीं है।

ये नोट मूल बातें कवर करते हैं।

कैशे-विस्मृत लुकहेड सरणियाँ स्टेरॉयड पर बेंटले-सक्से और वैन एमडे बोस पेड़ों के उत्परिवर्ती वंश हैं।


4
वे खूबसूरती से लिखे गए और सचित्र नोट हैं, और मैंने उन्हें कई बार संदर्भ के रूप में इस्तेमाल किया है। उन्हें उपलब्ध कराने के लिए धन्यवाद!
22

मैं देखता हूं कि कैसे शटल ट्री (कागज़ की पहली छमाही से कैश विस्मृत लुकहेड एरे को पेश करते हुए) vEB पेड़ों से संबंधित हैं, लेकिन COLAs और vEB पेड़ों के बीच क्या संबंध है?
22

2
धन्यवाद, यह सामग्री विचार का एक बहुत ही सामान्य सामान्यीकरण है। मैंने हमेशा सोचा है कि डेटा संरचनाएं जमे हुए एल्गोरिदम हैं, जिन्हें आप चरण दर चरण चला सकते हैं, लेकिन मुझे उस अंतर्ज्ञान का एक उपयोगी औपचारिककरण कभी नहीं मिला था।
pbaren

क्या किसी और के लिए पहला लिंक काम करता था?
एटी

हां, मैंने बस कोशिश की। (दुर्भाग्य से, यह एक एल्सेवियर
पेवॉल

11

यह एक लॉग-स्ट्रक्चर्ड मर्ज ट्री या कैश बेखबर लुकहेड एरेज़ (या कोला) के समान है।

सबसे सरल COLA का आकार जिसकी लंबाई " " के आभासी "स्तरों" के साथ लिए है । प्रत्येक स्तर पूरी तरह से पूर्ण या पूरी तरह से खाली है, और प्रत्येक स्तर को क्रमबद्ध किया गया है।2k12i0i<k

एक आइटम सम्मिलित करने के लिए, इसे स्तर 0 ( लंबाई के साथ) रखें यदि स्तर 0 खाली है। अन्यथा, इसे आइटम 0 के स्तर पर मर्ज करें और लेवल 1 भरें ( लंबाई के साथ) परिणामी सूची के साथ 2. यदि स्तर 1 पहले से ही भरा हुआ है, तो फिर से मर्ज करें; दोहराएँ।2021

सम्मिलित करें amortized / सबसे खराब समय लगता है। लुकअप में समय लगता है। अधिक उन्नत संस्करण इनको कम और आंशिक रूप से कम कर सकते हैं।O(lgn)O(n)O(lg2n)

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