हैश टेबल

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

आदर्श रूप से, हैश फ़ंक्शन प्रत्येक कुंजी को एक अद्वितीय बकेट के लिए असाइन करेगा, लेकिन अधिकांश हैश तालिका डिज़ाइन एक अपूर्ण हैश फ़ंक्शन को नियोजित करते हैं, जो हैश हैश टकराव का कारण बन सकता है जहां हैश फ़ंक्शन एक से अधिक कुंजी के लिए समान अनुक्रमणिका उत्पन्न करता है। इस तरह की टक्करों को सामान्यतः किसी तरह से समायोजित किया जाता है।

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

इतिहास
द्रुतान्वेषण का विचार अलग-अलग जगहों पर स्वतंत्र रूप से उभरा। जनवरी 1953 में, उनका पीटर लुहान ने एक आंतरिक आईबीएम मेमोरेंडम लिखा, जिसमें द्रुतान्वेषण के साथ चेनिंग का उपयोग किया गया था। लुहान के पेपर पर बाद में ए डी लिन्ह बिल्डिंग द्वारा विवृत पताभिगमन प्रस्तावित किया गया था। लगभग उसी समय, आईबीएम रिसर्च के जीन अमदहल, ऐलेन एम. मैकग्रा, नथानिएल रोचेस्टर (कंप्यूटर वैज्ञानिक), और आर्थर सैमुअल (कंप्यूटर वैज्ञानिक) ने आईबीएम 701 असेंबली_लैंग्वेज#असेंबलर के लिए द्रुतान्वेषण अनुप्रयुक्त किया। रैखिक जांच के साथ खुले संबोधन का श्रेय अमदहल को दिया जाता है, हालांकि एंड्री एर्शोव का स्वतंत्र रूप से एक ही विचार था। विवृत पताभिगमन शब्द डब्ल्यू वेस्ले पीटरसन द्वारा अपने लेख पर गढ़ा गया था जो बड़ी फाइलों में खोज की समस्या पर चर्चा करता है। चेनिंग के साथ द्रुतान्वेषण पर पहला अकादमिक_प्रकाशन कार्य का श्रेय अर्नोल्ड डूमी को दिया जाता है, जिन्होंने शेष मॉड्यूल को हैश फ़ंक्शन के रूप में उपयोग करने के विचार पर चर्चा की। द्रुतान्वेषण शब्द सबसे पहले रॉबर्ट मॉरिस के एक लेख द्वारा प्रकाशित किया गया था। रैखिक जांच का एक विश्लेषण_ऑफ_कलन विधि मूल रूप से कोनहेम और वीस द्वारा प्रस्तुत किया गया था।

सिंहावलोकन
एक साहचर्य सरणी (कुंजी, मान) जोड़े के एक सेट_ (सार_डेटा_टाइप) को संग्रहीत करता है और अद्वितीय कुंजियों की बाधा के साथ सम्मिलन, विलोपन और लुकअप (खोज) की अनुमति देता है। साहचर्य सरणियों के हैश तालिका कार्यान्वयन में, एक सरणी $$A$$ लंबाई का $$m$$ आंशिक रूप से भरा हुआ है $$n$$ तत्व, जहां $$m \ge n$$. एक कीमत $$x$$ एक अनुक्रमणिका स्थान पर संग्रहीत हो जाता है $$A[h(x)]$$, कहाँ $$h$$ एक हैश फ़ंक्शन है, और $$h(x) < m$$. उचित धारणाओं के तहत, हैश तालिका में स्व-संतुलन बाइनरी सर्च ट्री की तुलना में खोज, डिलीट और इंसर्ट संचालन पर बेहतर समय जटिलता होती है। प्रत्येक कुंजी के लिए संग्रहीत मान को छोड़कर और कुंजी मौजूद है या नहीं, यह ट्रैक करके सामान्यतः हैश तालिका का उपयोग सेट को अनुप्रयुक्त करने के लिए किया जाता है।

