एसओ पर एक और सवाल ने कुछ भाषाओं में सुविधाओं को एक टेबल में तेजी से देखने के लिए हैश तारों में लाया। इसके दो उदाहरण हैं <> .NET में और {} पायथन में स्टोरेज संरचना। अन्य भाषाएं निश्चित रूप से इस तरह के तंत्र का समर्थन करती हैं। सी ++ का नक्शा है, एलआईएसपी के बराबर है, जैसा कि अधिकांश आधुनिक भाषाएं हैं।तारों के लिए लगातार समय हैश?
यह सवाल के जवाब में तर्क दिया गया था कि तारों पर हैश एल्गोरिदम एक एसओ सदस्य के साथ निरंतर समय सारिणी में आयोजित किया जा सकता है, जिसका प्रोग्रामिंग में 25 साल का अनुभव है और दावा किया जाता है कि कुछ भी निरंतर समय में धोया जा सकता है। मेरी व्यक्तिगत विवाद यह है कि यह सत्य नहीं है, जब तक कि आपका विशेष अनुप्रयोग स्ट्रिंग लंबाई पर सीमा न रखता हो। इसका मतलब है कि कुछ स्थिर के एक स्ट्रिंग की अधिकतम लंबाई निर्धारित करेगा।
मैं राबिन-कार्प एल्गोरिदम से परिचित हूं जो अपने ऑपरेशन के लिए हैशिंग फ़ंक्शन का उपयोग करता है, लेकिन यह एल्गोरिदम उपयोग करने के लिए एक विशिष्ट हैश फ़ंक्शन को निर्देशित नहीं करता है, और लेखक द्वारा सुझाए गए लेख ओ (एम) हैं, जहां एम है हैश स्ट्रिंग की लंबाई।
मुझे कुछ अन्य पेज जैसे इस (http://www.cse.yorku.ca/~oz/hash.html) दिखाई देते हैं जो कुछ हैश एल्गोरिदम प्रदर्शित करते हैं, लेकिन ऐसा लगता है कि उनमें से प्रत्येक स्ट्रिंग की पूरी लंबाई पर इसके मूल्य पर पहुंचने के लिए पुनरावृत्त करता है।
विषय पर तुलनात्मक रूप से सीमित पढ़ने से, ऐसा लगता है कि स्ट्रिंग प्रकारों के लिए अधिकांश सहयोगी सरणी वास्तव में एक हैशिंग फ़ंक्शन का उपयोग करके बनाई जाती हैं जो हुड के नीचे किसी प्रकार के पेड़ के साथ संचालित होती है। यह एक एवीएल पेड़ या लाल/काला पेड़ हो सकता है जो कुंजी/मूल्य जोड़ी में मान तत्व के स्थान को इंगित करता है।
यहां तक कि इस पेड़ की संरचना के साथ, अगर हम थेटा (लॉग (एन)) के क्रम में रहना चाहते हैं, तो पेड़ में तत्वों की संख्या होने के साथ, हमें निरंतर समय हैश एल्गोरिदम होना चाहिए। अन्यथा, हमारे पास स्ट्रिंग पर पुनरावृत्ति का additive जुर्माना है। भले ही थेटा (एम) कई तारों वाले इंडेक्स के लिए थेटा (लॉग (एन)) द्वारा ग्रहण किया जाएगा, फिर भी हम इसे अनदेखा नहीं कर सकते हैं अगर हम ऐसे डोमेन में हैं कि जिन ग्रंथों के खिलाफ हम खोज करते हैं वे बहुत बड़े होंगे।
मुझे पता है कि प्रत्यय पेड़/सरणी और अहो-कोरासिक खोज में थैटा (एम) को स्मृति में अधिक खर्च के लिए ला सकता है, लेकिन मैं विशेष रूप से पूछ रहा हूं कि स्थिर समय हैश विधि स्ट्रिंग के लिए मौजूद है अन्य एसओ सदस्य द्वारा दावा किया गया मनमाने ढंग से लंबाई।
धन्यवाद।
है मुझे http://xkcd.com/221/ उस के साथ समस्या यह है कि –
बहुत समान तार एक होता है की याद दिलाता है समान हैश होने की उच्च संभावना। आम तौर पर, एक बिट परिवर्तन में हैश में सभी बिट्स को बदलना चाहिए, ताकि दो तारों की टकराव की संभावना उनकी समानता से स्वतंत्र हो। - उसने कहा, अगर आपको करीबी तारों को टकराव करने की चिंता करने की आवश्यकता नहीं है तो आपका विचार काम करेगा। –