了解CLRS上的Universal哈希章节

时间:2011-10-31 16:44:31

标签: algorithm hash clrs universal-hashing

您好我正在阅读有关CLRS上的通用哈希的章节。

第234页

推论11.4

  

通过链接来使用通用散列和冲突解决方案   有m个插槽的表,需要预期的时间Theta(n)来处理任何一个   包含O(m)的n INSERT,SEARCH和DELETE操作的序列   INSERT操作。

我有点想法,但我很难理解这句英语句子。结尾“包含O(m)INSERT操作”是什么意思?

是否意味着已经执行了n = O(m)插入。然后,......我不知道。我无法解析这句话。第一个INSERT和第二个INSERT之间有什么区别?

我想听听你的意见。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为n插入,搜索和删除操作只有一个序列,但参数m用于限制允许在这n个操作中放置的插入操作的数量。假设你有一个大小为10的表,所以m = 10,然后你设置n = 1 000 000,前500 000个操作插入,接下来500 000搜索不在表中的项目。然后表现会非常糟糕,因为这个表会有大约10万个项链。

因此,如果你有一个带有m个槽的表,那么该定理只允许你进行m次插入操作,这样表就不会超过m个项,并且链不会太长,并且所有的操作都是几乎是O(1) - 在上面的示例中,您只能有大约10个插入操作,因此其他999 990操作必须是搜索或删除。

答案 1 :(得分:0)

说“O(m)”INSERT操作意味着序列中有C*m+B个INSERT操作,其中m是插槽数。

在具有m个插槽的表上有n个操作序列。 INSERT操作的数量与插槽的数量成正比(无论序列的长度如何),而不是操作的数量。

换句话说,只有当插入的数量不是n的某个函数时(例如,序列中的一半操作是插入),预期时间才是theta(n),而是插槽数量的线性函数,它不会随着序列的长度而增长。