التجزئة الشاملة

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

مقدمة

لنفترض أننا نريد تعيين المفاتيح من عالم مايو{\displaystyle U}داخلم{\displaystyle m}صناديق (مُصنّفة)[م]={0،...،م-1}{\displaystyle [m]=\{0,\dots ,m-1\}}سيتعين على الخوارزمية التعامل مع مجموعة بيانات معينة.Sيو{\displaystyle S\subseteq U}ل|S|=ن{\displaystyle |S|=n}المفاتيح، وهو أمر غير معروف مسبقًا. عادةً، يكون الهدف من التجزئة هو الحصول على عدد قليل من التصادمات (المفاتيح منS{\displaystyle S}التي تقع في نفس الحاوية). لا يمكن لدالة التجزئة الحتمية أن تقدم أي ضمان في بيئة معادية إذا|يو|>من{\displaystyle |U|>m\cdot n}بما أن الخصم قد يختارS{\displaystyle S}أن تكون هذه القيمة هي الصورة العكسية لحاوية بيانات. هذا يعني أن جميع مفاتيح البيانات تقع في نفس الحاوية، مما يجعل التجزئة غير مجدية. علاوة على ذلك، لا تسمح دالة التجزئة الحتمية بإعادة التجزئة : ففي بعض الأحيان، تكون بيانات الإدخال غير مناسبة لدالة التجزئة (على سبيل المثال، وجود عدد كبير جدًا من التصادمات)، لذلك قد يرغب المستخدم في تغيير دالة التجزئة.

يكمن حل هذه المشاكل في اختيار دالة عشوائيًا من مجموعة من دوال التجزئة.ح={ح:يو[م]}{\displaystyle H=\{h:U\to [m]\}}تُسمى عائلة عالمية إذا،x،yيو، xy:  |{حح:ح(x)=ح(y)}||ح|م{\displaystyle \forall x,y\in U,~x\neq y:~~|\{h\in H:h(x)=h(y)\}|\leq {\frac {|H|}{m}}}.

بمعنى آخر، فإن أي مفتاحين مختلفين للكون يتصادمان باحتمالية لا تتجاوز1/م{\displaystyle 1/m}عندما تكون دالة التجزئةح{\displaystyle h}يتم سحبها بشكل عشوائي منتظم منح{\displaystyle H}هذا هو بالضبط احتمال التصادم الذي نتوقعه إذا قامت دالة التجزئة بتعيين رموز تجزئة عشوائية حقًا لكل مفتاح.

في بعض الأحيان، يتم تخفيف التعريف بمعامل ثابت، ويتطلب فقط احتمال التصادم.يا(1/م){\displaystyle O(1/m)}بدلاً من1/م{\displaystyle \leq 1/m}. تم تقديم هذا المفهوم بواسطة كارتر وويغمان [ 1 ] في عام 1977، وقد وجد العديد من التطبيقات في علوم الكمبيوتر (انظر، على سبيل المثال [ 2 ] ) .

إذا كان لدينا حد أعلى لـϵ<1{\displaystyle \epsilon <1}فيما يتعلق باحتمالية التصادم، نقول إن لديناϵ{\displaystyle \epsilon }- شبه عالمية. فعلى سبيل المثال، تتمتع العائلة العالمية بـ1/م{\displaystyle 1/m}شبه عالمية.

تتمتع العديد من العائلات العالمية، ولكن ليس جميعها، بخاصية الفرق المنتظم الأقوى التالية :

x،yيو، xy{\displaystyle \forall x,y\in U,~x\neq y}، متىح{\displaystyle h}يتم اختيارها عشوائياً من العائلةح{\displaystyle H}الفرقح(x)-ح(y) تعديل م{\displaystyle h(x)-h(y)~{\bmod {~}}m}موزعة بشكل منتظم في[م]{\displaystyle [m]}.

لاحظ أن تعريف العالمية يهتم فقط بما إذا كانح(x)-ح(y)=0{\displaystyle h(x)-h(y)=0}، وهو ما يحسب التصادمات. خاصية الفرق المنتظم أقوى.

