Sekanslara ek olarak, kümeleri de karma yapabilirsiniz. Yani, üzerinde herhangi bir düzen olmayan nesne kümeleri. Aşağıdaki formüle göre hesaplanır:
hash(A) = \(\sum_{a \in A} p^{ord(a)}\) <- her şeyi sayma modulo
burada ord, kümenin bir nesnesine tüm olası nesneler arasında mutlak sıra sayısını atayan bir işlevdir (örneğin, nesneler doğal sayılarsa, o zaman ord(x) = x ve küçük Latin harfleri ise o zaman ord(& #39;a') = 1, sıra('b') = 2 vb.)
Yani, her nesne için, bu nesnenin sayısının gücüne tabana eşit bir değer ilişkilendiririz ve tüm kümenin bir karmasını elde etmek için tüm bu değerleri toplarız. Formülden de anlaşılacağı gibi, kümeye bir öğe eklenirse veya kümeden çıkarılırsa (sadece gerekli değeri ekleyin veya çıkarın) hash kolayca yeniden hesaplanır. Aynı mantık, tek öğeler eklenmez veya kaldırılmazsa, ancak diğer kümeler eklenirse (sadece hashlerini ekleyin / çıkarın).
Zaten anlayabileceğiniz gibi, tek öğeler, hash'i hesaplayabileceğimiz 1 boyutlu kümeler olarak kabul edilir. Ve daha büyük kümeler, bu tür tekli kümelerin bir birleşimidir; burada kümeleri birleştirerek hashlerini ekleriz.
Aslında, bu hala aynı polinom hash'idir, ancak pm 'deki katsayıdan önce şu değere sahibiz: dizi elemanının n - m - 1 (burada n, dizinin uzunluğudur) ve şimdi bu, kümedeki mutlak sıra numarası m'ye eşit olan öğelerin sayısıdır.
Bu tür karmada, kişi yeterince büyük bir taban almalı (maksimum küme boyutundan daha büyük) veya mutlak sıra numarası m olan bir p nesnesi kümesinin, mutlak sıra numarası olan bir nesneli bir kümeyle aynı karma değerine sahip olduğu durumlardan kaçınmak için çift karma kullanmalıdır. sıra numarası m+1.