Con i metodi convenzionali di risoluzione delle collisioni come il concatenamento separato e il sondaggio lineare / quadratico, la sequenza della sonda per una chiave può essere arbitrariamente lunga - viene semplicemente mantenuta breve con un'alta probabilità mantenendo basso il fattore di carico della tabella. Le collisioni durante il rimodellamento non sono quindi un problema in quanto non influiscono sul fattore di carico.
Tuttavia, con l'hash del cuculo (e altri metodi che offrono il tempo di ricerca O (1) nel caso peggiore?), Un ridimensionamento deve avvenire quando la sequenza della sonda per un tasto diventa troppo lunga. Ma quando i tasti vengono rimescolati durante il rehash, è possibile che creino una sequenza sonda troppo lunga per un tasto, richiedendo un altro ridimensionamento, possibilmente diversi, se ciò accade più volte di seguito. La probabilità è piccola, specialmente con una buona funzione hash, ma l'ho visto accadere.
Esiste un modo - a parte quello di generare esplicitamente una funzione hash perfetta durante il rehash - per garantire che i ridimensionamenti non possano essere messi in cascata in questo modo? Forse specifico per un determinato schema di risoluzione delle collisioni? La letteratura che ho incontrato finora sembra sorvolare completamente la questione. Tieni presente che sono anche interessato a ridurre le tabelle hash, non solo a farle crescere.