लोड फैक्टर
एक भार कारक $$\alpha$$ हैश तालिका का एक महत्वपूर्ण आंकड़ा है, और इसे निम्नानुसार परिभाषित किया गया है: $$\text{load factor}\ (\alpha) = \frac{n}{k},$$ कहाँ
 * $$n$$ हैश तालिका में दर्ज प्रविष्टियों की संख्या है।
 * $$k$$ बकेटो की संख्या है।

लोड फैक्टर के संबंध में हैश तालिका का प्रदर्शन बिगड़ जाता है $$\alpha$$. इसलिए लोड कारक होने पर हैश तालिका का आकार बदल दिया जाता है या फिर से किया जाता है $$\alpha$$ दृष्टिकोण 1. यदि लोड कारक नीचे चला जाता है तो तालिका का आकार भी बदल दिया जाता है $$\alpha_{\max}/4$$. लोड फैक्टर के स्वीकार्य आंकड़े $$\alpha$$ लगभग 0.6 से 0.75 के बीच होना चाहिए।

हैश फ़ंक्शन
एक हैश समारोह $$h$$ ब्रह्मांड को मानचित्र करता है $$U$$ चाबियों का $$h : U \rightarrow \{0, ..., m-1\}$$ प्रत्येक के लिए तालिका के भीतर अनुक्रमणिका या खाँच को व्यवस्थित करने के लिए $$h(x) \in {0, ..., m-1}$$ कहाँ $$x \in S$$ और $$m < n$$. हैश फ़ंक्शंस के पारंपरिक कार्यान्वयन पूर्णांक ब्रह्मांड धारणा पर आधारित हैं कि तालिका के सभी तत्व ब्रह्मांड से उत्पन्न होते हैं $$U = \{0, ..., u - 1\}$$, जहां की बिट लंबाई $$u$$ कंप्यूटर आर्किटेक्चर के वर्ड (कंप्यूटर आर्किटेक्चर) के भीतर ही सीमित है। एक आदर्श हैश फ़ंक्शन $$h$$ एक इंजेक्शन समारोह के रूप में परिभाषित किया गया है जैसे कि प्रत्येक तत्व $$x$$ में $$S$$ में एक अद्वितीय मूल्य के लिए मानचित्र $${0, ..., m-1}$$. यदि सभी कुंजियों को समय से पहले जाना जाता है तो एक संपूर्ण हैश फ़ंक्शन बनाया जा सकता है।

पूर्णांक ब्रह्मांड धारणा
पूर्णांक ब्रह्मांड धारणा में उपयोग की जाने वाली द्रुतान्वेषण की योजनाओं में विभाजन द्वारा द्रुतान्वेषण, गुणन द्वारा द्रुतान्वेषण, सार्वभौमिक द्रुतान्वेषण, गतिशील सही द्रुतान्वेषण और स्टेटिक द्रुतान्वेषण सम्मिलित हैं। हालाँकि, विभाजन द्वारा द्रुतान्वेषण सामान्यतः उपयोग की जाने वाली योजना है।

विभाजन द्वारा द्रुतान्वेषण
विभाजन द्वारा द्रुतान्वेषण में योजना इस प्रकार है: $$h(x)\ =\ M\, \bmod\, n$$ कहाँ $$M$$ का हैश डाइजेस्ट है $$x \in S$$ और $$n$$ तालिका का आकार है।

गुणन द्वारा द्रुतान्वेषण
गुणन द्वारा द्रुतान्वेषण में योजना इस प्रकार है: $$h(k) = \lfloor n \bigl((M A) \bmod 1\bigr) \rfloor$$ कहाँ $$A$$ एक Real_number|वास्तविक-मूल्यवान स्थिरांक है। गुणन द्वारा द्रुतान्वेषण का एक फायदा यह है कि $$m$$ आलोचनात्मक नहीं है। हालांकि कोई मूल्य $$A$$ एक हैश फ़ंक्शन उत्पन्न करता है, डोनाल्ड नुथ सुनहरे अनुपात का उपयोग करने का सुझाव देता है।

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

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

