परिशोधित समय


25

क्या एक ऑर्डर की गई सूची को बनाए रखने के लिए एक डेटा संरचना है जो में परिचालित समय में निम्नलिखित कार्यों का समर्थन करती है ?O(1)

  • GetElement (k) : सूची के वें तत्व को लौटाएं ।k

  • InsertAfter (x, y) : x के तुरंत बाद सूची में नया तत्व y डालें।

  • हटाएँ (x) : सूची से x निकालें।

पिछले दो ऑपरेशनों के लिए, आप मान सकते हैं कि x सीधे डेटा संरचना में एक पॉइंटर के रूप में दिया गया है; InsertElement y के लिए संबंधित सूचक देता है। सूची की शुरुआत में InsertAfter (NULL, y) सम्मिलित करता है।

उदाहरण के लिए, खाली डेटा संरचना के साथ शुरू करते हुए, निम्न संचालन क्रमबद्ध सूची को नीचे दिखाए अनुसार अद्यतन करते हैं:

  • InsertAfter (NULL, a) [ए]
  • सम्मिलित करें (NULL, b) [बी 0 ए]
  • सम्मिलित करें (बी, सी) [बी, सी, ए]
  • InsertAfter (ए, डी) [बी, सी, ए, डी]
  • हटाएँ (ग) [खराब]

इन पाँच अद्यतनों के बाद, GetElement (2) को d वापस आना चाहिए, और GetElement (3) को एक त्रुटि वापस करनी चाहिए।


2
में सूची अनुक्रमण के लिए इष्टतम एल्गोरिदम और सबसेट रैंक (1989) मैं एक पाया इस समस्या का समाधान। Ω(log nlog log n)
एटी

2
@ राफेल: मुझे लगता है कि उसका अर्थ है कि तत्व जिसे कहा जाएगा यदि डेटा संरचना एक सरणी थी। ऐरे ( 1 ) समय में पहले ऑपरेशन का समर्थन करता है लेकिन दूसरा नहीं; लिंक की गई सूचियाँ O ( 1 ) समय में दूसरे ऑपरेशन का समर्थन करती हैं लेकिन पहली बार नहीं। A[k]O(1)O(1)
जेफई

2
O(logn)

1
@ राफेल: स्पष्ट करने के लिए संपादित।
जेफ

2
O(1)

जवाबों:


33

नहीं।

Ω(logn/loglogn)

अद्यतन और क्वेरी संचालन के बारे में कुछ अतिरिक्त मान्यताओं के बिना, डिट्ज़ की डेटा संरचना सबसे अच्छा संभव है (कम से कम निरंतर कारकों तक)।


3
@AT: यह बाउंड कभी भी "गलत साबित नहीं हुआ" था। ऐसी परिस्थितियां हैं जहां यह लागू नहीं होता है, लेकिन यह एक पूरी तरह से अलग बयान है!
राफेल

5
@AT: बाइनरी निर्णय पेड़ों की तुलना में छंटनी की निचली सीमा बहुत कमजोर मॉडल साबित हुई थी। बाउंड एल्गोरिदम को विकसित करने के लिए बाध्य "गलत साबित हुआ" था जिसे बाइनरी निर्णय पेड़ों के रूप में वर्णित नहीं किया जा सकता है। फ्रेडमैन और सैक्स के निचले बाउंड को गलत साबित करने के लिए, आपको एक तेज एल्गोरिदम डिजाइन करना होगा जो मेमोरी तक नहीं पहुंचता है । शुभकामनाएँ।
जेफ

@ जेफ और राफेल; कृपया मेरे अन्य उत्तर की समीक्षा करें और मौका मिलने पर मेरे परिणाम की पुष्टि / खंडन करें। धन्यवाद।
एटी

6

1
Ω(logn/loglogn)

वास्तव में। इसके अलावा, क्या आप पुष्टि कर सकते हैं कि यह बाउंड निरंतर-आकार के शब्दों के साथ सूची प्रतिनिधित्व समस्या पर लागू होता है ?
एटी

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