क्या रस्सियों के लिए वैन एमड बोआस पेड़ों के बराबर है?


23

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

वैन एमड बोआस के पेड़ लगभग सबसे तेज़ प्राथमिकता वाली कतारों के बारे में हैं, यदि आप उन वस्तुओं की संख्या पर ऊपरी बाध्य नहीं हैं जिन्हें आप इसमें डाल सकते हैं और एक बड़ी आरंभीकरण लागत। मेरा सवाल यह है कि क्या कुछ डेटा संरचना मौजूद है जो वैन एम्ड बोस पेड़ की तरह ही तेज़ है, लेकिन पाठ संपादक संचालन का समर्थन करता है।

हमें केवल अपनी डेटा संरचना में मीटर वर्णों का समर्थन करने की आवश्यकता है (इसलिए यदि , तो हम 4GB तक ASCII वर्णों का समर्थन करते हैं)। हमें नई डेटा संरचना को आरम्भ करने के लिए समय की अनुमति है । हम निम्नलिखित कार्यों का समर्थन करना चाहते हैं:लॉगमीटर=32मीटर

  • स्थिति में एक चरित्र सम्मिलित में (और इस तरह बाद के हर चरित्र की स्थिति 1 से बढ़ रही)।मैंहे(लॉगलॉगमीटर)
  • स्थिति में एक चरित्र को हटाएँ में ।मैंहे(लॉगलॉगमीटर)
  • स्थिति में चरित्र लौटें में ।मैंहे(लॉगलॉगमीटर)

तो, डालने (0, 'ए') के बाद डालने (0, 'बी') "बा" में परिणाम।

इससे भी बेहतर होगा:

  • में कुछ इंडेक्स लिए 'पॉइंटर' लौटाएं ।मैंहे(लॉगलॉगमीटर)
  • एक 'पॉइंटर' को देखते हुए, O (1) में इस स्थिति पर वर्ण लौटाएँहे(1)
  • एक 'पॉइंटर' को देखते हुए, इस स्थिति को O (1) में हटा दें O(1)
  • एक 'पॉइंटर' को देखते हुए, O (1) में इस स्थिति पर एक वर्ण जोड़ें O(1)और एक पॉइंटर को निम्न स्थिति में लौटाएँ।
  • (वैकल्पिक) एक 'पॉइंटर' को देखते हुए, ओ (1) में अगले / पिछले चरित्र के लिए एक 'पॉइंटर' लौटाएं O(1)

जवाबों:


14

फ्रेडमैन और सक्स "गतिशील डेटा संरचनाओं की सेल जांच जटिलता" में दिखाते हैं कि आप Θ ( lg m) से बेहतर नहीं कर सकतेजिन परिचालनों के लिए आप देख रहे हैं, उनके लिए परिशोधन समय। वे इस समस्या को "सूची प्रतिनिधित्व" कहते हैं।Θ(lgmlglgm)

डिट्ज़ ने "ऑप्टिमाइअल अल्गोरिद्म फॉर लिस्ट इंडेक्सिंग एंड सबसेट रैंक" में एक डेटा संरचना प्रस्तुत की जो इस सीमा को प्राप्त करती है।


क्या आप पहले लेख के लिए एक लिंक दे सकते हैं?
राफेल

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