假设我们事先知道键和分布,并且我们想要构建快速查找字典。我们插入并且从不删除项目。
例如这里有频率的键
- xyz 1000
- 美国广播公司 5
- 20 岁左右
好的散列只是第一个字符的一些函数,它将 xyz 映射到 1 个存储桶,并将 abc,abd 映射到存储桶 2。 xyz 主导分布,因此我们专注于此。仅查看 1 个字符比查看所有 3 个字符要快。此外,在查找存储桶中的元素数量为 1 时,我们确定要查找的键必须在该存储桶中。无需将 xyz 与 xyz 进行比较。
由于我们事先知道密钥和分布,我们可以使用完美的散列,但是散列函数可能会很慢。
我不是在寻找最佳解决方案,而是在寻找实用的解决方案。