1. 程式人生 > >CLRS 11.4開放定址法

CLRS 11.4開放定址法

11.4-1
只給出結果,如下:
這裡寫圖片描述

11.4-2

HASH-DELETE(T,k)
    i=0
    repeat
        j = h(k,i)
        if ( T[j] == k )
            T[j] = DELETED
            return
        i = i + 1
    until T[j] == NIL or i == m
    return

HASH-INSERT(T, k)
    i = 0
    repeat
        j = h(k,i)
        if ( T[j] == NIL or T
[j] == DELETED ) T[j] = k return j else i = i + 1 until i == m error "hash table overflow"

11.4-3
由定理11.6和11.8可得一次不成功查詢和一次成功查詢探查的期望上界分別是 1/(1α),1αln11α,帶入 α得:
α=3/4 時不成功查詢、成功查詢上界分別是 4,1.85
α=7/8 時不成功查詢、成功查詢上界分別是 8,2.38

11.4-4
在返回 h1(k) 之前要檢查散列表中的第 1/d 個元素,即 m

/d 個。
現設 m=ad,h2(k)=bd,顯然 a,b 互質(因為 m,h2(k) 的最大公約數是 d),且 [h2(k)m/d]modm=[bdad/d]modad=0
因為 d 是最大公約數,所以不存在 j<m/d 使得 [h2(k)j]modm=0。因此當 d=1m,h2(k) 互質且要檢查整個散列表。

11.4-5
直接列出等式 11α=2αln11α,解方程得 α=0.715