Neden tuple (set ([1, "a", "b", "c", "z", "f"])) == tuple (set (["a", "b", "c", "Z", "f", 1])) Hash randomizasyon etkinken% 85?


Yanıtlar:


128

Bu sorunun herhangi bir okuyucusunun her ikisini de okuduğunu varsayacağım:

Dikkat edilmesi gereken ilk şey, karma randomizasyonun yorumlayıcı başlangıcında kararlaştırılmasıdır.

Her harfin hash değeri her iki set için de aynı olacaktır, bu nedenle önemli olabilecek tek şey bir çarpışma olup olmadığıdır (burada sipariş etkilenecektir).


Bu ikinci bağlantının çıkarımlarından, bu kümeler için destek dizisinin 8 uzunluğunda başladığını biliyoruz:

_ _ _ _ _ _ _ _

İlk durumda, ekliyoruz 1:

_ 1 _ _ _ _ _ _

ve sonra gerisini ekleyin:

α 1 ? ? ? ? ? ?

Sonra 32 beden olacak şekilde yeniden yüklenir:

    1 can't collide with α as α is an even hash
  ↓ so 1 is inserted at slot 1 first
? 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

İkinci durumda, gerisini ekliyoruz:

? β ? ? ? ? ? ?

Ve sonra 1'i eklemeyi deneyin:

    Try to insert 1 here, but will
  ↓ be rehashed if β exists
? β ? ? ? ? ? ?

Ve sonra yeniden yazılacak:

    Try to insert 1 here, but will
    be rehashed if β exists and has
  ↓ not rehashed somewhere else
? β ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Dolayısıyla, yineleme sıralarının farklı olup olmadığı yalnızca β'nin var olup olmadığına bağlıdır.


Bir of şansı, 5 harften herhangi birinin 1 modulo 8'e ve 1 modulo 32'ye hash olma şansıdır.

1 modulo 32'ye hash olan herhangi bir şey aynı zamanda 1 modulo 8'e de hash hale getirdiğinden, 32 slottan birinin, slot 1'de olma şansını bulmak istiyoruz:

5 (number of letters) / 32 (number of slots)

5/32 0.15625'dir, dolayısıyla iki set yapı arasında siparişlerin farklı olma şansı% 15.625'dir .


Hiç de garip değil, bu tam olarak Zero Piraeus'un ölçtüğü şeydi.


¹Teknik olarak bu bile açık değil. Yeniden düzenleme nedeniyle 5 karmanın her birini benzersiz bir şekilde varsayabiliriz, ancak doğrusal sondalama nedeniyle aslında "gruplanmış" yapıların oluşması daha olasıdır ... ancak yalnızca tek bir yuvanın dolu olup olmadığına baktığımız için, bu olmaz Aslında bizi etkilemiyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.