अलग श्रृंखलन
अलग-अलग श्रृंखलन में, प्रक्रिया में प्रत्येक खोज सरणी अनुक्रमणिका के लिए की-मान जोड़ी के साथ एक लिंक की गई सूची बनाना सम्मिलित है। टकराई हुई वस्तुओं को एक ही लिंक की गई सूची के माध्यम से एक साथ जंजीर में बांधा जाता है, जिसे एक अद्वितीय खोज कुंजी के साथ आइटम तक पहुंचने के लिए ट्रेस किया जा सकता है। लिंक की गई सूची के साथ चेनिंग के माध्यम से टकराव का समाधान हैश तालिका के कार्यान्वयन का एक सामान्य तरीका है। होने देना $$T$$ और $$x$$ हैश तालिका और नोड क्रमशः हो, संचालन में निम्नानुसार सम्मिलित है:

जंजीर-हैश-डालें (टी, के)

यदि तत्व तुलनीय है या तो अनुक्रम # विश्लेषण या लेक्सिकोग्राफिक अनुक्रम, और कुल अनुक्रम बनाए रखने के द्वारा सूची में डाला गया है, तो इसका परिणाम असफल खोजों की तेजी से समाप्ति में होता है।

अलग श्रंखला के लिए अन्य डेटा संरचनाएं
यदि कुंजियाँ कुल क्रम में हैं, तो यह इष्टतम बाइनरी सर्च ट्री का उपयोग करने के लिए कुशल हो सकता है | स्व-संगठित अवधारणाएँ जैसे कि स्व-संतुलन बाइनरी सर्च ट्री का उपयोग करना, जिसके माध्यम से वर्स्ट-केस जटिलता को नीचे लाया जा सकता है $$O(\log{n})$$, हालांकि यह अतिरिक्त जटिलताओं का परिचय देता है। डायनेमिक परफेक्ट द्रुतान्वेषण में, गारंटीकृत होने के लिए लुक-अप जटिलता को कम करने के लिए दो-स्तरीय हैश तालिका का उपयोग किया जाता है $$O(1)$$ सबसे खराब स्थिति में। इस तकनीक में, की बाल्टियाँ $$k$$ प्रविष्टियों को परफेक्ट हैश फंक्शन के साथ व्यवस्थित किया जाता है $$k^2$$ लगातार सबसे खराब स्थिति वाले लुकअप समय और प्रविष्टि के लिए कम परिशोधित समय प्रदान करने वाले खाँच। एक अध्ययन भारी भार के तहत मानक लिंक्ड सूची पद्धति की तुलना में सरणी आधारित अलग-अलग श्रंखला को 97% अधिक प्रदर्शन करने वाला दिखाता है। प्रत्येक बकेटो के लिए फ्यूजन ट्री का उपयोग करने जैसी तकनीकों के परिणामस्वरूप उच्च संभावना वाले सभी कार्यों के लिए निरंतर समय मिलता है।

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

विवृत पताभिगमन
विवृत पताभिगमन एक अन्य टक्कर रिज़ॉल्यूशन तकनीक है जिसमें प्रत्येक प्रविष्टि रिकॉर्ड को बकेट ऐरे में ही संग्रहीत किया जाता है, और हैश रिज़ॉल्यूशन जांच के माध्यम से किया जाता है। जब एक नई प्रविष्टि सम्मिलित करनी होती है, तो बकेट की जांच की जाती है, हैशेड-टू खाँच से शुरू होकर कुछ जांच क्रम में आगे बढ़ते हुए, जब तक कि एक खाली खाँच नहीं मिल जाता। किसी प्रविष्टि की खोज करते समय, बकेट को उसी क्रम में स्कैन किया जाता है, जब तक या तो लक्ष्य रिकॉर्ड नहीं मिल जाता है, या एक अप्रयुक्त सरणी खाँच नहीं मिल जाता है, जो एक असफल खोज का संकेत देता है। प्रसिद्ध जांच अनुक्रमों में सम्मिलित हैं: अलग-अलग चेनिंग की तुलना में विवृत पताभिगमन का प्रदर्शन धीमा हो सकता है क्योंकि लोड फैक्टर होने पर जांच अनुक्रम बढ़ जाता है $$\alpha$$ दृष्टिकोण 1. पूरी तरह से भरी हुई तालिका के स्थिति में, यदि लोड कारक 1 तक पहुंच जाता है, तो जांच का परिणाम अनंत लूप में होता है। रैखिक जांच की औसत-स्थिति की जटिलता क्लस्टर विश्लेषण से बचने के लिए तत्वों के संभाव्यता वितरण के लिए हैश फ़ंक्शन की क्षमता पर निरंतर समान वितरण पर निर्भर करती है, क्योंकि क्लस्टर के गठन से खोज समय में वृद्धि होगी।
 * रेखीय जांच, जिसमें जांच के बीच का अंतराल निश्चित होता है (सामान्यतः 1)।
 * द्विघात जांच, जिसमें मूल हैश संगणना द्वारा दिए गए मान में द्विघात बहुपद के क्रमिक आउटपुट को जोड़कर जांच के बीच के अंतराल को बढ़ाया जाता है।
 * डबल द्रुतान्वेषण, जिसमें जांच के बीच अंतराल की गणना द्वितीयक हैश फ़ंक्शन द्वारा की जाती है।