(وبالمثل، يمكن أن تكون العائلة الشاملة شاملة XOR إذاx،yيو، xy{\displaystyle \forall x,y\in U,~x\neq y}، القيمةح(x)ح(y) تعديل م{\displaystyle h(x)\oplus h(y)~{\bmod {~}}m}موزعة بشكل منتظم في[م]{\displaystyle [m]}أين{\displaystyle \oplus }هي عملية "أو الحصرية" على مستوى البتات. هذا ممكن فقط إذام{\displaystyle m}(قوة العدد اثنين.)

أما الشرط الأقوى فهو الاستقلال الثنائي : لدينا هذه الخاصية عندما x،yيو، xy{\displaystyle \forall x,y\in U,~x\neq y}لدينا احتمال أنx،y{\displaystyle x,y}سيتم تطبيق التجزئة على أي زوج من قيم التجزئةz1،z2{\displaystyle z_{1},z_{2}}كأنها كانت عشوائية تماماً:P(ح(x)=z1ح(y)=z2)=1/م2{\displaystyle P(h(x)=z_{1}\land h(y)=z_{2})=1/m^{2}}يُطلق على الاستقلال الثنائي أحيانًا اسم الشمولية القوية .

ومن الخصائص الأخرى التماثل. نقول إن عائلة ما متماثلة إذا كانت جميع قيم التجزئة متساوية الاحتمالية:P(ح(x)=z)=1/م{\displaystyle P(h(x)=z)=1/m}لأي قيمة تجزئةz{\displaystyle z}لا تعني الشمولية بالضرورة التماثل. ومع ذلك، فإن الشمولية القوية تعني بالضرورة التماثل.

بفرض وجود عائلة ذات خاصية المسافة المنتظمة، يمكن إنتاج عائلة تجزئة مستقلة ثنائياً أو عائلة تجزئة عالمية قوية عن طريق إضافة ثابت عشوائي موزع بشكل منتظم بقيم في[م]{\displaystyle [m]}إلى دوال التجزئة. (وبالمثل، إذام{\displaystyle m}بما أن قيمة ثابتة هي قوة للعدد اثنين، يمكننا تحقيق الاستقلال الثنائي من عائلة تجزئة XOR الشاملة عن طريق إجراء عملية XOR حصرية باستخدام ثابت عشوائي موزع توزيعًا منتظمًا. ولأن الإزاحة بمقدار ثابت قد تكون غير ذات صلة في بعض التطبيقات (مثل جداول التجزئة)، فإن التمييز الدقيق بين خاصية المسافة المنتظمة والاستقلال الثنائي لا يُجرى دائمًا. [ 3 ]

في بعض التطبيقات (مثل جداول التجزئة)، من المهم أن تكون البتات الأقل أهمية في قيم التجزئة عامة أيضًا. عندما تكون عائلة من البتات عامة بقوة، يكون هذا مضمونًا: إذاح{\displaystyle H}هي عائلة عالمية قوية معم=2ل{\displaystyle m=2^{L}}ثم قامت الأسرة بتكوين الوظائفحتعديل2ل{\displaystyle h{\bmod {2^{L'}}}}للجميعحح{\displaystyle h\in H}كما أنه عالمي بقوة لـلل{\displaystyle L'\leq L}لسوء الحظ، لا ينطبق الأمر نفسه على العائلات (العالمية) البحتة. على سبيل المثال، العائلة المكونة من دالة التطابقح(x)=x{\displaystyle h(x)=x}من الواضح أنها عالمية، لكن العائلة صنعت الوظيفةح(x)=xتعديل2ل{\displaystyle h(x)=x{\bmod {2^{L'}}}}لا يمكن اعتباره عالميًا.

تعتمد خوارزميات UMAC و Poly1305-AES والعديد من خوارزميات التحقق من صحة الرسائل الأخرى على التجزئة الشاملة. [ 4 ] [ 5 ] في مثل هذه التطبيقات، يختار البرنامج دالة تجزئة جديدة لكل رسالة، بناءً على قيمة عشوائية فريدة لتلك الرسالة.

تعتمد العديد من تطبيقات جداول التجزئة على التجزئة الشاملة. في هذه التطبيقات، يختار البرنامج عادةً دالة تجزئة جديدة فقط بعد ملاحظة وجود عدد كبير جدًا من المفاتيح المتداخلة؛ وحتى ذلك الحين، تستمر دالة التجزئة نفسها في الاستخدام بشكل متكرر. (تختار بعض مخططات حل التداخل، مثل التجزئة المثالية الديناميكية ، دالة تجزئة جديدة في كل مرة يحدث فيها تداخل. بينما تسمح مخططات أخرى، مثل تجزئة الوقواق وتجزئة الاختيار الثنائي ، بعدد من التداخلات قبل اختيار دالة تجزئة جديدة). يمكن الاطلاع على دراسة استقصائية لأسرع دوال التجزئة الشاملة والشاملة القوية المعروفة للأعداد الصحيحة والمتجهات والسلاسل النصية في المرجع [ 6 ] .

الضمانات الرياضية

لأي مجموعة ثابتةS{\displaystyle S}لن{\displaystyle n}المفاتيح، باستخدام عائلة عالمية تضمن الخصائص التالية.

  1. لأي ثابتx{\displaystyle x}فيS{\displaystyle S}، العدد المتوقع للمفاتيح في الصندوقح(x){\displaystyle h(x)}يكونن/م{\displaystyle n/m}عند تنفيذ جداول التجزئة عن طريق الربط ، يكون هذا الرقم متناسبًا مع وقت التشغيل المتوقع لعملية تتضمن المفتاحx{\displaystyle x}(على سبيل المثال، استعلام أو إدراج أو حذف).
  2. العدد المتوقع لأزواج المفاتيحx،y{\displaystyle x,y}فيS{\displaystyle S}معxy{\displaystyle x\neq y}التي تصطدم (ح(x)=ح(y){\displaystyle h(x)=h(y)}) محصورة من الأعلى بـ(ن2)1/م=ن(ن-1)/2م{\displaystyle {\binom {n}{2}}\cdot 1/m=n(n-1)/2m}وهذا أمرٌ مُرتبيا(ن2/م){\displaystyle O(n^{2}/m)}عندما يكون عدد الصناديق،م{\displaystyle m}يتم اختيارها خطيًا فين{\displaystyle n}(أي، يتم تحديده بواسطة دالة فيΩ(ن){\displaystyle \Omega (n)})، العدد المتوقع للتصادمات هويا(ن){\displaystyle O(n)}عند التجزئة إلىن2{\displaystyle n^{2}}في حالة الصناديق، لا توجد تصادمات على الإطلاق باحتمالية لا تقل عن النصف.
  3. العدد المتوقع للمفاتيح في الصناديق التي تحتوي على الأقلت{\displaystyle t}يتم تحديد المفاتيح الموجودة فيها من الأعلى بواسطة2ن/(ت-2(ن/م)+1){\displaystyle 2n/(t-2(n/m)+1)}[ 7 ] وبالتالي ، إذا تم تحديد سعة كل صندوق بثلاثة أضعاف الحجم المتوسط ​​(ت=3ن/م{\displaystyle t=3n/m})، يكون العدد الإجمالي للمفاتيح في الصناديق الممتلئة على الأكثريا(م){\displaystyle O(m)}ينطبق هذا فقط على عائلة التجزئة التي يكون احتمال تصادمها محدودًا من الأعلى بـ1/م{\displaystyle 1/m}إذا تم استخدام تعريف أضعف، يتم تحديده بواسطةيا(1/م){\displaystyle O(1/m)}لم تعد هذه النتيجة صحيحة. [ 7 ]

تنطبق الضمانات المذكورة أعلاه على أي مجموعة ثابتةS{\displaystyle S}تتحقق هذه الشروط إذا اختار الخصم مجموعة البيانات. مع ذلك، يجب على الخصم اتخاذ هذا الاختيار قبل (أو بشكل مستقل عن) اختيار الخوارزمية العشوائي لدالة التجزئة. إذا كان بإمكان الخصم ملاحظة الاختيار العشوائي للخوارزمية، فإن العشوائية تفقد جدواها، ويصبح الوضع مماثلاً للتجزئة الحتمية.

تُستخدم الضمانتان الثانية والثالثة عادةً بالتزامن مع إعادة التجزئة . على سبيل المثال، قد يتم إعداد خوارزمية عشوائية للتعامل مع بعضيا(ن){\displaystyle O(n)}عدد التصادمات. إذا رصد عددًا كبيرًا جدًا من التصادمات، فإنه يختار تصادمًا عشوائيًا آخر.ح{\displaystyle h}من العائلة والتكرارات. تضمن خاصية الشمولية أن يكون عدد التكرارات متغيرًا عشوائيًا هندسيًا .

الإنشاءات

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

تجزئة الأعداد الصحيحة

يتناول هذا القسم حالة تجزئة الأعداد الصحيحة التي تتناسب مع عدد الكلمات في الآلة؛ وبالتالي، فإن عمليات مثل الضرب والجمع والقسمة، وما إلى ذلك، هي تعليمات رخيصة على مستوى الآلة. لنفترض أن الكون المراد تجزئته هو{0،...،|يو|-1}{\displaystyle \{0,\dots ,|U|-1\}}وليكن مدى دوال التجزئة هو0،...،ن-1{\displaystyle {0,\ldots ,n-1}}.

كان الاقتراح الأصلي لكارتر وويغمان [ 1 ] هو اختيار عدد أوليص|يو|{\displaystyle p\geq |U|}وحدد

حأ،ب(x)=((أx+ب) تعديل ص) تعديل ن{\displaystyle h_{a,b}(x)=((ax+b)~{\bmod {~}}p)~{\bmod {~}}n}

أينأ،ب{\displaystyle a,b}هي أعداد صحيحة مختارة عشوائياً بترددص{\displaystyle p}معأ0{\displaystyle a\neq 0}(هذه دورة واحدة من مولد التوافق الخطي .)

لرؤية ذلكح={حأ،ب}{\displaystyle H=\{h_{a,b}\}}هي عائلة عالمية، لاحظ أنح(x)=ح(y){\displaystyle h(x)=h(y)}لا ينطبق إلا عندما

أx+بأy+ب+أنام(تعديلص){\displaystyle ax+b\equiv ay+b+i\cdot m{\pmod {p}}}

لبعض الأعداد الصحيحةأنا{\displaystyle i}بين0{\displaystyle 0}و(ص-1)/م{\displaystyle (p-1)/m}. منذص|يو|{\displaystyle p\geq |U|}، لوxy{\displaystyle x\neq y}اختلافهمx-y{\displaystyle x-y}هو عدد غير صفري وله مقلوب باقي القسمةص{\displaystyle p}حل المعادلة لـأ{\displaystyle a}العائد

أأنام(x-y)-1(تعديلص){\displaystyle a\equiv i\cdot m\cdot (x-y)^{-1}{\pmod {p}}}.

هناكص-1{\displaystyle p-1}الخيارات الممكنة لـأ{\displaystyle a}(منذأ=0{\displaystyle a=0}(باستثناء) و، متفاوتةأنا{\displaystyle i}ضمن النطاق المسموح به،(ص-1)/م{\displaystyle \lfloor (p-1)/m\rfloor }القيم غير الصفرية المحتملة للجانب الأيمن. وبالتالي، فإن احتمال التصادم هو

(ص-1)/م/(ص-1)((ص-1)/م)/(ص-1)=1/م{\displaystyle \lfloor (p-1)/m\rfloor /(p-1)\leq ((p-1)/m)/(p-1)=1/m}.

طريقة أخرى للنظرح{\displaystyle H}تُعرَّف العائلة العالمية من خلال مفهوم المسافة الإحصائية . اكتب الفرقح(x)-ح(y){\displaystyle h(x)-h(y)}مثل

ح(x)-ح(y)(أ(x-y) تعديل ص)(تعديلم){\displaystyle h(x)-h(y)\equiv (a(x-y)~{\bmod {~}}p){\pmod {m}}}.

منذx-y{\displaystyle x-y}غير صفري وأ{\displaystyle a}موزعة بشكل منتظم في{1،...،ص-1}{\displaystyle \{1,\dots ,p-1\}}وبناءً على ذلكأ(x-y){\displaystyle a(x-y)}moduloص{\displaystyle p}كما أنه موزع بشكل منتظم في{1،...،ص-1}{\displaystyle \{1,\dots ,p-1\}}توزيع(ح(x)-ح(y)) تعديل م{\displaystyle (h(x)-h(y))~{\bmod {~}}m}وبالتالي، يكون الأمر شبه منتظم، حتى مع وجود اختلاف في احتمالية±1/ص{\displaystyle \pm 1/p}بين العينات. ونتيجة لذلك، فإن المسافة الإحصائية إلى عائلة متجانسة هييا(م/ص){\displaystyle O(m/p)}، وهو ما يصبح ضئيلاً عندماصم{\displaystyle p\gg m}.

عائلة دوال التجزئة الأبسط

حأ(x)=(أx تعديل ص) تعديل م{\displaystyle h_{a}(x)=(ax~{\bmod {~}}p)~{\bmod {~}}m}

هو عالمي تقريبًا فقط:برو{حأ(x)=حأ(y)}2/م{\displaystyle \Pr\{h_{a}(x)=h_{a}(y)\}\leq 2/m}للجميعxy{\displaystyle x\neq y}[ 1 ] علاوة على ذلك ، فإن هذا التحليل دقيق للغاية؛ فقد أظهر كارتر وويغمان [ 1 ] أنبرو{حأ(1)=حأ(م+1)}2/(م+1){\displaystyle \Pr\{h_{a}(1)=h_{a}(m+1)\}\geq 2/(m+1)}حينما(ص-1) تعديل م=1{\displaystyle (p-1)~{\bmod {~}}m=1}.

تجنب الحساب النمطي

تُعدّ طريقة الضرب والإزاحة ، التي وصفها ديتزفيلبينجر وآخرون عام 1997، أحدث التقنيات المستخدمة في تجزئة الأعداد الصحيحة. [ 8 ] وبفضل تجنّبها للحساب النمطي ، تُصبح هذه الطريقة أسهل بكثير في التنفيذ، كما أنها أسرع بكثير في الواقع العملي (عادةً بأربعة أضعاف على الأقل [ 9 ] ). تفترض هذه الطريقة أن عدد الخانات هو قوة من قوى العدد اثنين.م=2م{\displaystyle m=2^{M}}. يتركw{\displaystyle w}ليكن عدد البتات في كلمة الآلة. عندئذٍ، يتم تحديد معلمات دوال التجزئة على الأعداد الصحيحة الموجبة الفردية.أ<2w{\displaystyle a<2^{w}}(التي تتناسب مع كلمة منw{\displaystyle w}بتات). لتقييمحأ(x){\displaystyle h_{a}(x)}، اضربx{\displaystyle x}بواسطةأ{\displaystyle a}modulo2w{\displaystyle 2^{w}}ثم حافظ على النظام العاليم{\displaystyle M}البتات كرمز تجزئة. في الترميز الرياضي ، هذا هو

حأ(x)=(أxتعديل2w)دأناv2w-م.{\displaystyle h_{a}(x)=(a\cdot x\,\,{\bmod {\,}}2^{w})\,\,\mathrm {div} \,\,2^{w-M}.}

لا يحقق هذا المخطط خاصية الفرق المنتظم، وهو فقط2/م{\displaystyle 2/m}شبه عالمي ؛ لأيxy{\displaystyle x\neq y}،برو{حأ(x)=حأ(y)}2/م{\displaystyle \Pr\{h_{a}(x)=h_{a}(y)\}\leq 2/m}.

لفهم سلوك دالة التجزئة، لاحظ أنه إذاأxتعديل2w{\displaystyle ax{\bmod {2}}^{w}}وأyتعديل2w{\displaystyle ay{\bmod {2}}^{w}}إذا كانت لديهم نفس البتات من الرتبة العليا 'M'،أ(x-y)تعديل2w{\displaystyle a(x-y){\bmod {2}}^{w}}تحتوي على إما جميعها 1 أو جميعها 0 كأعلى M بت (اعتمادًا على ما إذاأxتعديل2w{\displaystyle ax{\bmod {2}}^{w}}أوأyتعديل2w{\displaystyle ay{\bmod {2}}^{w}}(أكبر). افترض أن أقل بتة مهمة مضبوطة منx-y{\displaystyle x-y}يظهر في الموضعw-ج{\displaystyle w-c}. منذأ{\displaystyle a}هو عدد فردي عشوائي، والأعداد الفردية لها معكوسات في الحلقةZ2w{\displaystyle Z_{2^{w}}}وبناءً على ذلكأ(x-y)تعديل2w{\displaystyle a(x-y){\bmod {2}}^{w}}سيتم توزيعها بالتساوي بينw{\displaystyle w}أعداد صحيحة من نوع بت مع ضبط البت الأقل أهمية في الموضعw-ج{\displaystyle w-c}وبالتالي، فإن احتمال أن تكون هذه البتات جميعها أصفارًا أو جميعها آحادًا هو على الأكثر2/2م=2/م{\displaystyle 2/2^{M}=2/m}من ناحية أخرى، إذاج<م{\displaystyle c<M}ثم البتات ذات الرتبة الأعلى M من أ(x-y)تعديل2w{\displaystyle a(x-y){\bmod {2}}^{w}}تحتوي على كل من الأصفار والآحاد، لذلك من المؤكد أنح(x)ح(y){\displaystyle h(x)\neq h(y)}وأخيرًا، إذاج=م{\displaystyle c=M}ثم عضw-م{\displaystyle w-M}ل أ(x-y)تعديل2w{\displaystyle a(x-y){\bmod {2}}^{w}}هو 1 وحأ(x)=حأ(y){\displaystyle h_{a}(x)=h_{a}(y)}إذا وفقط إذا بتاتw-1،...،w-م+1{\displaystyle w-1,\ldots ,w-M+1}وهي أيضًا 1، وهو ما يحدث باحتمالية1/2م-1=2/م{\displaystyle 1/2^{M-1}=2/m}.

هذا التحليل دقيق، كما يتضح من المثال.x=2w-م-2{\displaystyle x=2^{w-M-2}}وy=3x{\displaystyle y=3x}للحصول على دالة تجزئة "عالمية" حقًا، يمكن استخدام مخطط الضرب والجمع والإزاحة الذي يختار البتات ذات الرتبة الأعلى.

حأ،ب(x)=((أx+ب)تعديل2w+م)دأناv2w،{\displaystyle h_{a,b}(x)=((ax+b){\bmod {2}}^{w+M})\,\mathrm {div} \,2^{w},}

أينأ{\displaystyle a}هو عدد صحيح موجب عشوائيأ<22w{\displaystyle a<2^{2w}}وب{\displaystyle b}هو عدد صحيح عشوائي غير سالب معب<22w{\displaystyle b<2^{2w}}يتطلب هذا إجراء عمليات حسابية على2w{\displaystyle 2w}الأعداد الصحيحة غير الموقعة ذات n بت. يعود هذا الإصدار من الضرب والإزاحة إلى ديتزفيلبينجر، وقد تم تحليله لاحقًا بشكل أكثر دقة بواسطة وولفيل. [ 10 ]

متجهات التجزئة

يتناول هذا القسم تجزئة متجه ثابت الطول من كلمات الآلة. فسر المدخلات كمتجه.x¯=(x0،...،xك-1){\displaystyle {\bar {x}}=(x_{0},\dots ,x_{k-1})}لك{\displaystyle k}كلمات الآلة (أعداد صحيحة منw{\displaystyle w}(بضعة أجزاء لكل منها). إذاح{\displaystyle H}هي عائلة شاملة ذات خاصية الفرق المنتظم، والعائلة التالية (التي يعود تاريخها إلى كارتر وويغمان [ 1 ] ) لديها أيضًا خاصية الفرق المنتظم (وبالتالي فهي شاملة):

ح(x¯)=(أنا=0ك-1حأنا(xأنا))تعديل م{\displaystyle h({\bar {x}})=\left(\sum _{i=0}^{k-1}h_{i}(x_{i})\right)\,{\bmod {~}}m}حيث كلحأناح{\displaystyle h_{i}\in H}يتم اختيارها بشكل مستقل وعشوائي.

لوم{\displaystyle m}إذا كان أحد قوى العدد اثنين، فيمكن استبدال الجمع بعملية "أو الحصرية". [ 11 ]

عمليًا، إذا كانت العمليات الحسابية ذات الدقة المزدوجة متاحة، يتم استخدام عائلة دوال التجزئة ذات الإزاحة المضاعفة. [ 12 ] تهيئة دالة التجزئة بمتجهأ¯=(أ0،...،أك-1){\displaystyle {\bar {a}}=(a_{0},\dots ,a_{k-1})}من الأعداد الفردية العشوائية على2w{\displaystyle 2w}بتات لكل منها. ثم إذا كان عدد الخاناتم=2م{\displaystyle m=2^{M}}لمw{\displaystyle M\leq w}:

حأ¯(x¯)=((أنا=0ك-1xأناأأنا) تعديل 22w)دأناv22w-م{\displaystyle h_{\bar {a}}({\bar {x}})=\left({\big (}\sum _{i=0}^{k-1}x_{i}\cdot a_{i}{\big )}~{\bmod {~}}2^{2w}\right)\,\,\mathrm {div} \,\,2^{2w-M}}.

من الممكن تقليل عدد عمليات الضرب إلى النصف، وهو ما يُترجم عمليًا إلى زيادة السرعة بمقدار الضعف تقريبًا. [ 11 ] قم بتهيئة دالة التجزئة باستخدام متجه.أ¯=(أ0،...،أك-1){\displaystyle {\bar {a}}=(a_{0},\dots ,a_{k-1})}من الأعداد الفردية العشوائية على2w{\displaystyle 2w}كل بت. عائلة التجزئة التالية عالمية: [ 13 ]

حأ¯(x¯)=((أنا=0ك/2(x2أنا+أ2أنا)(x2أنا+1+أ2أنا+1))تعديل 22w)دأناv22w-م{\displaystyle h_{\bar {a}}({\bar {x}})=\left({\Big (}\sum _{i=0}^{\lceil k/2\rceil }(x_{2i}+a_{2i})\cdot (x_{2i+1}+a_{2i+1}){\Big )}{\bmod {~}}2^{2w}\right)\,\,\mathrm {div} \,\,2^{2w-M}}.

إذا لم تكن عمليات الدقة المزدوجة متاحة، فيمكن تفسير المدخلات على أنها متجه من أنصاف الكلمات (w/2{\displaystyle w/2}الأعداد الصحيحة ذات البتات). ثم ستستخدم الخوارزميةك/2{\displaystyle \lceil k/2\rceil }عمليات الضرب، حيثك{\displaystyle k}كان عدد أنصاف الكلمات في المتجه. وبالتالي، تعمل الخوارزمية بمعدل عملية ضرب واحدة لكل كلمة من المدخلات.

يمكن استخدام نفس الأسلوب لتجزئة الأعداد الصحيحة، وذلك بتفسير بتاتها كمتجهات من البايتات. في هذا النوع، تُعرف تقنية المتجهات بتجزئة الجدولة ، وهي تُوفر بديلاً عملياً لأساليب التجزئة الشاملة القائمة على الضرب. [ 14 ]

من الممكن أيضًا تحقيق شمولية قوية بسرعة عالية. [ 15 ] قم بتهيئة دالة التجزئة باستخدام متجه.أ¯=(أ0،...،أك){\displaystyle {\bar {a}}=(a_{0},\dots ,a_{k})}من الأعداد الصحيحة العشوائية على2w{\displaystyle 2w}بتات. حساب

حأ¯(x¯)sترoنز=(أ0+أنا=0ك-1أأنا+1xأناتعديل 22w)دأناv2w{\displaystyle h_{\bar {a}}({\bar {x}})^{\mathrm {strong} }=(a_{0}+\sum _{i=0}^{k-1}a_{i+1}x_{i}{\bmod {~}}2^{2w})\,\,\mathrm {div} \,\,2^{w}}.

والنتيجة عالمية بشكل كبيرw{\displaystyle w}بتات. وقد وُجد تجريبياً أنه يعمل بمعدل 0.2 دورة معالجة مركزية لكل بايت على معالجات إنتل الحديثة لـw=32{\displaystyle w=32}.

تجزئة السلاسل

يشير هذا إلى تجزئة متجه متغير الحجم من كلمات الآلة. إذا أمكن تحديد طول السلسلة برقم صغير، فمن الأفضل استخدام حل المتجه المذكور أعلاه (أي إضافة أصفار إلى المتجه حتى الوصول إلى الحد الأعلى). المساحة المطلوبة هي أقصى طول للسلسلة، ولكن وقت التقييم هوح(s){\displaystyle h(s)}هو مجرد طولs{\displaystyle s}طالما أن الأصفار ممنوعة في السلسلة النصية، يمكن تجاهل إضافة الأصفار عند تقييم دالة التجزئة دون التأثير على شموليتها. [ 11 ] تجدر الإشارة إلى أنه إذا سُمح بالأصفار في السلسلة النصية، فقد يكون من الأفضل إضافة حرف وهمي غير صفري (مثل 1) إلى جميع السلاسل النصية قبل إضافة الأصفار: سيضمن ذلك عدم تأثر الشمولية. [ 15 ]

لنفترض الآن أننا نريد استخدام التجزئةx¯=(x0،...،x){\displaystyle {\bar {x}}=(x_{0},\dots ,x_{\ell })}، حيث يكون هناك حد جيد على{\displaystyle \ell }غير معروف مسبقًا. تعالج عائلة عالمية مقترحة في [ 12 ] السلسلةx{\displaystyle x}كمعاملات متعددة الحدود بتردد عدد أولي كبير. إذاxأنا[u]{\displaystyle x_{i}\in [u]}، يتركصالأعلى{u،م}{\displaystyle p\geq \max\{u,m\}}ليكن عددًا أوليًا، وعرّفه:

حأ(x¯)=حأنانت((أنا=0xأناأ-أنا)تعديل ص){\displaystyle h_{a}({\bar {x}})=h_{\mathrm {int} }\left({\big (}\sum _{i=0}^{\ell }x_{i}\cdot a^{\ell -i}{\big )}{\bmod {~}}p\right)}، أينأ[ص]{\displaystyle a\in [p]}عشوائي بشكل منتظم وحأنانت{\displaystyle h_{\mathrm {int} }}يتم اختيارها عشوائياً من عائلة عالمية تمثل مجال الأعداد الصحيحة[ص][م]{\displaystyle [p]\mapsto [m]}.

باستخدام خصائص الحساب النمطي، يمكن حساب ما سبق دون إنتاج أعداد كبيرة للسلاسل الكبيرة على النحو التالي: [ 16 ]

دالة التجزئة uint hash ( سلسلة نصية x ، عدد صحيح a ، عدد صحيح p ) uint h = القيمة الابتدائية (INITIAL_VALUE) for ( uint i = 0 ; i < طول x ; ++ i ) h = (( h * a ) + x [ i ]) mod p return h

تعتمد دالة التجزئة المتدحرجة لرابين-كارب على مولد توافقي خطي . [ 17 ] تُعرف الخوارزمية المذكورة أعلاه أيضًا باسم دالة التجزئة الضربية . [ 18 ] عمليًا، يمكن تجنب عامل باقي القسمة (mod ) والمعامل p تمامًا بالسماح للأعداد الصحيحة بالفيضان، لأنه يُكافئ باقي القسمة على ( أقصى قيمة عددية صحيحة + 1) في العديد من لغات البرمجة. ومع ذلك، فإن استخدام الأعداد غير الأولية2ن{\displaystyle 2^{n}}يكون المعامل عرضةً للتداخل مع بعض المدخلات ، بغض النظر عن قيمة a . يوضح الجدول أدناه القيم المختارة لتهيئة h و a لبعض التطبيقات الشائعة.

تطبيقالقيمة الأوليةأ
دالة التجزئة لبرنشتاين djb2 [ 19 ]538133
STLPort 4.6.205
دالة التجزئة لكيرنيغان وريتشي [ 20 ]031
java.lang.String.hashCode()[ 21 ]031

لنفترض وجود سلسلتينx¯،y¯{\displaystyle {\bar {x}},{\bar {y}}}ودع{\displaystyle \ell }ليكن طول السلسلة الأطول؛ ولأغراض التحليل، يتم افتراضياً إضافة أصفار إلى السلسلة الأقصر حتى يصل طولها إلى الطول المطلوب.{\displaystyle \ell }. حدوث تصادم قبل التطبيقحأنانت{\displaystyle h_{\mathrm {int} }}يشير ذلك إلى أنأ{\displaystyle a}هو جذر لكثير الحدود ذي المعاملاتx¯-y¯{\displaystyle {\bar {x}}-{\bar {y}}}تحتوي هذه المعادلة متعددة الحدود على أكثر من{\displaystyle \ell }جذور moduloص{\displaystyle p}لذا فإن احتمال التصادم هو على الأكثر/ص{\displaystyle \ell /p}احتمالية التصادم من خلال العشوائيةحأنانت{\displaystyle h_{\mathrm {int} }}يؤدي ذلك إلى زيادة احتمالية التصادم الكلية إلى1م+ص{\displaystyle {\frac {1}{m}}+{\frac {\ell }{p}}}وبالتالي، إذا كان العدد الأوليص{\displaystyle p}إذا كانت كبيرة بما يكفي مقارنة بطول السلاسل التي تم تجزئتها، فإن العائلة قريبة جدًا من العالمية (في المسافة الإحصائية ).

تشمل العائلات العالمية الأخرى لوظائف التجزئة المستخدمة لتجزئة السلاسل غير المعروفة الطول إلى قيم تجزئة ثابتة الطول بصمة رابين و Buzhash .

تجنب الحساب النمطي

للتخفيف من العبء الحسابي للحساب النمطي، يتم استخدام ثلاث حيل في الممارسة العملية: [ 11 ]

  1. يختار المرء العدد الأوليص{\displaystyle p}أن يكون العدد قريبًا من قوة العدد اثنين، مثل عدد ميرسين الأولي . وهذا يسمح بإجراء العمليات الحسابية بنمط moduloص{\displaystyle p}يمكن تنفيذ ذلك بدون قسمة (باستخدام عمليات أسرع مثل الجمع والإزاحة). على سبيل المثال، في البنى الحديثة، يمكن العمل معص=261-1{\displaystyle p=2^{61}-1}، بينماxأنا{\displaystyle x_{i}}القيم هي قيم 32 بت.
  2. يمكن تطبيق التجزئة المتجهة على الكتل. على سبيل المثال، يتم تطبيق التجزئة المتجهة على كل كتلة من 16 كلمة في السلسلة، ويتم تطبيق تجزئة السلسلة علىك/16{\displaystyle \lceil k/16\rceil }النتائج. بما أن تجزئة السلسلة الأبطأ يتم تطبيقها على متجه أصغر بكثير، فسيكون هذا في الأساس بنفس سرعة تجزئة المتجهات.
  3. يختار المرء قوة العدد اثنين كمقسوم عليه، مما يسمح بإجراء العمليات الحسابية بنمط باقي القسمة.2w{\displaystyle 2^{w}}يتم تنفيذها بدون قسمة (باستخدام عمليات أسرع لإخفاء البتات ). وتعتمد عائلة دوال التجزئة NH على هذا النهج.

انظر أيضاً

مراجع

  1. ١ ٢ ٣ ٤ ٥ كارتر، لاري؛ ويغمان، مارك ن. (١٩٧٩). "الفئات العامة لدوال التجزئة" . مجلة علوم الحاسوب والأنظمة . ١٨ (٢): ١٤٣-١٥٤ . doi : 10.1016/0022-0000(79)90044-8 . نسخة المؤتمر في STOC'77.
  2. ميلترسن، بيتر برو. "التجزئة الشاملة" (ملف PDF) . مؤرشف من الأصل (ملف PDF) في 24 مايو 2011. تم الاطلاع عليه في 24 يونيو 2009 .
  3. موتاني، راجيف؛ راغافان، برابهاكار (1995). الخوارزميات العشوائية . مطبعة جامعة كامبريدج. ص 221. ISBN  0-521-47465-5.
  4. ديفيد واغنر، محرر. "التطورات في علم التشفير - CRYPTO 2008" . ص 145.
  5. جان فيليب أوماسون، ويلي ماير، رافائيل فان، لوكا هينزن. "دالة التجزئة بليك" . 2014. ص 10.
  6. ثورب، ميكيل (2015). "التجزئة عالية السرعة للأعداد الصحيحة والسلاسل النصية". arXiv : 1504.06804 [ cs.DS ].
  7. 1 2 باران، إيليا؛ ديمين، إريك د.؛ باتراسكو، ميهاي (2008). "الخوارزميات التربيعية لـ 3SUM" (PDF) . خوارزمية . 50 (4): 584-596 . دوى : 10.1007 / s00453-007-9036-3 . S2CID 9855995 . 
  8. ديتزفيلبينجر، مارتن؛ هاجيروب، توربن؛ كاتاجاينن، يركي؛ بينتونن، مارتي (1997). "خوارزمية عشوائية موثوقة لمسألة أقرب زوج" (ملحق) . مجلة الخوارزميات . 25 (1): 19-51 . doi : 10.1006/jagm.1997.0873 . تاريخ الاسترجاع: 10 فبراير 2011 .
  9. ^ ثوروب ميكيل (18 ديسمبر 2009). "خوارزميات الكتب النصية في SODA" .
  10. وولفيل، فيليب (1999). التجزئة القوية الشاملة الفعالة والتجزئة الشاملة المثلى . الأسس الرياضية لعلوم الحاسوب 1999. سلسلة محاضرات في علوم الحاسوب. المجلد 1672. الصفحات 262-272 . doi : 10.1007/3-540-48340-3_24 .  
  11. 1 2 3 4 ثوروب، ميكيل (2009). تجزئة السلسلة للتحقيق الخطي . بروك. الندوة العشرين لـ ACM-SIAM حول الخوارزميات المنفصلة (SODA) . ص 655 – 664. CiteSeerX 10.1.1.215.4253 . دوى : 10.1137/1.9781611973068.72 . رقم ISBN   978-0-89871-680-1.القسم 5.3
  12. 1 2 ديتزفيلبينجر، مارتن؛ جيل، جوزيف؛ ماتياس، يوسي؛ بيبنجر، نيكولاس (1992). دوال التجزئة متعددة الحدود موثوقة (ملخص موسع) . وقائع الندوة الدولية التاسعة عشرة حول الأتمتة واللغات والبرمجة (ICALP) . الصفحات 235-246 . 
  13. بلاك، ج.؛ هاليفي، س.؛ كراوتشيك، هـ.؛ كروفيتز، ت. (1999). UMAC: مصادقة الرسائل السريعة والآمنة (ملف PDF) . التطورات في علم التشفير (CRYPTO '99) .المعادلة 1
  14. باتراشكو، ميهاي ؛ ثورب، ميكيل (2011). قوة التجزئة الجدولية البسيطة . وقائع الندوة السنوية الثالثة والأربعين لجمعية آلات الحوسبة حول نظرية الحوسبة (STOC '11) . الصفحات 1-10 . arXiv : 1011.5200 . doi : 10.1145/1993636.1993638 . ISBN  9781450306911.
  15. 1 2 كاسر، أوين؛ ليمير، دانيال (2013). "التجزئة القوية الشاملة للسلاسل سريعة". مجلة الكمبيوتر . 57 (11). مطبعة جامعة أكسفورد: 1624-1638 . arXiv : 1202.4961 . doi : 10.1093/comjnl/bxt070 .
  16. "شرائح عرض دورة الجامعة العبرية" (ملف PDF) .
  17. روبرت أوزغاليس . "وظائف التجزئة المكتبية" . 1996.
  18. كانكوفسكي، بيتر. "وظائف التجزئة: مقارنة تجريبية" .
  19. يغيت، أوزان. "دوال التجزئة للسلاسل النصية" .
  20. كيرنيغان ؛ ريتشي (1988). "6" . لغة البرمجة سي ( الطبعة الثانية). برنتيس هول. ص 118. ISBN   0-13-110362-8.{{cite book}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط )
  21. "String (Java Platform SE 6)" . docs.oracle.com . تم الاطلاع عليه بتاريخ 10-06-2015 .

للمزيد من القراءة

  • كنوت، دونالد إرفين (1998). فن برمجة الحاسوب، المجلد الثالث: الفرز والبحث (  الطبعة الثالثة). ريدينغ، ماساتشوستس؛ لندن: أديسون-ويسلي. ISBN 0-201-89685-0.