টিপল কেন (সেট ([1, "a", "বি", "সি", "জেড", "এফ"])) == টিপল (সেট (["একটি", "বি", "সি"), "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 _ _ _ _ _ _

এবং তারপরে বাকীটি sertোকান:

α 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
? β ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

সুতরাং পুনরাবৃত্তি আদেশগুলি পৃথক কিনা তা সম্পূর্ণরূপে β বিদ্যমান কিনা তার উপর নির্ভর করে।


একটি β এর সুযোগ হ'ল সম্ভাবনা 5 টি বর্ণের যে কোনও একটিতে 1 মডিউল 8 এবং ul হ্যাশ 1 মডিউল 32 হবে।

যেহেতু 1 মডিউল 32-এ হ্যাশ রয়েছে সেগুলিও 1 মডিউল 8 এ হ্যাশ করেছে, আমরা 32 স্লটগুলির মধ্যে একটি সুযোগ সন্ধান করতে চাই, পাঁচটির মধ্যে একটি স্লটে 1:

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

5/32 0,15625, তাই সেখানে অর্ডার দুই সেট বাক্য মধ্যে পার্থক্য হচ্ছে একটা 15,625% chance¹ হয়


মোটেও আশ্চর্যের কিছু নয়, জিরো পাইরেয়াস ঠিক এটিই মাপলেন।


প্রযুক্তিগতভাবে এমনকি এটি সুস্পষ্ট নয়। আমরা রিহ্যাশের কারণে 5 টি হ্যাশের প্রত্যেকটির প্রতি অনন্যভাবে ভান করতে পারি, তবে লিনিয়ার অনুসন্ধানের কারণে এটি সম্ভবত "গুচ্ছ" কাঠামোগুলির বেশি সম্ভাবনা রয়েছে ... তবে আমরা কেবলমাত্র একটি একক স্লট দখল করে আছে কিনা তা খুঁজছি, এটি করা যায় না আসলে আমাদের প্রভাবিত করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.