यहां आम आदमी की शर्तों में एक स्पष्टीकरण दिया गया है।
मान लेते हैं कि आप पुस्तकों के साथ एक पुस्तकालय को भरना चाहते हैं और न केवल उन्हें वहां सामान देना चाहते हैं, बल्कि आप उन्हें आसानी से फिर से खोजने में सक्षम होना चाहते हैं जब आपको उनकी आवश्यकता होती है।
इसलिए, आप यह तय करते हैं कि यदि वह व्यक्ति जो किताब पढ़ना चाहता है, वह पुस्तक का शीर्षक और बूट करने के लिए सटीक शीर्षक जानता है, तो आपको यह सब करना चाहिए। शीर्षक के साथ, लाइब्रेरियन की सहायता से, व्यक्ति को आसानी से और जल्दी से पुस्तक खोजने में सक्षम होना चाहिए।
तो, आप ऐसा कैसे कर सकते हैं? ठीक है, स्पष्ट रूप से आप प्रत्येक पुस्तक को रखने के लिए किसी प्रकार की सूची रख सकते हैं, लेकिन फिर आपको लाइब्रेरी खोजने में भी यही समस्या है, आपको सूची को खोजने की आवश्यकता है। दी गई, सूची छोटी और खोज करने में आसान होगी, लेकिन फिर भी आप लाइब्रेरी के एक छोर से दूसरे (या सूची) में क्रमिक रूप से खोज नहीं करना चाहते हैं।
आप कुछ ऐसा चाहते हैं, जो पुस्तक के शीर्षक के साथ, आपको एक ही बार में सही स्थान दे सके, इसलिए आपको बस सही शेल्फ पर टहलना है, और पुस्तक को चुनना है।
लेकिन यह कैसे किया जा सकता है? जब आप पुस्तकालय भरते हैं तो बहुत सारे पूर्वाभास के साथ, जब आप पुस्तकालय भरते हैं तो बहुत काम करते हैं।
पुस्तकालय को एक छोर से दूसरे छोर तक भरने के लिए शुरू करने के बजाय, आप एक चतुर सा तरीका अपनाते हैं। आप पुस्तक का शीर्षक लेते हैं, इसे एक छोटे कंप्यूटर प्रोग्राम के माध्यम से चलाते हैं, जो उस शेल्फ पर एक शेल्फ नंबर और एक स्लॉट नंबर को बाहर निकालता है। यह वह जगह है जहाँ आप पुस्तक रखते हैं।
इस कार्यक्रम की सुंदरता यह है कि बाद में, जब कोई व्यक्ति पुस्तक को पढ़ने के लिए वापस आता है, तो आप कार्यक्रम के माध्यम से शीर्षक को एक बार फिर से खिलाते हैं, और उसी शेल्फ नंबर और स्लॉट संख्या को वापस प्राप्त करते हैं जो आपको मूल रूप से दिया गया था, और यह है जहां किताब स्थित है।
कार्यक्रम, जैसा कि दूसरों ने पहले ही उल्लेख किया है, एक हैश एल्गोरिथ्म या हैश अभिकलन कहा जाता है और आमतौर पर इसमें खिलाया गया डेटा (इस मामले में पुस्तक का शीर्षक) लेकर काम करता है और इससे एक संख्या की गणना करता है।
सादगी के लिए, मान लें कि यह प्रत्येक अक्षर और प्रतीक को एक संख्या में परिवर्तित करता है और उन सभी को पूरा करता है। वास्तव में, यह उससे कहीं अधिक जटिल है, लेकिन चलो इसे अभी के लिए छोड़ दें।
इस तरह के एक एल्गोरिथ्म की सुंदरता यह है कि यदि आप एक ही इनपुट को बार-बार इसमें फीड करते हैं, तो यह हर बार एक ही नंबर को थूकता रहेगा।
ठीक है, तो यह मूल रूप से एक हैश तालिका कैसे काम करती है।
तकनीकी सामान इस प्रकार है।
सबसे पहले, संख्या का आकार है। आमतौर पर, इस तरह के हैश एल्गोरिथ्म का उत्पादन कुछ बड़ी संख्या की सीमा के अंदर होता है, जो आमतौर पर आपके टेबल में मौजूद स्पेस से बहुत बड़ा होता है। उदाहरण के लिए, मान लें कि हमारे पास पुस्तकालय में ठीक एक मिलियन पुस्तकों के लिए जगह है। हैश गणना का उत्पादन 0 से एक बिलियन की सीमा में हो सकता है जो बहुत अधिक है।
तो हम क्या करे? हम मापांक गणना नामक कुछ का उपयोग करते हैं, जो मूल रूप से कहता है कि यदि आप उस संख्या की गणना करते हैं जो आप चाहते थे (यानी एक अरब संख्या) लेकिन बहुत छोटी सीमा के अंदर रहना चाहते थे, तो हर बार जब आप उस छोटी सीमा की सीमा पर पहुंचते हैं तो आप वापस शुरू हो जाते हैं 0, लेकिन आपको इस बात का ध्यान रखना होगा कि आप कितने बड़े अनुक्रम में आए हैं।
कहें कि हैश एल्गोरिथम का उत्पादन 0 से 20 की सीमा में है और आपको किसी विशेष शीर्षक से मान 17 मिलता है। यदि लाइब्रेरी का आकार केवल 7 पुस्तकें हैं, तो आप 1, 2, 3, 4, 5, 6, और जब आप 7 में मिलते हैं, तो आप 0. पर वापस शुरू करते हैं। चूंकि हमें 17 बार गिनने की आवश्यकता है, हमारे पास 1 है, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, और अंतिम संख्या 3 है।
बेशक मापांक गणना उस तरह से नहीं की जाती है, यह विभाजन और शेष के साथ की जाती है। 17 को 7 से विभाजित करने का शेष 3 है (7 2 बार 17 में 14 पर जाता है और 17 और 14 के बीच का अंतर 3 है)।
इस प्रकार, आपने पुस्तक को स्लॉट संख्या 3 में रखा।
इससे अगली समस्या सामने आती है। टक्कर। चूंकि एल्गोरिथ्म में पुस्तकों को बाहर निकालने का कोई तरीका नहीं है ताकि वे पुस्तकालय को बिल्कुल भर दें (या हैश तालिका यदि आप करेंगे), तो यह हमेशा एक संख्या की गणना करने के लिए समाप्त हो जाएगा जिसका उपयोग पहले किया गया है। लाइब्रेरी के अर्थ में, जब आप शेल्फ में जाते हैं और जिस स्लॉट नंबर से आप किताब डालना चाहते हैं, वहां पहले से ही एक किताब मौजूद होती है।
विभिन्न टकराव से निपटने के तरीके मौजूद हैं, जिसमें तालिका में एक और स्थान ( डबल हैशिंग ) प्राप्त करने के लिए डेटा को अभी तक चलाने के लिए , या बस आपके द्वारा दिए गए स्थान के करीब एक स्थान खोजने के लिए (यानी पिछली पुस्तक के ठीक बगल में स्लॉट है। यह भी रैखिक जांच के रूप में जाना जाता था )। इसका मतलब यह होगा कि जब आप बाद में किताब खोजने की कोशिश करेंगे तो आपके पास कुछ खुदाई होगी, लेकिन यह अभी भी लाइब्रेरी के एक छोर पर शुरू होने से बेहतर है।
अंत में, कुछ बिंदु पर, आप लाइब्रेरी में लाइब्रेरी की अनुमति से अधिक किताबें रख सकते हैं। दूसरे शब्दों में, आपको एक बड़ा पुस्तकालय बनाने की आवश्यकता है। चूंकि लाइब्रेरी में सटीक स्थान की गणना लाइब्रेरी के सटीक और वर्तमान आकार का उपयोग करके की गई थी, इसलिए इसका अनुसरण किया जाता है कि यदि आप लाइब्रेरी का आकार बदल लेते हैं, तो हो सकता है कि आप सभी पुस्तकों के लिए नए स्पॉट खोजने के लिए समाप्त हो जाएं, क्योंकि गणना उनके स्पॉट खोजने के लिए की गई थी। बदल गया है।
मुझे आशा है कि यह स्पष्टीकरण बाल्टी और कार्यों की तुलना में पृथ्वी से थोड़ा अधिक नीचे था :)