Riutilizzo di funzioni hash indipendenti da 5 per il sondaggio lineare


14

Nelle tabelle hash che risolvono le collisioni mediante sondaggio lineare, al fine di garantire la prestazione prevista , è sia necessario che sufficiente che la funzione hash provenga da una famiglia indipendente da 5. (Sufficienza: "Sondaggio lineare con indipendenza costante", Pagh et al. , Necessità: "Sulla k-indipendenza richiesta da Linear Probing e Minwise Indipendenza", Pătraşcu e Thorup )O(1)

Comprendo che le famiglie 5 indipendenti più conosciute utilizzano la tabulazione. Scegliere una funzione da una famiglia del genere può essere costoso, quindi vorrei ridurre al minimo il numero di volte che lo faccio, pur continuando a prevenire attacchi di complessità algoritmica come descritto in "Denial of Service tramite attacchi di complessità algoritmica" di Crosby e Wallach . Sono meno preoccupato per gli attacchi di cronometraggio (cioè avversari con cronometri). Quali sono le conseguenze del riutilizzo della stessa funzione:

  1. Quando si coltiva una tabella hash troppo piena?
  2. Quando si restringe una tabella hash che non è abbastanza piena?
  3. Quando si ricostruisce una tabella hash con troppi bit "eliminati" impostati?
  4. In tabelle hash diverse che possono contenere alcune chiavi in ​​comune?K
  5. In tabelle hash diverse che non contengono chiavi in ​​comune?K

Se questa è una domanda sulla pratica ... un approccio pragmatico plausibile è usare una funzione hash crittografica, con un segreto casuale incluso nell'input, invece di usare uno schema basato sulla tabulazione. Quindi c'è meno pressione per riutilizzare la stessa funzione hash; puoi usare un segreto diverso per ogni tabella di hash (e cambiare il segreto e ripassare tutto, quando riduci / cresci / ricostruisci la tabella di hash).
DW,

Penso che anche funzioni di hash crittografiche veloci su input brevi come SipHash-2-4 siano piuttosto lente rispetto anche a 5 famiglie indipendenti che usano i polinomi.
jbapple

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.