Search
雜湊函數
雜湊函數之相關名詞說明:
【桶,bucket】雜湊表中儲存資料的位置,每一位置給定一個唯一的位址,此位址稱為bucket address。
【槽,slot】每一個位置(桶)有多個資料儲存區,每一儲存區稱為槽(slot)。每一槽可以容納一筆記錄。
【碰撞,collision】當不同之鍵值經雜湊函數計算後,落在相同的位置(bucket address),稱之為碰撞。
【溢位,overflow】如有一鍵值經雜湊函數計算後,相對應之位置(桶,bucket)已裝滿,就稱為溢位。
中間平方法(mid-square)
此方法,鍵值平方後,取出中間某些位元當作資料儲存的位址。
【範例】假設有一鍵值k=510324。若儲存空間(桶數目)為104,也就是取四位數(0000~9999)。則雜湊函數h(k)
h(k)=k2取中間四位數=260430584976取中間四位數=3058
折疊法(folding)
此方法,是將鍵值分為數段,除最後一段外,其餘各段皆等長(等於儲存空間,桶數目)。然後,將各段相加,就可得所對應之位址。相加方式有兩種:
【位移折疊,shifting folding】將各段直接相加。
範例:鍵值123203241112205
à123,203,241,112,205à(+)à884 (hash address)
【邊界折疊,folding at the boundaries】將奇數段或偶數段反轉後相加。
範例:鍵值123203241112205
à123,203,241,112,205à(偶反轉)
à123,302,241,211,205à1082(hash address)
除法(Division)
此方法運用MOD運算,將鍵值X除以某一數值 M,取其餘數當作X的位址。這位址介於0~M-1間。一般M建議使用質數效果較佳(不會有因數消去之問題)。
h(X)= X mod M
【範例】假設有一鍵值數列{X}={15,29,52,100,200}。以除數M=13,則依h(X)= X mod M,建立之雜湊表為:
數字分析法(digital analysis)
此方法需先對資料鍵值之分佈情形詳細分析再設計雜湊函數,數字分析法有兩種:
【目視數字分析法】利用目視法,將鍵值各位數的分佈不均的數字刪除,其餘保留為雜湊位址(hash address)。
【統計數字分析法】運用統計方法分析鍵值各位數的分佈情形,求出雜湊位址(hash address)。