हैश टेबल

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

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

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

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

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

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

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

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

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

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

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

सी ++ 11 में मनमाने प्रकार की कुंजियों और मानों को संग्रहीत करने के लिए अपनी मानक लाइब्रेरी में  सम्मिलित हैं।

गो का अंतर्निर्मित  एक प्रकार के रूप में हैश तालिका अनुप्रयुक्त करता है।

जावा प्रोग्रामिंग भाषा में,  ,  , और   जेनेरिक संग्रह सम्मिलित है।

पायथन का अंतर्निर्मित  एक हैश तालिका को एक प्रकार के रूप में अनुप्रयुक्त करता है।

रूबी का अंतर्निर्मित  रूबी 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