node universal hash function
1.0.0
穩定性:1-實驗
通用哈希功能。
npm install universal-hash-function
如果惡意對手選擇通過某些固定的哈希功能將鍵進行哈希,則對手可以選擇所有哈希的n鍵,這些鍵將所有哈希都達到相同的插槽,從而產生O(n)的平均檢索時間。任何固定的哈希函數都容易受到如此可怕的最壞情況。改善情況的唯一有效方法是以獨立於實際要存儲的密鑰的方式隨機選擇哈希功能。無論對手選擇哪種鑰匙,這種稱為通用哈希的方法都可以平均產生良好的性能。 http://mitpress.mit.edu/books/introduction-algorithms
prime , numberOfHashSlots和someKey都是整數。
var uhf = require ( 'universal-hash-function' ) ;
// prime should be such that the greatest integer value of someKey should be
// less than prime
// uhf(prime, numberOfHashSlots);
var hashFunc1 = uhf ( 17 , 6 ) ;
var hashFunc2 = uhf ( 17 , 6 ) ;
var hashFunc3 = uhf ( 17 , 6 ) ;
// hashFunc(someKey)
hashFunc1 ( 0 ) ; // -> 2
hashFunc2 ( 0 ) ; // -> 1
hashFunc3 ( 0 ) ; // -> 5
hashFunc1 ( 1 ) ; // -> 3
hashFunc2 ( 1 ) ; // -> 5
hashFunc3 ( 1 ) ; // -> 1
hashFunc1 ( 2 ) ; // -> 5
hashFunc2 ( 2 ) ; // -> 2
hashFunc3 ( 2 ) ; // -> 3
// etc...