हैश ऐरे मैप्ड ट्रिए

हैश ऐरे मैप्ड ट्रिए (एचएएमटी) एक अस्सोसिएटिवे ऐरे का कार्यान्वयन है जो हैश तालिका और हैश ऐरे मैप्ड ट्रिए की विशेषताओं को जोड़ता है। यह हैश ट्रिए (लगातार डेटा संरचना) की अधिक सामान्य धारणा का एक परिष्कृत संस्करण है।

संचालन
एचएएमटी एक ऐरे मैप्ड ट्रिए है जहां कीज़ का समान वितरण और निरंतर कुंजी लंबाई सुनिश्चित करने के लिए कीज़ को पहले हैश किया जाता है।

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

एचएएमटी के लाभ
हैश ऐरे मैप्ड ट्राई मेमोरी का अधिक मितव्ययितापूर्वक उपयोग करते हुए लगभग हैश सारिणी जैसी गति प्राप्त करता है। साथ ही, हैश तालिका का समय-समय पर आकार बदलना पड़ सकता है, जो एक महंगा संचालन है, जबकि एचएएमटी गतिशील रूप से बढ़ते हैं। सामान्यतः, एचएएमटी प्रदर्शन में कुछ एन स्लॉट के साथ एक बड़ी क्रम सारिणी द्वारा सुधार किया जाता है; कुछ एचएएमटी प्रकार जड़ को प्रदर्शन पर नगण्य प्रभाव के साथ धीरे-धीरे बढ़ने देते हैं।

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

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

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

यह भी देखें

 * जूडी ऐरे
 * मूलांक वृक्ष