कैसे क्रमबद्ध सेट में एक तत्व के सूचकांक को खोजने के लिए?

वोट
4

मैं एक में एक क्रमबद्ध सेट में तत्व (BST द्वारा समर्थित) प्राप्त कर सकते हैं O(logN)। अब मैं चाहते हैं सूचकांक इस तत्व की। उदाहरण के लिए, सेट में {1, 3, 4, 10}, के सूचकांक 4है 2और के सूचकांक 1है 0

जाहिर है, मैं सिर्फ सेट पर पुनरावृति कर सकते हैं, तो तुच्छ समाधान है O(N)। हम बेहतर शायद BST गुण और / या सहायक डेटा संरचनाओं का उपयोग करते हैं कर सकते हैं?

09/05/2011 को 11:46
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
3

एक सरल BST जहां यादृच्छिक में तत्वों की प्रविष्टि के आदेश के साथ, आप यह निर्धारित करने के कितने तत्वों वास्तव में पेड़ चलने के बिना उसकी तत्व तुलना में छोटे होते रास्ता नहीं है।

आप इस तरह के एक लाल-काले वृक्ष के रूप में एक संतुलित पेड़, था, तो आप कम से कम सूचकांक पर एक कम और ऊपरी बाध्य पेड़ की ऊंचाई पर सीमा की वजह से डाल सकता है। यदि एक BST करने के लिए तत्वों की प्रविष्टि के आदेश तो फिर गैर यादृच्छिक है, तो आप इसे चलने के बिना वृक्ष की ऊंचाई के बारे में कुछ कहना और अनुमानित सूचकांक के कुछ अनुमान दे सकता है।

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

सूचकांक और गिनती: एक अन्य समाधान दो गुणों के साथ BST नोड्स का विस्तार करने के लिए है। सूचकांक का कहना है कि कितने तत्वों को इस नोड में एक की तुलना में छोटे पेड़ में हैं। गिनती का कहना है कि कितने तत्वों BST जब आप अंतिम बार कब अपडेट उस नोड के सूचकांक में थे। प्रविष्टि, विलोपन करना अपेक्षाकृत आसान परिवर्तन के साथ और BST पर खोज करते हैं, कि एक निरंतर समय से परे उन बुनियादी संचालन को प्रभावित नहीं है, और हे (1) में सीधे तत्व के सूचकांक प्राप्त कर सकते हैं।

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

09/05/2011 को 13:13
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more