मीनिंग ऑफ ओपन हैशिंग और क्लोज्ड हैशिंग


94

ओपन हैशिंग (अलग चेनिंग):

ओपन हैशिंग में, कुंजी हैश तालिका की कोशिकाओं से जुड़ी हुई सूचियों में संग्रहीत की जाती है।

बंद हैशिंग (ओपन एड्रेसिंग):

बंद हैशिंग में, सभी सूचियाँ हैश तालिका में ही जुड़ी हुई सूचियों के उपयोग के बिना संग्रहीत की जाती हैं।

मैं यह समझने में असमर्थ हूं कि उन्हें खुले, बंद और अलग क्यों कहा जाता है। क्या कोई इसे समझा सकता है?


वास्तव में हम कभी भी हैश टेबल में कीज़ को स्टोर नहीं करते हैं, हम एक टपल (की, वैल्यू) लेते हैं और उस कुंजी की गणना करते हैं, जहाँ वैल्यू स्टोर की जानी चाहिए। इसलिए वास्तव में हम हाश तालिका में मूल्यों को संग्रहीत करते हैं
श्री सूर्य झा

जवाबों:


117

"बंद" बनाम "ओपन" का उपयोग यह दर्शाता है कि हम एक निश्चित स्थिति या डेटा संरचना का उपयोग करने के लिए बंद हैं या नहीं (यह एक अत्यंत अस्पष्ट वर्णन है, लेकिन उम्मीद है कि बाकी मदद करता है)।

उदाहरण के लिए, "ओपन एड्रेसिंग" में "ओपन" हमें इंडेक्स (उर्फ एड्रेस) बताता है, जिस पर हैश तालिका में किसी ऑब्जेक्ट को संग्रहीत किया जाएगा, वह पूरी तरह से उसके हैश कोड द्वारा निर्धारित नहीं होता है। इसके बजाय, हैश तालिका में पहले से ही सूचकांक भिन्न हो सकते हैं।

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

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

संक्षेप में, "बंद" हमेशा किसी प्रकार की सख्त गारंटी को संदर्भित करता है, जैसे जब हम गारंटी देते हैं कि वस्तुओं को हमेशा हैश टेबल (बंद हैशिंग) के भीतर संग्रहीत किया जाता है। फिर, "बंद" का विपरीत "खुला" है, इसलिए यदि आपके पास ऐसी गारंटी नहीं है, तो रणनीति को "खुला" माना जाता है।


17
हमें यह जोड़ना चाहिए कि ओपन हैशिंग (सेपरेट चेनिंग) लिंक की गई सूचियों तक सीमित नहीं है, जो कि ओ (एन / 2) व्यवहार के टकराव के हमलों पर कैश फ्रेंडली और डाइनेगरेट नहीं हैं। आप टकराने वाली बाल्टियों के लिए पेड़ों या सॉर्ट किए गए सरणियों का भी उपयोग कर सकते हैं।
रुबर्न

विरोधाभासी जानकारी के कारण डाउनवोट: आपने कहा "ओपन" और "बंद समानार्थक शब्द हैं, फिर अंत में:" "बंद" का विपरीत "ओपन" है
मारवेन ट्रबेल्सी

1
@MarwenTrabelsi मैंने कभी नहीं कहा कि "बंद" और "खुला" समानार्थक शब्द हैं।
केन वेन वेंडरलाइंड

'यह बताता है कि "बंद हैशिंग" और "ओपन एड्रेसिंग" समानार्थक शब्द क्यों हैं।'
मार्वेन ट्रेबेल्सी

1
क्या कोई यह साबित करने वाला स्रोत प्रदान कर सकता है कि यह सही ऐतिहासिक व्युत्पत्ति है?
सैंट्रोपेड्रो

3

आपके पास एक सरणी है जो "हैश टेबल" है।

ओपन हैशिंग में प्रत्येक सेल को टकराव को रोकने वाली सूची की ओर इंगित करता है। हैशिंग ने लिंक्ड सूची में सभी वस्तुओं के लिए एक ही सूचकांक का उत्पादन किया है।

बंद होशिंग में आप हर चीज के लिए केवल एक सरणी का उपयोग करते हैं। आप समान सरणी में टकरावों को संग्रहीत करते हैं। चाल कुछ टकराव से टकराव यूनिट तक कूदने के लिए कुछ स्मार्ट तरीके का उपयोग करना है जो आप चाहते हैं। और यह एक प्रतिलिपि प्रस्तुत करने योग्य / निर्धारक तरीके से करते हैं।


2

नाम खुला संबोधन इस तथ्य संदर्भित करता है कि तत्व का स्थान ("पता") उसके हैश मान से निर्धारित नहीं होता है। (इस विधि को बंद हैशिंग भी कहा जाता है)।

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

यह साधारण ऑपरेटर द्वारा स्पष्ट हैश फ़ंक्शन के साथ C ++ का उपयोग करके अलग-अलग चेनिंग का एक उदाहरण है (स्पष्ट रूप से, एक खराब हैश फ़ंक्शन)

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