لماذا يأخذ دلو الهاشت عدد رئيسي؟
لديك وظيفة التجزئة
h (c) = c ٪ n ؛
عندما تأخذ N رقم مركب ، فإن أبسط مثال هو أن يأخذ 2^n ، على سبيل المثال ، خذ 2^3 = 8 ، في هذا الوقت
H (11100 (ثنائي)) = H (28) = 4
H (10100 (ثنائي)) = H (20) = 4
في هذا الوقت ، فإن الجزء الرابع من الثنائي (من اليمين إلى اليسار) من C "يفشل" ، مما يعني أنه بغض النظر عن القيمة التي يتم أخذها في الجزء الرابع من C ، فإنه سيؤدي إلى نفس قيمة H (C). في هذا الوقت ، لا يشارك الجزء الرابع من C في تشغيل H (C) على الإطلاق ، لذلك لا يمكن أن يعكس H (C) خصائص C ، مما يزيد من فرصة الصراع.
عند أخذ أرقام مركبة أخرى ، سيتم "فشل" بعض أجزاء C إلى درجات متفاوتة ، مما يؤدي إلى تعارض في بعض التطبيقات الشائعة.
ومع ذلك ، يمكن لأخذ أعداد رئيسية أن يضمن بشكل أساسي أن كل جزء من C يشارك في تشغيل H (C) ، وبالتالي تقليل فرصة الصراع في التطبيقات المشتركة. .
(الرأي الشخصي: في بعض الأحيان ، فإن كفاءة عدم أخذ الأرقام الأولية ليست سيئة للغاية ... لكنها بلا شك أكثر أمانًا لأخذ أعداد رئيسية ...)
ما سبق هو فهمي
للإضافة إلى ذلك ، هذا يعني أنه في التطبيقات المشتركة ، غالبًا ما تكون بعض البيانات متشابهة. من الأفضل استخدام الأرقام الأولية في هذا الوقت. على سبيل المثال ، تكون البيانات المراد تخزينها في حالة مضغوطة ، مثل تخزين جدول يصف حالة البحث الحالية. في هذا الوقت ، يكون احتمال التجزئة بدون أعداد أولية مرتفعًا نسبيًا.
إذا كان عدد صحيح موزعة عشوائيًا ، فسيكون معامل التجزئة هو نفسه طالما أن الأمر قد اتخذ كبيرًا بما يكفي ، ولكن من الواضح أن هذا أمر عملي.
ما قلته هو موقف خاص ، لأنه عندما يتم تحديد عدد أولي صغير نسبيًا ، عند تحديد الرقم الرئيسي الكبير N ، يمكن أن يفشل فقط في جزء معين من نظام الرقم N. بالاقتران مع خصائص نظام الكمبيوتر ، غالبًا ما يكون تمثيل الرقم N غير حاسم ، في حين أن نظام الرقم 2^يستخدم بشكل شائع أكثر أهمية ، لذلك يمكن تجنب النزاعات.
في الواقع ، لقد استخدمت بعض الأرقام الكبيرة لاختبارها لتخزين مصفوفة مجاورة مضغوطة في ثنائية. عندما يكون المعامل كبيرًا بدرجة كافية ، يمكن أن يكون للرقم المركب تأثيرًا وثيقًا للغاية على العدد الرئيسي ، ولكن في بعض الأرقام المركبة (عدة عشر) ، سيتم تقليل الكفاءة بشدة ، لذلك تكون الأرقام الأولية آمنة نسبيًا.
قد تقوم أيضًا بإجراء تجاربك الخاصة ، ولا تختار أعداد صحيحة عشوائية ، ولكن ضع في اعتبارك بعض التطبيقات الشائعة ، وتستخدم الأرقام الأولية والأرقام المركبة للاختبار ، وذلك بشكل أساسي ، فحص متوسط عامل التحميل ، وقد يكون الاستنتاج الذي تحصل عليه هو نفسه مثل الأرقام المركبة: تكون الأرقام المركبة جيدة أيضًا في معظم الوقت ، لكن التأثير ضعيف بشكل مدهش في بعض الأرقام المركبة ، ويحظى جميع الأرقام الرئيسية تقريبًا بالنتائج.
أنا شخصياً أعتقد أنه بمعنى أكثر عمومية ، إذا لم تأخذ أعدادًا أولية ، فسيكون هناك بعض الخطر. يحدث الخطر عندما يُفترض أن يتم اختيار رقم غير prime M = x*y ، وإذا كان مفتاح التجزئة مرتبطًا بهذا المقسوم X ، فسيكون ذلك بائسة. في أسوأ الحالات ، يفترض الجميع أنها مضاعفات X ، ثم يمكنك أن تتخيل أن نتيجة التجزئة هي: 1 ~ Y ، وليس 1 ~ M. ومع ذلك ، إذا تم اختيار حجم الدلو كرقم رئيسي ، فلن تكون هناك مشكلة.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!