雜湊表 雜湊函式構建和衝突處理

2021-08-07 13:41:54 字數 1794 閱讀 1086

雜湊法又稱雜湊法、雜湊法以及關鍵字位址計算法等,相應的表稱為雜湊表。

基本思想是:首先在元素的關鍵字k和元素的儲存位置p之間建立乙個對應關係f,使得p=f(k),f稱為雜湊函式。建立雜湊表時,把關鍵字為k的元素直接存入位址為f(k)的單元;

以後當查詢關鍵字為k的元素時,再利用雜湊函式計算出該元素的儲存位置p=f(k),從而達到按關鍵字直接訪問元素的目的。

當關鍵字集合很大時,關鍵字值不同的元素可能會映象到雜湊表的同一位址上,即 k1≠k2 ,但 h(k1)=h(k2),這種現象稱為衝突,此時稱k1和k2為同義詞。實際中,衝突是不可避免的,只能通過改進雜湊函式的效能來減少衝突。

一、 雜湊函式構建

原則:①函式本身便於計算;②計算出來的位址分布均勻,即對任一關鍵字k,f(k) 對應不同位址的概率相等,目的是盡可能減少衝突

1 數字分析法:

如果事先知道關鍵字集合,並且每個關鍵字的位數比雜湊表的位址碼位數多時,可以從關鍵字中選出分布較均勻的若干位,構成雜湊位址。

2 平方取中法:

當無法確定關鍵字中哪幾位分布較均勻時,可以先求出關鍵字的平方值,然後按需要取平方值的中間幾位作為雜湊位址。這是因為:平方後中間幾位和關鍵字中每一位都相關,故不同關鍵字會以較高的概率產生不同的雜湊位址。

3 分段疊加法:

這種方法是按雜湊表位址位數將關鍵字分成位數相等的幾部分(最後一部分可以較短),然後將這幾部分相加,捨棄最高進製後的結果就是該關鍵字的雜湊位址。具體方法有摺疊法與移位法。移位法是將分割後的每部分低位對齊相加,摺疊法是從一端向另一端沿分割界來回摺疊(奇數段為正序,偶數段為倒序),然後將各段相加。

4 除留餘數法:

假設雜湊表長為m,p為小於等於m的最大素數,則雜湊函式為

h(k)=k % p ,其中%為模p取餘運算。

5 偽隨機數法:

採用乙個偽隨機函式做雜湊函式,即h(key)=random(key)。

二、 衝突處理

通過構造效能良好的雜湊函式,可以減少衝突,但一般不可能完全避免衝突,因此解決衝突是雜湊法的另乙個關鍵問題。建立雜湊表和查詢雜湊表都會遇到衝突,兩種情況下解決衝突的方法應該一致。

1 開放定址法

這種方法也稱再雜湊法,其基本思想是:當關鍵字key的雜湊位址p=h(key)出現衝突時,以p為基礎,產生另乙個雜湊位址p1,如果p1仍然衝突,再以p為基礎,產生另乙個雜湊位址p2,…,直到找出乙個不衝突的雜湊位址pi ,

l 線性探測再雜湊

di=1,2,3,…,m-1
l 二次探測再雜湊

di=1^2,-1^2,2^2,-2^2,…,k^2,-k^2    ( k<=m/2 )

這種方法的特點是:衝突發生時,在表的左右進行跳躍式探測,比較靈活。

l 偽隨機探測再雜湊

di=偽隨機數序列。
具體實現時,應建立乙個偽隨機數發生器,(如i=(i+p) % m),並給定乙個隨機數做起點。

2 再雜湊法

這種方法是同時構造多個不同的雜湊函式:

當雜湊位址hi=rh1(key)發生衝突時,再計算hi=rh2(key)……,直到衝突不再產生。這種方法不易產生聚集,但增加了計算時間。

3 鏈位址法

這種方法的基本思想是將所有雜湊位址為i的元素構成乙個稱為同義詞鏈的單鏈表,並將單鏈表的頭指標存在雜湊表的第i個單元中,因而查詢、插入和刪除主要在同義詞鏈中進行。鏈位址法適用於經常進行插入和刪除的情況。

4 建立公共溢位區

這種方法的基本思想是:將雜湊表分為基本表和溢位錶兩部分,凡是和基本表發生衝突的元素,一律填入溢位表

雜湊 雜湊函式 衝突處理

例 如果我們現在要統計的是80後出生年份的人口數,那麼我們對出生年份這個關鍵字可以用年份減去1980來作為位址。此時f key key 1980。這樣的雜湊函式優點就是簡單 均勻,也不會產生衝突,但問題是這需要事先知道關鍵字的分布情況,適合查詢表較小且連續的情況。由於這樣的限制,在現實應用中,直接定...

雜湊表 雜湊函式 雜湊衝突與解決

雜湊表 通過關鍵碼來對映到值的乙個資料結構 雜湊函式 鍵與值對映的乙個對映關係 常用方法 1 直接定址法 f x kx b k b都是常數 一旦確定了雜湊函式,那麼新增 獲取元素都需要通過這個雜湊函式 2 除留餘數法 f x x k k是常數,k m m為儲存位置長度 其他幾種方法 方法名說明 適合...

雜湊表,雜湊衝突

什麼是雜湊表?雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。關鍵字 雜湊函式 雜湊函式 雜湊位址 優點 一對一的查詢...