कैशिंग और संदर्भ का इलाका
चूंकि खाँच लगातार स्थानों में स्थित हैं, रैखिक जांच से सीपीयू कैश का बेहतर उपयोग हो सकता है क्योंकि संदर्भों की स्थानीयता कम स्मृति विलंबता के कारण होती है।

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

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

हॉपस्कॉच द्रुतान्वेषण
हॉपस्कॉच द्रुतान्वेषण एक विवृत पताभिगमन आधारित कलन विधि है जो कोयल द्रुतान्वेषण, रैखिक जांच और चेनिंग के तत्वों को बकेटो के एक पड़ोस की धारणा के माध्यम से जोड़ती है - किसी भी कब्जे वाली बकेट के आसपास की बाल्टियाँ, जिसे एक आभासी बकेट भी कहा जाता है।  कलन विधि को बेहतर प्रदर्शन देने के लिए डिज़ाइन किया गया है जब हैश तालिका का लोड फैक्टर 90% से अधिक हो जाता है; यह समवर्ती अभिकलन में उच्च थ्रूपुट भी प्रदान करता है, इस प्रकार आकार बदलने योग्य समवर्ती हैश तालिका को अनुप्रयुक्त करने के लिए उपयुक्त है। हॉप्सकॉच द्रुतान्वेषण की पड़ोस विशेषता एक संपत्ति की गारंटी देती है कि, पड़ोस के भीतर किसी भी बकेट से वांछित वस्तु को खोजने की लागत बकेट में ही इसे खोजने की लागत के बहुत करीब है; एल्गोरिथम अपने पड़ोस में एक वस्तु बनने का प्रयास करता है - अन्य वस्तुओं को विस्थापित करने में सम्मिलित संभावित लागत के साथ। हैश तालिका के भीतर प्रत्येक बकेट में एक अतिरिक्त हॉप-सूचना सम्मिलित है - यूक्लिडियन दूरी को इंगित करने के लिए एच-बिट बिट सरणी # आइटम का एक आयाम जो मूल रूप से एच -1 प्रविष्टियों के भीतर वर्तमान वर्चुअल बकेट में हैश किया गया था। होने देना $$k$$ और $$Bk$$ सम्मिलित की जाने वाली कुंजी और बकेट जिसमें कुंजी को क्रमशः हैश किया जाता है; सम्मिलन प्रक्रिया में कई स्थिति सम्मिलित हैं जैसे कि कलन विधि की पड़ोस संपत्ति की प्रतिज्ञा की जाती है: यदि $$Bk$$ खाली है, तत्व डाला गया है, और बिटमानचित्र का सबसे बाईं ओर बिटवाइज़ संचालन 1 है; यदि खाली नहीं है, तो तालिका में एक खाली खाँच खोजने के लिए रैखिक जांच का उपयोग किया जाता है, बकेट का बिटमानचित्र सम्मिलन के बाद अद्यतन हो जाता है; यदि खाली खाँच पड़ोस की सीमा के भीतर नहीं है, अर्थात H-1, बाद में प्रत्येक बकेट की स्वैप और हॉप-इन्फो बिट सरणी में हेरफेर उसके पड़ोस के इनवेरिएंट (गणित) के अनुसार किया जाता है।

