Perfect hash functions give unique "names" to arbitrary keys requiring only a few bits per key. This is an essential building block in applications like static hash tables, databases, or bioinformatics. This paper introduces the PHast approach that combines the fastest available queries, very fast construction, and good space consumption (below 2 bits per key). PHast improves bucket-placement which first hashes each key k to a bucket, and then looks for the bucket seed s such that a placement function maps pairs (s,k) in a collision-free way. PHast can use small-range hash functions with linear mapping, fixed-width encoding of seeds, and parallel construction. This is achieved using small overlapping slices of allowed values and bumping to handle unsuccessful seed assignment. A variant we called PHast+ uses additive placement, which enables bit-parallel seed searching, speeding up the construction by an order of magnitude.
معرّف الورقة : 2504.17918العنوان : PHast -- تجزئة مثالية بسرعة فائقةالمؤلفون : Piotr Beling (جامعة لودز، بولندا)، Peter Sanders (معهد كارلسروه للتكنولوجيا، ألمانيا)التصنيف : cs.DS cs.DB cs.PFتاريخ النشر : 22 أكتوبر 2025 (نسخة arXiv)رابط الورقة : https://arxiv.org/abs/2504.17918 دوال التجزئة المثالية توفر "أسماء" فريدة للمفاتيح العشوائية باستخدام عدد قليل من البتات لكل مفتاح فقط. وهذا يشكل حجر الأساس الأساسي في التطبيقات مثل جداول التجزئة الثابتة وقواعد البيانات والمعلوماتية الحيوية. تقدم هذه الورقة منهج PHast الذي يجمع بين أسرع الاستعلامات المتاحة والبناء السريع جداً واستهلاك مساحة جيد (أقل من بتتين لكل مفتاح). يحسّن PHast توزيع الدلاء الذي يجزئ أولاً كل مفتاح k إلى دلو، ثم يبحث عن بذرة الدلو s بحيث تقوم دالة التوزيع بتعيين الأزواج (s,k) بطريقة خالية من التصادمات. يمكن لـ PHast استخدام دوال تجزئة صغيرة النطاق مع التعيين الخطي وترميز البذور بعرض ثابت والبناء المتوازي. يتحقق هذا باستخدام شرائح صغيرة متداخلة من القيم المسموحة والدفع للتعامل مع تعيين البذور غير الناجح. يستخدم متغير يسمى PHast+ التوزيع الإضافي، مما يتيح البحث عن البذور بالتوازي على مستوى البت، مما يسرّع البناء بمقدار عشرة أضعاف.
دالة التجزئة المثالية (PHF) هي دالة تعيين مجموعة المفاتيح {k₁, ..., kₙ} إلى {0, ..., m-1} بطريقة حقنية. عندما يكون m = n، تُسمى دالة التجزئة المثالية الدنيا (MPHF). وهذا يشكل حجر الأساس المهم في تطبيقات قواعد البيانات والفهارس النصية والمعلوماتية الحيوية.
تحدي التحسين متعدد الأهداف : يواجه تصميم MPHF مشكلة التحسين متعدد الأهداف بين استهلاك المساحة وزمن البناء وزمن الاستعلامالحد الأدنى النظري : الحد الأدنى النظري لـ MPHF هو log₂ e ≈ 1.44 بت لكل مفتاحالاحتياجات العملية : في الممارسة العملية، يُستخدم PHF لتسريع الهياكل البيانات الثابتة، لذا يعتبر الاستعلام السريع حاسماًطريقة توزيع الدلاء : تتطلب CHD و FCH و PTHash و PHOBIC دوال توزيع دلاء غير خطية أو ترميز بذور بطول متغير، مما يؤثر على سرعة الاستعلامطرق الانقسام العودي : على الرغم من كفاءة المساحة العالية، إلا أن زمن الاستعلام أبطأ ويتطلب فك تشفير معلومات التنقل بطول متغيرطرق البصمات : تتطلب ما لا يقل عن e بت لكل مفتاح، والاستعلام يتطلب عمليات الترتيب على متجهات البتتكاليف البناء المتوازي : تتطلب الطرق الموجودة خطوات استعلام إضافية لاسترجاع قيم الإزاحةالتعيين الخطي للدلاء : تجنب توزيع الدلاء غير الخطي من خلال التعيين الخطي إلى شرائح صغيرة متداخلة، مما يحقق بناء متعدد الخيوط صديق للذاكرة المؤقتةآلية الدفع : السماح باستخدام دوال تجزئة صغيرة النطاق وترميز بذور بعرض ثابت، مما يتجنب البحث المحلي المعقدتعيين البذور الاستكشافي : تقليل استهلاك المساحة من خلال اختيار البذور التي تحتل أقل قيم الدوالمتغير PHast+ : استخدام دالة التوزيع الإضافي لتحقيق البحث عن البذور بالتوازي على مستوى البت، مما يسرّع البناء بمقدار عشرة أضعافالتقييم التجريبي الشامل : مقارنة الأداء التفصيلية مع الطرق الموجودةبالنظر إلى مجموعة من n مفتاح، قم ببناء دالة تجزئة مثالية f بحيث:
f حقنية (خالية من التصادمات) زمن الاستعلام سريع قدر الإمكان زمن البناء معقول استهلاك المساحة منخفض (الهدف < بتتان لكل مفتاح) يعتمد PHast على طريقة "map-or-bump"، التي تعيّن n مفتاح إلى {0, 1, ..., m-1}:
f(k) = {
⌊αh(k)⌋ + p(s, h(k)) إذا كان s > 0
fallback_for_bumped(k) وإلا
}
حيث:
h(k) دالة تجزئة u-بت (u = 64) s = seeds⌊βh(k)⌋ هي البذرة α, β عوامل التحجيم p(s, h(k)) دالة التوزيع توزيع الدلاء الخطي :فهرس الدلو: ⌊B/2ᵘ · cᵢ⌋ قيمة بداية الشريحة: ⌊(m-L+1)/2ᵘ · cᵢ⌋ قيمة الإخراج: ⌊(m-L+1)/2ᵘ · cᵢ⌋ + p(s, cᵢ) تعيين البذور ذو النافذة :استخدام نافذة منزلقة بحجم W = 256 إدارة الدلاء غير المزروعة بواسطة قائمة الأولويات دالة الأولوية: ℓ(s) - 1024b (s حجم الدلو، b فهرس الدلو) آلية الدفع :تُعلّم الدلاء التي لا يمكن العثور على بذرة لها كـ bumped (قيمة البذرة = 0) حوالي 1% من الدلاء يتم دفعها، مما يؤثر قليلاً على زمن الاستعلام المتوقع يستخدم PHast+ دالة التوزيع الإضافي لتحقيق بناء سريع:
p(s, c) = c mod L + s - 1 // الصيغة 3.2
p(s, c) = (c + δs) mod L // الصيغة 3.3
البحث عن البذور بالتوازي على مستوى البت :
اختبار جدوى 64 بذرة متتالية في نفس الوقت استخدام العمليات البتية للكشف السريع عن التصادمات تسريع البناء بحوالي 10 مرات التوازي بدون اتصال :تقسيم مصفوفة البذور إلى t كتلة و t-1 فجوة حساب البذور في الكتل بشكل متوازي من قبل الخيوط حجم الفجوة: ⌈LB/(m-L+1)⌉ دلو التصميم الصديق للذاكرة المؤقتة :معالجة الدلاء بترتيب الفهرس استخدام مخزن مؤقت دائري لتمثيل خريطة الاحتلال نمط الوصول إلى الذاكرة المتسلسل الأجهزة : AMD Ryzen 5600G @3.9GHz (6 أنوية 12 خيط)الذاكرة المؤقتة : 384KB/3MB/16MB L1/L2/L3المترجم : Rust 1.84.1, GCC 12.2.0عدد الخيوط : 12 خيط (اختبارات متعددة الخيوط)مفاتيح الأعداد الصحيحة العشوائية : 5×10⁷ و 5×10⁸ عدد صحيح عشوائي 64-بتمفاتيح السلاسل النصية العشوائية : سلاسل عشوائية بطول 10-50 بايتدالة التجزئة : GxHash (تجزئة SIMD عالية الأداء)توزيع الدلاء : PTHash, PHOBIC, PtrHashالانقسام العودي : SIMDRecSplit, Bipartite ShockHashطرق البصمات : FiPS, FMPH, FMPHGOاسترجاع الدوال الثابتة : SicHashاستهلاك المساحة : بت لكل مفتاحزمن الاستعلام : نانوثانية لكل استعلامزمن البناء : نانوثانية لكل مفتاحمعامل التسريع المتوازي : أداء خيط واحد مقابل خيوط متعددةPHast : 9-22 ns/query، مساحة 1.82-2.33 bits/keyPHast+ : 10-15 ns/query، مساحة 1.84-2.24 bits/keyPtrHash : 14-17 ns/query، مساحة 2.12-2.99 bits/keyPTHash : 40-54 ns/query، مساحة 2.11-3.19 bits/keyPHast+ : 61-140 ns/key (أسرع تكوين)PHast : 133-5322 ns/key (مرتبط بحجم البذرة)PtrHash : 75-192 ns/keyFMPH : 40-57 ns/key (لكن مساحة أكبر)PHast : 8.5-9.6 مرات تسريع (توازي توزيع البذور فعال)PHast+ : 4.1-5.4 مرات تسريعPtrHash : 3.6-5.1 مرات تسريعحجم البذرة S PHast λ المساحة (bits/key) PHast+ λ المساحة (bits/key) 8 4.7 1.91 5.35 2.09 10 6.05 1.85 6.35 1.90 12 7.35 1.81 7.4 1.82
اختيار البذور الاستكشافي : إزالته تزيد المساحة من 1.92 إلى 2.39 bits/keyحجم النافذة : عند W=1 تزداد المساحة إلى 2.20 bits/key، W>256 لا يحسّن بشكل ملحوظقيود الشريحة : إزالة قيود الشريحة تزيد المساحة بشكل ملحوظترتيب معالجة الدلاء : معالجة الدلاء بترتيب تنازلي حسب الحجم (مثل CHD) يؤدي إلى استهلاك مساحة أكبرCHD : توزيع دلاء خطي لكن بناء بطيء، يتطلب ترميز بذور بطول متغيرFCH/PTHash : توزيع دلاء غير خطي بسيط، يخفف المشكلة جزئياًPHOBIC : دالة توزيع دلاء مثالية، لكن الاستعلام أبطأPtrHash : متغير PHOBIC محسّن للاستعلام، يستخدم البحث المحليطرق البصمات : بناء سريع لكن مساحة كبيرة، الاستعلام يتطلب عمليات الترتيبالانقسام العودي : مساحة قريبة من الحد الأدنى النظري لكن الاستعلام بطيءاسترجاع الدوال الثابتة : يتطلب اختبار موقع متعدد معقديتجنب PHast من خلال آلية الدفع الترميز بطول متغير والبحث المحلي المعقد، مع الحفاظ على بساطة توزيع الدلاء الخطي.
أداء الاستعلام : يحقق PHast زمن استعلام قريب من الأمثل النظريكفاءة البناء : يوفر PHast+ سرعة بناء فائقة جداًكفاءة المساحة : يحقق استهلاك مساحة جيد مع الحفاظ على الاستعلام السريعالبناء الصديق للتوازي : بناء متوازي بدون تكاليف استعلام إضافيةالمساحة مقابل الطرق العودية : لا تزال أقل كفاءة من طرق الانقسام العودي بالقرب من الحد الأدنى النظريمجموعات البيانات الكبيرة : بالنسبة لـ 5×10⁸ مفتاح، يصبح الوصول إلى الذاكرة اختناقاًضبط المعاملات : يتطلب اختيار مجموعة معاملات مناسبة حسب سيناريو التطبيقالبناء خارج الذاكرة : تنفيذ خوارزمية الذاكرة الخارجية الموضحة في القسم 6الاستعلام الجماعي : دعم تحسينات الاستعلام الجماعي المشابهة لـ PtrHashتسريع GPU : استكشاف إمكانيات التوازي على GPUتوسيع k-perfect : دعم الحالات التي يُسمح فيها لـ k مفتاح بالتعيين إلى نفس القيمةفلسفة التصميم المبسطة : تجنب الآليات المعقدة من خلال الدفع، يعكس "الأقل هو الأكثر"التعيين الخطي : استعادة بساطة توزيع الدلاء الخطي مع حل مشاكلهتحسين التوازي على مستوى البت : البحث عن البذور بالتوازي على مستوى البت في PHast+ هو ابتكار هندسي مهمالتصميم الصديق للذاكرة المؤقتة : معالجة متسلسلة وتصميم المخزن المؤقت الدائري يأخذ في الاعتبار خصائص CPU الحديثةمقارنة شاملة : مقارنة تفصيلية لجميع الطرق الرئيسية السائدةتقييم متعدد الأبعاد : تحليل المقايضات بين المساحة وزمن الاستعلام وزمن البناءدراسة المعاملات : تجارب تحسين معاملات وتجارب استئصال تفصيليةقابلية إعادة الإنتاج : تنفيذ مفتوح المصدر وإعدادات تجربة تفصيليةاستهلاك المساحة : لا تزال هناك فجوة حوالي 0.4 bits/key مقارنة بطرق الانقسام العوديحساسية المعاملات : يتطلب تعديل معاملات متعددة حسب عدد المفاتيح وحجم البذرةالتحليل النظري : يفتقد إلى إثبات نظري صارم لتعقيد المساحةمجموعات بيانات موحدة : تستخدم بشكل أساسي بيانات عشوائية، تفتقد اختبار البيانات الحقيقيةالهرمية الذاكرة : لم يتم تحليل تأثير مستويات الذاكرة المؤقتة المختلفة بشكل كافٍالاستقرار طويل الأجل : لم يتم اختبار الأداء في الاستخدام طويل الأجل على نطاق واسعالقيمة النظرية : إثبات أن الطرق البسيطة يمكن أن تكون تنافسية مع التحسين الهندسيالمنهجية : توفير فكرة "التبسيط بدلاً من التعقيد" لتصميم هياكل البياناتتحديد المعايير : تحديد معايير جديدة لأداء استعلام التجزئة المثاليةالتطبيق المباشر : يمكن استخدامه في قواعد البيانات ومحركات البحث وغيرها من السيناريوهات التي تتطلب استعلام سريعمرجع هندسي : يمكن الاستفادة من تصميم الذاكرة المؤقتة والتوازي في هياكل بيانات أخرىمساهمة مفتوحة المصدر : توفر تنفيذ Rust عالي الجودة للمجتمعجداول التجزئة الثابتة : سيناريوهات حيث تكون مجموعة المفاتيح ثابتة والاستعلام متكررفهارس قواعد البيانات : أنظمة قواعد البيانات التي تتطلب بحث سريع عن القيم الرئيسيةالمعلوماتية الحيوية : تطبيقات مثل فهرسة k-mer التي تتطلب عدداً كبيراً من الاستعلاماتأنظمة الذاكرة المؤقتة : أنظمة الذاكرة المؤقتة في الذاكرة التي تتطلب استجابة استعلام فائقة السرعةالذاكرة الكافية : يتطلب ذاكرة كافية لتخزين هيكل البيانات الكاملالبيانات الثابتة : غير مناسب للسيناريوهات الديناميكية ذات التحديثات المتكررةكثافة الاستعلام : مناسب للتطبيقات حيث يكون معدل الاستعلام أعلى بكثير من معدل البناءPHOBIC : Hermann et al. "Perfect hashing with optimized bucket sizes and interleaved coding"PtrHash : Groot Koerkamp "PtrHash: Minimal Perfect Hashing at RAM Throughput"PTHash : Pibiri & Trani "PTHash: Revisiting FCH minimal perfect hashing"SIMDRecSplit : Bez et al. "High performance construction of RecSplit based minimal perfect hash functions"Fredman & Komlós : الحد الأدنى النظري لدوال التجزئة المثاليةBelazzougui et al. : الأعمال الأساسية لطرق توزيع الدلاءتُظهر ورقة PHast أنه في مجال هندسة الخوارزميات، من خلال الفهم العميق لجوهر المشكلة وخصائص الأجهزة الحديثة، يمكن للطرق البسيطة بعد التحسين الدقيق أن تحقق أو تتجاوز أداء الطرق المعقدة. وهذا يوفر رؤية مهمة لتصميم هياكل البيانات: في بعض الأحيان، مفتاح حل المشكلة ليس إضافة التعقيد، بل إيجاد اتجاه التبسيط الصحيح.