algorithm - 什么散列函数在对 n 个键进行散列时产生最大碰撞次数?

标签 algorithm hash collision-detection collision hash-collision

我的问题与碰撞有关。散列 n 个键可能导致的最大冲突次数是多少?我相信你可以通过n-1找到它。但我不确定这是否正确。我特别想找出一个会产生那么多冲突的哈希函数。我只是很难理解这个问题的概念。任何有关该主题的帮助将不胜感激!

最佳答案

最大碰撞次数等于您散列的项目数。


例子:

哈希函数:h(x) = 3

所有项目都将散列到 key 3。


请注意,键的数量,在您的情况下为 n,不会影响答案,因为无论您有多少键,您的项目总是使用上面提供的 h(x) 在 key 3 中进行哈希处理。


可视化:

通常,散列看起来像这样:

enter image description here

但是如果我想有最大的碰撞次数,那么,通过使用上面提供的h(x),我会得到我所有的项目(图片中的名字)都散列到改变相同的 key ,即 key 3。

所以在那种情况下,最大冲突次数是名称的数量,5。

关于algorithm - 什么散列函数在对 n 个键进行散列时产生最大碰撞次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375600/

相关文章:

查找一组 git 项目何时损坏的算法?

arrays - 笛卡尔幂(一种特殊的笛卡尔积)——以可重复的方式从数组中选择元素

php - 我可以存储散列的电话号码并将其未散列发送到电子邮件吗?

java - java中的砖 block 碰撞突破

java - LWJGL 碰撞 3D OpenGL

c++ - C++合并排序可视化器

algorithm - Batcher 的奇偶合并排序

hash - 是否有 2 位或 3 位校验和算法

perl - 如何将哈希插入到 Perl 中的哈希中

Java 更有资源的碰撞检测