परफेक्ट हैशिंग की परिभाषा
परफेक्ट हैशिंग को हैशिंग के एक मॉडल के रूप में परिभाषित किया गया है जिसमें n तत्वों के किसी भी सेट को समान आकार की हैश तालिका में संग्रहीत किया जा सकता है और निरंतर समय में लुकअप किया जा सकता है। इसका विशेष रूप से आविष्कार और चर्चा फ़्रेडमैन, कोमलोस और ज़ेमेरेडी (1984) द्वारा की गई थी और इसलिए इसे "FKS हैशिंग" के रूप में उपनाम दिया गया है।
स्टेटिक हैशिंग की परिभाषा
स्टेटिक हैशिंग हैशिंग समस्या के दूसरे रूप को परिभाषित करता है जो उपयोगकर्ताओं को अंतिम डिक्शनरी सेट पर लुकअप को पूरा करने की अनुमति देता है (जिसका अर्थ है कि डिक्शनरी में सभी ऑब्जेक्ट अंतिम हैं और साथ ही बदलते नहीं हैं)।
आवेदन
चूंकि स्थिर हैशिंग के लिए आवश्यक है कि डेटाबेस, उसकी वस्तुएं और संदर्भ समान रहें, इसके अनुप्रयोग सीमित हैं। डेटाबेस जिनमें ऐसी जानकारी होती है जो दुर्लभ परिवर्तन का अनुभव करती हैं, वे भी पात्र हैं क्योंकि इसके लिए केवल दुर्लभ अवसर पर पूरे डेटाबेस के पूर्ण पुन:प्रयास की आवश्यकता होगी। इस हैशिंग योजना के विभिन्न उदाहरणों में शब्दों के सेट और विशिष्ट भाषाओं की परिभाषाएं, संगठन के कर्मियों के लिए महत्वपूर्ण डेटा के सेट आदि शामिल हैं।
कार्यान्वयन
स्थिर मामले में, हमें कुल पी प्रविष्टियों के साथ एक सेट प्रदान किया जाता है, प्रत्येक एक अद्वितीय कुंजी से जुड़ा होता है, जो समय से पहले होता है। फ़्रेडमैन, कोमलोस और ज़ेमेरेडी आकार s =2(p-1) बकेट के साथ एक प्रथम-स्तरीय हैश तालिका का चयन करते हैं। निर्माण करने के लिए, शीर्ष-स्तरीय हैशिंग फ़ंक्शन द्वारा p प्रविष्टियों को q बकेट में विभाजित किया जाता है, जहां q =2(p-1)। फिर r प्रविष्टियों वाली प्रत्येक बकेट के लिए, r2 स्लॉट के साथ एक दूसरे स्तर की तालिका आवंटित की जाती है, और इसके हैश फ़ंक्शन को एक सार्वभौमिक हैश फ़ंक्शन सेट से यादृच्छिक रूप से चुना जाता है ताकि यह टकराव-मुक्त हो जाए और हैश तालिका के साथ संग्रहीत हो। यदि बेतरतीब ढंग से चुना गया हैश फ़ंक्शन टकराव के साथ एक तालिका बनाता है, तो एक नया हैश फ़ंक्शन बेतरतीब ढंग से तब तक चुना जाता है जब तक कि टकराव-मुक्त तालिका की गारंटी नहीं दी जा सकती। अंत में, टकराव मुक्त हैश के साथ, r प्रविष्टियां दूसरे स्तर की तालिका में हैश की जाती हैं।