بالإضافة إلى التسلسلات ، يمكنك أيضًا تجزئة المجموعات. أي ، مجموعات من الأشياء بدون ترتيب عليها. يتم حسابه وفقًا للصيغة التالية:
hash (A) = & nbsp؛ \ (\ sum_ {a \ in A} p ^ {ord (a)} \) & nbsp؛ على & nbsp ؛ العلامة & lt ؛ - عد كل شيء modulo
حيث ord هي وظيفة تُسند إلى كائن من المجموعة رقمها الترتيبي المطلق بين جميع الكائنات الممكنة (على سبيل المثال ، إذا كانت الكائنات أرقامًا طبيعية ، فعندها ord (x) = x ، وإذا كانت الأحرف اللاتينية صغيرة ، ثم ord (& # 39 ؛ a & # 39 ؛) = 1 ، أمر (& # 39 ؛ ب & # 39 ؛) = 2 وما إلى ذلك)
أي ، لكل كائن ، نربط قيمة مساوية للقاعدة بقوة رقم هذا الكائن ونلخص كل هذه القيم من أجل الحصول على تجزئة للمجموعة بأكملها. كما هو واضح من الصيغة ، يمكن إعادة حساب التجزئة بسهولة إذا تمت إضافة عنصر إلى المجموعة أو إزالتها منها (فقط قم بإضافة أو طرح القيمة المطلوبة). نفس المنطق ، & nbsp؛ إذا لم تتم إضافة عناصر مفردة أو إزالتها ، ولكن هناك مجموعات أخرى (فقط قم بإضافة / طرح التجزئة الخاصة بهم).
كما يمكنك أن تفهم بالفعل ، تعتبر العناصر الفردية مجموعات من الحجم 1 ، والتي يمكننا حساب التجزئة لها. والمجموعات الأكبر هي ببساطة اتحاد لمثل هذه المجموعات المفردة ، حيث من خلال دمج المجموعات ، نضيف تجزئاتها.
في الواقع ، لا يزال هذا هو نفس تجزئة متعدد الحدود ، ولكن قبل المعامل عند p m & nbsp ؛، كان لدينا القيمة لعنصر التسلسل تحت الرقم n - m - 1 (حيث n هو طول التسلسل) ، والآن هذا هو عدد العناصر في المجموعة التي يساوي عددها الترتيبي المطلق م.
في مثل هذا التجزئة ، يجب على المرء أن يأخذ قاعدة كبيرة بما فيه الكفاية (أكبر من الحد الأقصى لحجم المجموعة) ، أو يستخدم التجزئة المزدوجة لتجنب المواقف التي يكون فيها لمجموعة من الكائنات p ذات العدد الترتيبي المطلق m نفس التجزئة كمجموعة مع كائن واحد مع مطلق عدد ترتيبي م + 1.
نبسب ؛