为啥墓碑桶可以用来插入?
Posted
技术标签:
【中文标题】为啥墓碑桶可以用来插入?【英文标题】:Why tombstone bucket can be used for insertion?为什么墓碑桶可以用来插入? 【发布时间】:2021-08-11 03:33:57 【问题描述】:https://research.cs.vt.edu/AVresearch/hashing/deletion.php
上面的网页是这么说的。
“如果在沿着探测序列搜索时遇到墓碑,则搜索过程继续进行搜索。当在插入过程中遇到墓碑时,该槽可用于存储新记录。”
我不太明白为什么第二句话有效。假设三个键 k1、k2、k3 都具有相同的哈希值。通过开放寻址线性探测,它们被插入到哈希表中。哈希表桶看起来像这样。 k1在哈希值指向的位置。
... k1 k2 k3 ...
现在删除 k1。哈希表变为如下,其中 T 表示一个墓碑。
... T k2 k3 ...
然后,我再次插入 k3,它先到达 T,然后使用它,所以我最终在哈希表中有两个 k3。这对我来说没有意义。
... k3 k2 k3 ...
谁能解释一下为什么第二句话有意义?
【问题讨论】:
【参考方案1】:“然后,我再次插入 k3”
与“当在插入过程中遇到墓碑时,可以使用该插槽来存储新记录。” - 这不是一个简单的if-then
规则在bucket-by-期间应用桶迭代;只有在更大的意义上,“插入期间”是指搜索过去的墓碑和现有但不同的元素,直到找到未使用的桶,如果确实到达未使用的桶但看到墓碑,那么只有这样才能你回去覆盖墓碑。
【讨论】:
以上是关于为啥墓碑桶可以用来插入?的主要内容,如果未能解决你的问题,请参考以下文章