#完美哈希 #哈希 #完美 #键集 #最小化

boomphf-patched

可扩展和高效的最低完美哈希函数(由Piotr Beling修改的版本)

1个不稳定版本

0.5.9+1 2022年12月5日
0.5.9-0 2022年12月11日

#1185 in 算法


mphf_benchmark中使用

MIT许可证

68KB
1.5K SLoC

警告

这是由Piotr Beling稍微修改的(为基准测试目的)版本boomphf,由Patrick Marks编写。请使用原始版本而不是这个版本。

Rust中的快速和可扩展最低完美哈希函数

A Rust实现适用于大规模键集的快速和可扩展的最低完美哈希

该库为可哈希对象集合生成最小完美哈希函数(MPHF)。此算法生成的MPHF消耗约3-6位/项。构造过程中的内存消耗是数据集大小和MPHF最终大小的很小倍数(< 2x)。注意,最小完美哈希函数仅对创建MPHF时使用的集合中的对象返回可用的哈希值。哈希新对象将返回任意哈希值。如果您的用例可能导致哈希新值,您需要一个辅助方案来检测此条件。

文档

示例用法

use boomphf::*;

// sample set of obejcts
let possible_objects = vec![1, 10, 1000, 23, 457, 856, 845, 124, 912];
let n = possible_objects.len();

// generate a minimal perfect hash function of these items
let phf = Mphf::new(1.7, possible_objects.clone(), None);

// Get hash value of all objects
let mut hashes = Vec::new();
for v in possible_objects {
    hashes.push(phf.hash(&v));
}
hashes.sort();

// Expected hash output is set of all integers from 0..n
let expected_hashes: Vec<u64> = (0 .. n as u64).collect();
assert!(hashes == expected_hashes)

注意:此包自带位向量实现,以支持rank-select查询和多线程读写访问。

依赖项

~1.5MB
~32K SLoC