Com métodos convencionais de resolução de colisões, como encadeamento separado e sondagem linear / quadrática, a sequência da sonda para uma chave pode ser arbitrariamente longa - ela é simplesmente mantida curta com alta probabilidade, mantendo o fator de carga da tabela baixo. As colisões durante a reaplicação, portanto, não são um problema, pois não afetam o fator de carga.
No entanto, com o hash do cuco (e outros métodos que oferecem o pior tempo de pesquisa O (1)?), Um redimensionamento deve ocorrer quando a sequência de análise de uma chave fica muito longa. Mas quando as chaves são embaralhadas durante a repetição, pode ser que elas criem uma sequência de sondagem muito longa para uma chave, necessitando de outro redimensionamento - possivelmente várias, se isso acontecer várias vezes seguidas. A probabilidade é pequena, especialmente com uma boa função de hash, mas já vi isso acontecer.
Existe uma maneira - além de gerar explicitamente uma função de hash perfeita durante a reformulação - para garantir que os redimensionamentos não possam ser cascateados dessa maneira? Possivelmente específico para um determinado esquema de resolução de colisões? A literatura que encontrei até agora parece encobrir completamente o assunto. Lembre-se de que eu também estou interessado em reduzir tabelas de hash, não apenas cultivá-las.
fonte