Java 中的成对独立哈希函数
Pairwise independent hash functions in Java
我正在寻找一种在我的 Java 项目中使用 (universal) family of pairwise independent hash functions 的快捷方式。
理想情况下,我会有一些对象 UniversalFamily
(代表家庭),它会 return 我使用散列整数的方法 hash()
对象。
用法示例:
// use this object to generate pairwise independent hash functions
UniversalFamily family = new UniversalFamily();
// these objects represent the pairwise independent hash functions
HashF hashF1 = fam.getHashFunction();
HashF hashF2 = fam.getHashFunction();
// ...
/* here the hash functions are being used to hash the integers 1, 2 and
1337, the return values (not stored) are the results of the
corresponding hash functions. */
hashF1.hash(1);
hashF1.hash(2);
hashF2.hash(1337);
// ...
在我开始修修补补之前,是否有类似的东西可用?
使用这样的东西:
/* Used to generate and encapsulate pairwise independent hash functions.
See see https://people.csail.mit.edu/ronitt/COURSE/S12/handouts/lec5.pdf , claim 5 for more information.
*/
private static class HashF {
private final int a;
private final int b;
private final int p = 1610612741; // prime
HashF(int a, int b) {
Random rand = new Random();
this.a = rand.nextInt(p);
this.b = rand.nextInt(p);
}
// hashes integers
public int hash(int x) {
return (a*x + b) % p;
}
}
我正在寻找一种在我的 Java 项目中使用 (universal) family of pairwise independent hash functions 的快捷方式。
理想情况下,我会有一些对象 UniversalFamily
(代表家庭),它会 return 我使用散列整数的方法 hash()
对象。
用法示例:
// use this object to generate pairwise independent hash functions
UniversalFamily family = new UniversalFamily();
// these objects represent the pairwise independent hash functions
HashF hashF1 = fam.getHashFunction();
HashF hashF2 = fam.getHashFunction();
// ...
/* here the hash functions are being used to hash the integers 1, 2 and
1337, the return values (not stored) are the results of the
corresponding hash functions. */
hashF1.hash(1);
hashF1.hash(2);
hashF2.hash(1337);
// ...
在我开始修修补补之前,是否有类似的东西可用?
使用这样的东西:
/* Used to generate and encapsulate pairwise independent hash functions.
See see https://people.csail.mit.edu/ronitt/COURSE/S12/handouts/lec5.pdf , claim 5 for more information.
*/
private static class HashF {
private final int a;
private final int b;
private final int p = 1610612741; // prime
HashF(int a, int b) {
Random rand = new Random();
this.a = rand.nextInt(p);
this.b = rand.nextInt(p);
}
// hashes integers
public int hash(int x) {
return (a*x + b) % p;
}
}