ما هو Hashtable؟

في علوم الكمبيوتر ، يعد الهاشتابل بنية بيانات لتخزين البيانات التي تتكون من قائمة من القيم ، تسمى المفاتيح ، والتي يتم إقرانها بقائمة القيم المقابلة ، تسمى المصفوفة. على سبيل المثال ، قد يتم إقران اسم النشاط التجاري بعنوانه. عادةً ما يكون لكل قيمة في المصفوفة رقم موضع يُشار إليه باسم التجزئة. عادةً ما تكون وظيفة التجزئة عبارة عن مجموعة من التعليمات أو خوارزمية تقوم بتعيين كل قيمة مفتاح إلى تجزئة – على سبيل المثال ربط اسم الشركة بعنوانها ورقم هاتفها وفئة عملها. الغرض من وظيفة التجزئة هو تعيين كل مفتاح إلى قيمة فريدة مقابلة في المصفوفة ؛ يشار إلى هذا عادة باسم التجزئة. يجب تنسيق وظائف التجزئة بشكل صحيح حتى يعمل جدول التجزئة بشكل صحيح.

يعتمد أداء علامة التجزئة على مجموعة من البيانات على كفاءة وظيفة التجزئة الخاصة بها. عادةً ما توفر وظيفة التجزئة الجيدة بحثًا موحدًا عن المفاتيح وتوزيعًا متساويًا للتعيينات في المصفوفة المقابلة. يحدث تضارب التجزئة عندما يتم تعيين مفتاحين لنفس القيمة المقابلة. عند حدوث تضارب تجزئة ، يتم عادةً تنفيذ دالة التجزئة مرة أخرى حتى يتم العثور على قيمة مقابلة فريدة ؛ ينتج عن هذا عادةً أوقات تجزئة أطول. على الرغم من أن عدد المفاتيح في جدول التجزئة يكون ثابتًا عادةً ، فقد يكون هناك أحيانًا مفاتيح مكررة. ومع ذلك ، فإن hashtable المصمم جيدًا لديه وظائف تجزئة فعالة تقوم بتعيين كل مفتاح إلى قيمة مقابلة فريدة في المصفوفة.

في بعض الأحيان ، قد تؤدي وظائف التجزئة غير الفعالة في علامة التجزئة إلى إنتاج مجموعة من التعيينات. إذا أنشأت دالة التجزئة مجموعة من التعيينات للمفاتيح الموجودة ، فقد يؤدي ذلك إلى زيادة مقدار الوقت الذي يستغرقه البحث عن القيم المقابلة. يمكن أن يؤدي ذلك إلى إبطاء تجزئة المفاتيح المستقبلية نظرًا لأن معظم وظائف التجزئة تبحث عمومًا عن الموضع التالي المتاح في المصفوفة. إذا تم بالفعل تعيين مجموعة كبيرة من القيم ، فسيستغرق الأمر وقتًا أطول للبحث عن قيمة غير معينة لمفتاح جديد.

عامل الحمولة هو مفهوم آخر يتعلق بكفاءة وظيفة التجزئة ؛ عامل التحميل هو مقدار التجزئة الموجودة بالفعل فيما يتعلق بالحجم الكلي للمصفوفة المقابلة في علامة التجزئة. يتم تعريفه عادةً بقسمة عدد المفاتيح المعينة بالفعل على حجم المصفوفة المقابلة. مع زيادة عامل التحميل ، ستظل وظيفة التجزئة الجيدة عادةً تحافظ على عدد ثابت من التصادمات والعناقيد حتى نقطة معينة. في كثير من الأحيان يمكن استخدام هذه العتبة لتحديد مدى كفاءة وظيفة التجزئة مع عدد معين من المفاتيح ومتى قد تكون هناك حاجة إلى وظيفة تجزئة جديدة.

سعى العديد من الباحثين في علوم الكمبيوتر إلى إنتاج دالة تجزئة مثالية – وظيفة لا ينتج عنها تصادمات أو مجموعات نظرًا لزيادة عامل التحميل. من الناحية النظرية ، فإن مفتاح إنتاج علامة تصنيف مثالية هو إنتاج دالة تجزئة مثالية. بشكل عام ، يعتقد الباحثون أن دالة التجزئة المثالية يجب أن يكون لها أداء ثابت – عدد الاصطدامات والعناقيد – مع عامل تحميل متزايد. في أسوأ السيناريوهات ، ستظل وظيفة التجزئة المثالية تسمح بتجزئة ثابتة دون الوصول إلى حد.