algorithm - 散列中的聚类(在碰撞中)是什么意思?

标签 algorithm data-structures hash linear-probing

线性探测的主要问题是聚类,许多连续的元素形成组,开始需要时间来寻找空闲槽或搜索元素。

为什么组中的连续元素以及它如何影响找到空闲槽的时间?

最佳答案

散列函数的预期输出是将 100 个字符串随机分散到 200 个“pigeonslots”上。如果发生冲突,即已经占用的插槽,线性扫描将搜索下一个未占用的插槽,立即组成至少两个组(它也可以连接两个组)。当集群发生冲突时,线性探测会通过一个新键添加集群,其原始位置应该在集群中的任何位置。

许多快速求值的哈希函数都存在键分布不均的问题。当输入数据分布不均匀时,这两种现象相互强调,在线性探测的情况下可能会导致大量键聚类。实际上,这不仅会导致插入,还会搜索 O(n) 问题而不是 O(1)。

关于algorithm - 散列中的聚类(在碰撞中)是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45921311/

相关文章:

algorithm - 百分比负载平衡线程请求

arrays - 如何在两个排序数组的并集中找到第 k 个最小的元素?

java - 两个排序数组中的第 K 个最小元素 - 错误

java - 使用二分查找高效地获取排序数组中小于给定数字的数字计数

python - 从 .txt 文件工作以在 Python 中输出 sha256 哈希

multithreading - Perl 线程 - 共享哈希引用

java - 为什么Eclipse生成的hashCode()方法返回的哈希码不太好?

c++ - 加减一组数字以达到一个值

algorithm - 使图强连通的线性时间算法

data-structures - ArrayAppend 返回 bool 值而不是数组