您好我正在阅读有关CLRS上的通用哈希的章节。
第234页
推论11.4
通过链接来使用通用散列和冲突解决方案 有m个插槽的表,需要预期的时间Theta(n)来处理任何一个 包含O(m)的n INSERT,SEARCH和DELETE操作的序列 INSERT操作。
我有点想法,但我很难理解这句英语句子。结尾“包含O(m)INSERT操作”是什么意思?
是否意味着已经执行了n = O(m)插入。然后,......我不知道。我无法解析这句话。第一个INSERT和第二个INSERT之间有什么区别?
我想听听你的意见。
谢谢!
答案 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),而是插槽数量的线性函数,它不会随着序列的长度而增长。