रॉबिन हुड द्रुतान्वेषण
रॉबिन हुड द्रुतान्वेषण एक विवृत पताभिगमन आधारित कोलिज़न रेज़ोल्यूशन एल्गोरिथम है; टक्करों को उस तत्व के विस्थापन के पक्ष में करके हल किया जाता है जो सबसे दूर है—या सबसे लंबी जांच अनुक्रम लंबाई (PSL)—उसके गृह स्थान से अर्थात वह बकेट जिसमें आइटम को हैश किया गया था। हालांकि रॉबिन हुड द्रुतान्वेषण कम्प्यूटेशनल जटिलता सिद्धांत को नहीं बदलता है, लेकिन यह बकेटो पर वस्तुओं के संभाव्यता वितरण के विचरण को महत्वपूर्ण रूप से प्रभावित करता है,  अर्थात हैश तालिका में क्लस्टर एनालिसिस फॉर्मेशन से निपटना। रॉबिन हुड द्रुतान्वेषण का उपयोग करने वाली हैश तालिका के भीतर प्रत्येक नोड को एक अतिरिक्त पीएसएल मान संग्रहीत करने के लिए संवर्धित किया जाना चाहिए। होने देना $$x$$ डालने की कुंजी हो, $$x.psl$$ की (वृद्धिशील) PSL लंबाई हो $$x$$, $$T$$ हैश तालिका हो और $$j$$ सूचकांक हो, सम्मिलन प्रक्रिया इस प्रकार है:
 * यदि $$x.psl\ \le\ T[j].psl$$: बाहरी जांच का प्रयास किए बिना पुनरावृति अगली बकेट में चली जाती है।
 * यदि $$x.psl\ >\ T[j].psl$$: आइटम डालें $$x$$ बकेट में $$j$$; बदलना $$x$$ साथ $$T[j]$$-जाने भी दो $$x'$$; से जांच जारी रखें $$j+1$$सेंट बकेट डालने के लिए $$x'$$; प्रक्रिया को तब तक दोहराएं जब तक कि प्रत्येक तत्व सम्मिलित न हो जाए।

गतिशील आकार बदलना
बार-बार सम्मिलन के कारण हैश तालिका में प्रविष्टियों की संख्या बढ़ जाती है, जिसके परिणामस्वरूप लोड कारक बढ़ जाता है; परिशोधित बनाए रखने के लिए $$O(1)$$ लुकअप और सम्मिलन संचालन का प्रदर्शन, एक हैश तालिका को गतिशील रूप से आकार दिया जाता है और तालिकाओं की वस्तुओं को नई हैश तालिका की बकेटो में फिर से डाला जाता है, चूंकि मॉड्यूल संचालन के कारण अलग-अलग हैश मान में अलग-अलग तालिका आकार के परिणामस्वरूप आइटम कॉपी नहीं किए जा सकते हैं। यदि कुछ तत्वों को हटाने के बाद हैश तालिका बहुत खाली हो जाती है, तो अत्यधिक स्मृति पदचिह्न से बचने के लिए आकार बदला जा सकता है।

सभी प्रविष्टियों को स्थानांतरित करके आकार बदलना
सामान्यतः, मूल हैश तालिका के आकार के दोगुने आकार वाली एक नई हैश तालिका को गतिशील मेमोरी आवंटन निजी रूप से प्राप्त होता है और मूल हैश तालिका में प्रत्येक आइटम सम्मिलन संचालन के बाद आइटमों के हैश मानों की गणना करके नए आवंटित में ले जाया जाता है। इसकी सरलता के बावजूद रीद्रुतान्वेषण कम्प्यूटेशनल रूप से महंगा है।

ऑल-एट-वन्स रीद्रुतान्वेषण
के विकल्प

