鏈式哈希命中查找運行時間數學證明

    《算法導論》中關於鏈式哈希命中查找運行時間數學證明,一上來就給出公式沒看明白,在網上搜了一圈沒找到解答心中疑問的文字,於是寫下這篇。

    題目是計算在鏈式哈希表中,在均勻散列的情況下,命中查找的運行時間。

    分析:命中查找的運行時間,就是一個鍵數目n的函數,按照成本模型便是求命中查找的比較次數隨n增長的增長率,即比較次數爲n的函數T(n)。

    設要查找鍵a,a被散列到b鏈表中。命中查找的比較次數爲b鏈表中排在a前面的元素個數+1.於是題目被轉化爲鍵a被插入到b鏈表後,後續插入的所有鍵被散列到b鏈表的個數+1。

設隨機變量X表示鍵a被插入到b鏈表後,後續插入的所有鍵被散列到b鏈表的個數。

設隨機變量Yi表示第i次插入鍵時,鍵被散列到b鏈表中的指示器隨機變量。(指示器隨機變量即當事件發生時爲1,不發生時爲0.這裏表示第i次插入鍵時,鍵被散列到b鏈表中爲1,散列到其他鏈表中爲0)

設隨機變量Zi表示第i次插入鍵時,選中a作爲插入的鍵的指示器隨機變量。

X = ∑<i從1到n>(Zi ∑<k從i+1到n>Yk)        ①

E[Zi] = 1/n                                             ②

E[Yi] = 1/m                                            ③

由上3式得

E[X] = ............ 此處省略20行 ............ = (n-1)/(2m)

題目所求期望即爲1 + (n-1)/(2m) = 1 + α/2 - α/(2n)

T(n) = θ(1 + α)    

                                                                                                ■

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章