क्यों टपल (सेट ([1, "ए", "बी", "सी", "जेड", "एफ"]) == टपल (सेट (["ए", "बी", "सी"), "Z", "f", 1])) हैश यादृच्छिककरण के साथ 85% समय सक्षम है?


97

जीरो पीरियस के एक और सवाल के जवाब को देखते हुए , हमारे पास वह है

x = tuple(set([1, "a", "b", "c", "z", "f"]))
y = tuple(set(["a", "b", "c", "z", "f", 1]))
print(x == y)

हैश रैंडमाइजेशन केTrue साथ लगभग 85% समय प्रिंट करता है । 85% क्यों?

जवाबों:


128

मैं इस प्रश्न के किसी भी पाठक को दोनों पढ़ने के लिए मानने जा रहा हूँ:

ध्यान देने वाली पहली बात यह है कि हैश रेंडमाइजेशन इंटरप्रेटर स्टार्ट-अप पर तय किया जाता है।

प्रत्येक अक्षर का हैश दोनों सेटों के लिए समान होगा, इसलिए केवल एक चीज जो मायने रखती है यदि कोई टक्कर है (जहां ऑर्डर प्रभावित होगा)।


उस दूसरे लिंक की कटौती से हम जानते हैं कि इन सेटों के लिए बैकिंग एरे की लंबाई 8 से शुरू होती है:

_ _ _ _ _ _ _ _

पहले मामले में, हम सम्मिलित करते हैं 1:

_ 1 _ _ _ _ _ _

और फिर बाकी डालें:

α 1 ? ? ? ? ? ?

फिर इसे 32 आकार देने के लिए फिर से शुरू किया गया है:

    1 can't collide with α as α is an even hash
  ↓ so 1 is inserted at slot 1 first
? 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

दूसरे मामले में, हम बाकी को सम्मिलित करते हैं:

? β ? ? ? ? ? ?

और फिर 1 डालने की कोशिश करें:

    Try to insert 1 here, but will
  ↓ be rehashed if β exists
? β ? ? ? ? ? ?

और फिर इसे फिर से लगाया जाएगा:

    Try to insert 1 here, but will
    be rehashed if β exists and has
  ↓ not rehashed somewhere else
? β ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

तो क्या पुनरावृति के आदेश भिन्न हैं, केवल इस बात पर निर्भर करता है कि क्या मौजूद है।


Chance का मौका एक मौका है कि 5 अक्षरों में से कोई भी 1 मॉडुलो 8 और हैश से 1 मॉडुलो 32 तक हैश होगा।

चूँकि 1 modulo 32 में हैश करने के लिए कुछ भी 1 modulo 8 के लिए hashes है, हम मौका चाहते हैं कि 32 स्लॉट्स में से एक, पांच में से एक स्लॉट 1 में हो:

5 (number of letters) / 32 (number of slots)

5/32 0.15625 है, इसलिए दोनों सेट निर्माणों के बीच अलग-अलग होने का आदेश 15.625% है


बिल्कुल अजीब नहीं, यह वही है जो जीरो पिरेस ने मापा था।


आमतौर पर यह भी स्पष्ट नहीं है। हम रीशेज़िंग के कारण 5 में से हर एक को विशिष्ट रूप से दिखावा कर सकते हैं, लेकिन रैखिक जांच के कारण यह वास्तव में "गुच्छेदार" संरचनाओं के होने की अधिक संभावना है ... लेकिन क्योंकि हम केवल यह देख रहे हैं कि क्या एक एकल स्लॉट पर कब्जा है, यह नहीं है 'वास्तव में हमें प्रभावित नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.