当我遇到这个问题时,我正在为我的决赛学习 对于1a,我认为它的O(1)是为了分摊复杂性,因为它确实x mod N足够稀疏并且线性探测使它失败 但是我不确定如何陈述或证明这一点。
对于1b,它将散列到相同的位置,因此每次插入时它将线性探测更多,但我不确定如何从中导出运行时。
答案 0 :(得分:1)
[已编辑,我的原始分析是针对打开的散列未打开寻址]对于1a)h(x)= x mod N,n< N,所以哈希值将是0,1,...,n - 2,0。除了最后一个插入之外,所有插入都是无冲突的。最后一次插入将使用线性探针。第一个探测器进入存储桶0,但它被采用并且密钥不同。下一个探测器位于插槽1,结果相同,直到它到达(n-1)处的第一个空桶。因此,你需要(n - 1)额外的操作总共(2n - 1)。每次插入的摊销成本为(2n - 1)/ n。
对于1b),哈希表退化为链表。插入在大小上是线性的,有n次插入,因此总共有(n + 1)* n / 2次操作。那是每次插入的(n + 1)/ 2。
答案 1 :(得分:1)
1b,第i次插入会发生(i-1)次冲突,加上插入操作,第i次操作的成本为i。所以总成本为1 + 2 + ... + n-2 + n-1 + n =(n + 1)* n / 2,你已插入n次,摊销成本为(n + 1) / 2。