关于计算正确的哈希大小的困惑

发布于 2024-11-17 11:10:30 字数 268 浏览 1 评论 0原文

我对选择正确的哈希大小有点困惑。举例来说,如果我想对 2^32 个值进行哈希处理,可以使用 32 位的哈希大小吗?会不会造成更多的碰撞?我在某处读到过有关平方根规则的内容。这是否意味着理想情况下我应该选择 64 位哈希大小?但这是否意味着存储哈希表所需的空间将用于存储 2^64 个值。 这是让我困惑的部分。根据定义,散列是减少密钥空间,但如果我在臃肿的 2^64 值空间中存储 2^32 个值……这听起来不太正确。我正在增加密钥空间。我想我误解了一些东西......任何帮助澄清这一点将不胜感激。

谢谢!

I am a bit confused on choosing the right hash size. Say for example if I want to hash 2^32 values, is it okay to use hash size of 32 bits? Would it cause more collisions? I read somewhere about the rule of square roots..Does it mean ideally I should choose a 64bit hash size? But then doesn't it imply that the space required for storing hashtable will be for ~ storing 2^64 values.
This is the part that confuses me. Hashing by definition is reducing the key space, but if I am storing 2^32 values in the bloated 2^64 values space...that doesn't sound right. I am increasing the keyspace. I guess I am misunderstanding something...any help to clarify this would be much appreciated.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傾城如夢未必闌珊 2024-11-24 11:10:30

维基百科说得最好:

哈希函数是将可变长度大型数据集(称为键)映射到固定长度的较小数据集的任何算法或子例程强>.

听起来这不像是您想要做的。听起来您正在尝试将 32 位键映射到 32 位值。哈希函数有许多可能的用途。您所描述的似乎不是哈希函数的理想用例。

Wikipedia says it best:

A hash function is any algorithm or subroutine that maps large data sets of variable length, called keys, to smaller data sets of a fixed length.

It does not sound like this is what you are trying to do. It sounds like you are trying to map a 32-bit keys to 32-bit values. There are many possible uses for a hash function. What you are describing doesn't seem like an ideal use case for a hash function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文