कुछ हैश तालिका कार्यान्वयन, विशेष रूप से वास्तविक समय प्रणाली में, हैश तालिका को एक साथ बड़ा करने की कीमत का भुगतान नहीं कर सकते हैं, क्योंकि यह समय-महत्वपूर्ण संचालन को बाधित कर सकता है। यदि कोई डायनेमिक रीसाइज़िंग से बच नहीं सकता है, तो स्टोरेज ब्लिप से बचने के लिए धीरे-धीरे रीसाइज़िंग करना एक समाधान है - सामान्यतः नए तालिका के आकार के 50% पर - रीद्रुतान्वेषण के पर्यंत और फ्रैग्मेंटेशन (अभिकलन) से बचने के लिए जो बड़े पेज के डीलोकेशन के कारण मार्क-कॉम्पैक्ट कलन विधि को ट्रिगर करता है। (कंप्यूटर मेमोरी) पुराने हैश तालिका के कारण होता है। ऐसे स्थिति में, पुराने हैश तालिका के लिए आवंटित पूर्व मेमोरी खंड को विस्तारित करके रीद्रुतान्वेषण संचालन वृद्धिशील रूप से किया जाता है, जैसे कि हैश तालिका की बकेट अपरिवर्तित रहती है। परिशोधित पुनर्वसन के लिए एक सामान्य दृष्टिकोण में दो हैश कार्यों को बनाए रखना सम्मिलित है $$h_\text{old}$$ और $$h_\text{new}$$. नए हैश फंक्शन के अनुसार बकेट के आइटम्स को फिर से हैश करने की प्रक्रिया को क्लीनिंग कहा जाता है, जिसे कमांड पैटर्न के माध्यम से क्रियान्वित किया जाता है जैसे कि संचालन को एनकैप्सुलेट करके $$\mathrm{Add}(\mathrm{key})$$, $$\mathrm{Get}(\mathrm{key})$$ और $$\mathrm{Delete}(\mathrm{key})$$ किसी के जरिए $$\mathrm{Lookup}(\mathrm{key}, \text{command})$$ आवरण समारोह जैसे कि बकेट में प्रत्येक तत्व को फिर से मिलाया जाता है और इसकी प्रक्रिया में निम्नानुसार सम्मिलित होता है:
 * साफ़ $$\mathrm{Table}[h_\text{old}(\mathrm{key})]$$ बकेट।
 * साफ़ $$\mathrm{Table}[h_\text{new}(\mathrm{key})]$$ बकेट।
 * कमांड निष्पादित हो जाती है।

रेखीय द्रुतान्वेषण
रैखिक द्रुतान्वेषण हैश तालिका का एक कार्यान्वयन है जो एक समय में एक बकेट तालिका के गतिशील विकास या सिकुड़न को सक्षम करता है।

प्रदर्शन
एक हैश तालिका का प्रदर्शन कम-विसंगति अनुक्रम उत्पन्न करने में हैश फ़ंक्शन की क्षमता पर निर्भर है। अर्ध-यादृच्छिक संख्या ($$\sigma$$) हैश तालिका में प्रविष्टियों के लिए जहां $$K$$, $$n$$ और $$h(x)$$ कुंजी, बकेटो की संख्या और हैश फ़ंक्शन को इस तरह दर्शाता है $$\sigma\ =\ h(K)\ \%\ n$$. यदि हैश फ़ंक्शन समान उत्पन्न करता है $$\sigma$$ विशिष्ट कुंजियों के लिए ($$K_1 \ne K_2,\ h(K_1)\ =\ h(K_2)$$), इसके परिणामस्वरूप टकराव होता है, जिसे विभिन्न तरीकों से निपटाया जाता है। निरंतर समय जटिलता ($$O(1)$$) हैश तालिका में संचालन का अनुमान इस शर्त पर लगाया जाता है कि हैश फ़ंक्शन टकराने वाले सूचकांक उत्पन्न नहीं करता है; इस प्रकार, हैश तालिका का प्रदर्शन आनुपातिकता (गणित) है#चुने गए हैश फ़ंक्शन की सूचकांकों को सांख्यिकीय फैलाव की क्षमता के लिए प्रत्यक्ष आनुपातिकता। हालांकि, ऐसे हैश फ़ंक्शन का निर्माण एनपी-कठोरता है, ऐसा होने पर, कार्यान्वयन उच्च प्रदर्शन प्राप्त करने में केस-विशिष्ट #Collision रिज़ॉल्यूशन के उपयोग पर निर्भर करता है।

