हैश टेबल

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

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

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

इतिहास
हैशिंग का विचार अलग-अलग जगहों पर स्वतंत्र रूप से उभरा। जनवरी 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