当前位置: 首页 > 知识库问答 >
问题:

如何基于开放寻址找到以下哈希表的答案?

鲜于玮
2023-03-14

哈希表有m个插槽,并使用带线性探测的开放寻址来解决冲突。桌子一开始是空的。将键k1插入表中,接着是k2,然后是k3。解释插入这些键时有4个探针的条件?得到4个探针的概率是多少?

共有1个答案

萧德馨
2023-03-14

实际上,这不是你家庭作业的地方,下次当你发布一个问题时,分析它,请关注研究型问题

然而,我创建了一些图表,希望它会有所帮助,

这里有完整的问题和答案图表:kelums。wordpress。通用域名格式

1如果前2个键相撞

图1:www.kelums。文件夹。wordpress。com/2014/01/1。巴布亚新几内亚

2如果前2个键不相撞,第1个键第3个键相撞

图2:www.kelums。文件夹。wordpress。com/2014/01/2。巴布亚新几内亚

3如果第一个2键不碰撞,第二个键第三个键碰撞:

图3:www.kelums。文件夹。wordpress。com/2014/01/3。巴布亚新几内亚

资料来源:麻省理工学院讲义

由于每个元件的插入需要至少一个(在这个术语上它只有一个)探针,对于有4个探针,需要有至少一个碰撞。

如果前两个键发生冲突,我们甚至不需要知道第三个键散列到哪里——已经发生了冲突。前两个关键点碰撞的概率为1/m。

如果前两个键没有冲突,那么第三个键需要散列到前两个键散列到的两个插槽之一,以便发生冲突。发生这种情况的概率是前两个密钥不冲突的概率和第三个密钥进入前两个密钥散列到的两个时隙之一的概率的乘积:(m-1)/m*2/m

至少有4个探针的总概率为1/m(m-1)/m*2/m

 类似资料:
  • 我有一个有130000个元素的数据集,我有两种不同的数据结构,即双链表和哈希表。当将数据集元素插入链表时,我使用尾指针将节点放在列表的末尾。当将数据集元素插入哈希表时,我受益于带有探测功能的开放式寻址方法。我面临数据集中最后10个元素的110000次冲突。 然而,两种不同数据结构的插入总运行时间之差等于0.0981秒。 链接列表=0.028521秒 哈希表=0.120102秒 指针操作很慢还是探测

  • 问题内容: 我对哈希表的基本概念感到困惑。如果我要编码一个哈希,我什至会开始吗?哈希表和普通数组之间有什么区别? 基本上,如果有人回答了这个问题,我想我的所有问题都会得到回答:如果我有100个随机生成的数字(作为键),那么我将如何实现哈希表,以及为什么它比数组有优势? 伪代码或Java将被视为一种学习工具… 问题答案: 到目前为止的答案已经帮助定义了哈希表并解释了一些理论,但是我认为一个示例可能会

  • 问题内容: 我正在使用网络爬虫(请不要建议现有的,这不是一种选择)。我按照预期的方式工作。我唯一的问题是,当前我正在使用一种服务器/客户端模型,其中服务器进行爬网和处理数据,然后将其放置在中央位置。 此位置是从我编写的类创建的对象。在内部,该类维护一个定义为 我将数据存储在地图中,使网址成为键(我保持这些网址唯一),而hasmap值存储该网址的相应数据字段,例如标题,值等 我偶尔会序列化所使用的内

  • 我刚刚开始学习哈希表,我知道如何插入,但不知道如何搜索。以下是我将基于这个问题的算法: 散列密钥 线性探测碰撞分辨率。 假设我用键1、11和21调用两次插入。这将返回所有3个键的槽1。冲突解决后,表在槽1、2和3处将有值1、11和21。这就是我对插入的理解。 完成此操作后,如果搜索键11和21,我将如何获得插槽2和3?从我所读到的内容来看,搜索哈希表应该做与插入完全相同的事情,除非当你到达所需的插

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加