साहचर्य सरणियाँ
हैश तालिका का उपयोग सामान्यतः कई प्रकार की इन-मेमोरी तालिका को अनुप्रयुक्त करने के लिए किया जाता है। उनका उपयोग साहचर्य सरणियों को अनुप्रयुक्त करने के लिए किया जाता है।

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

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

समूह
सेट डेटा संरचना के कार्यान्वयन में हैश तालिका का उपयोग किया जा सकता है, जो बिना किसी विशेष क्रम के अद्वितीय मानों को संग्रहीत कर सकता है; सेट का उपयोग सामान्यतः तत्व पुनर्प्राप्ति के बजाय संग्रह में मूल्य की सदस्यता का परीक्षण करने के लिए किया जाता है।

ट्रांसपोजिशन तालिका
एक जटिल हैश तालिका के लिए एक स्थानान्तरण तालिका जो खोजे गए प्रत्येक अनुभाग के बारे में जानकारी संग्रहीत करती है।

कार्यान्वयन
कई प्रोग्रामिंग लैंग्वेज हैश तालिका की कार्यक्षमता प्रदान करती हैं, या तो अंतर्निहित साहचर्य सरणियों के रूप में या मानक लाइब्रेरी मॉड्यूल के रूप में।

जावास्क्रिप्ट में, 7 आदिम डेटा प्रकारों को छोड़कर प्रत्येक मान को एक ऑब्जेक्ट कहा जाता है, जो हैश मानचित्र के लिए कुंजी के रूप में पूर्णांक, स्ट्रिंग्स, या गारंटीकृत-अद्वितीय प्रतीक आदिम मानों का उपयोग करता है। ईसीएमएस्क्रिप्ट 6 भी जोड़ा गया  और   डेटा संरचनाएं। सी ++ 11 सम्मिलित हैं  Template_(C%2B%2B). Go_(programming_language) का बिल्ट-इन  एक हैश तालिका को प्रिमिटिव_डेटा_टाइप के रूप में अनुप्रयुक्त करता है। जावा (प्रोग्रामिंग भाषा) प्रोग्रामिंग लैंग्वेज में सम्मिलित है,  ,  , और   जावा संग्रह में जेनरिक। पायथन (प्रोग्रामिंग लैंग्वेज) का बिल्ट-इन  एक हैश तालिका को प्रिमिटिव_डेटा_टाइप के रूप में अनुप्रयुक्त करता है। रूबी (प्रोग्रामिंग भाषा) की बिल्ट-इन  रूबी 2.4 के बाद से विवृत पताभिगमन मॉडल का उपयोग करता है। जंग (प्रोग्रामिंग भाषा) प्रोग्रामिंग लैंग्वेज में सम्मिलित है,   रस्ट स्टैंडर्ड लाइब्रेरी के हिस्से के रूप में।

यह भी देखें

 * राबिन-कार्प स्ट्रिंग सर्च एल्गोरिदम
 * स्थिर हैशिंग
 * लगातार हैशिंग
 * विस्तार योग्य हैशिंग
 * आलसी विलोपन
 * पियर्सन हैशिंग
 * फोटो डीएनए
 * डेटा संरचना खोजें
 * समवर्ती हैश तालिका
 * ब्लूम फिल्टर
 * हैश ऐरे मैप्ड ट्राई
 * वितरित हैश तालिका

बाहरी संबंध

 * NIST entry on hash tables
 * Open Data Structures – Chapter 5 – Hash Tables, Pat Morin
 * MIT's Introduction to Algorithms: Hashing 1 MIT OCW lecture Video
 * MIT's Introduction to Algorithms: Hashing 2 MIT OCW lecture Video