雜湊表之二雜湊函式的構造

2021-09-08 13:10:15 字數 969 閱讀 1435

了解了hash的思想之後,會發現雜湊函式只是將關鍵字對下標的對映,沒有什麼特別的標準,衝突的多少就是衡量其好壞。

若對於關鍵字集合中的任一乙個關鍵字,經雜湊函式映像到位址集合中任何乙個位址的概率是相等的,

則稱此類雜湊函式為均勻的(uniform)雜湊函式

如果關鍵字能夠進過雜湊函式計算得出的位址能夠均勻地分布在位址區間中,就可以減少衝突。

直接定位址法

h(key)=key或h(key)=a*key+b

直接定址所得位址集合和關鍵字集合的大小相同,對於不同關鍵字不會發生衝突,但是實際使用較少

數字分析法

將關鍵字轉為位數,取其中最不衝突的位數為雜湊值,可以疊加求和然後捨去進製作為雜湊值

平方取中法

取關鍵字平方後的中間幾位為雜湊位址

乙個數字平方後的中間幾位和每一位都有關係,由此適用隨機分布的關鍵字得到的雜湊位址也是隨機的

摺疊法將關鍵字分割成位數相同的幾部分(最後一部分的位數可以不同),然後取這幾部分疊加並捨去進製作為雜湊位址

關鍵字位數很多,而且關鍵字每一位上數字分布大致均勻時,可採用摺疊法得到雜湊位址

除留餘數法

h(key)=key mod p, p<=m 

m是雜湊表表長,此為最簡單中最常用的構造雜湊函式的方法,不僅可以直接取模,還可以通過摺疊、平方取中後再取模;p的選擇為質數或者不小於20的質因子的合數

隨機數法

選擇乙個隨機函式,取關鍵字的隨機函式值作為它的雜湊位址,h(key)=random(key),其中random為隨機函式 

通常關鍵字長度不相等時採用此法構造雜湊函式

應視不同的情況採用不同的雜湊函式:

(1)計算雜湊函式所需的時間(包括硬體指令的因素);

(2)關鍵字的長度

(3)雜湊表的大小

(4)關鍵字的分布情況

(5)記錄的查詢頻率

雜湊表(雜湊表) 二 雜湊函式的構造方法

雜湊函式的構造方法 1 雜湊函式的選擇有兩條標準 簡單和均勻。簡單指雜湊函式的計算簡單快速 均勻指對於關鍵字集合中的任一關鍵字,雜湊函式能以等概率將其對映到表空間的任何乙個位置上。也就是說,雜湊函式能將子集k隨機均勻地分布在表的位址集上,以使衝突最小化。2 常用雜湊函式 為簡單起見,假定關鍵字是定義...

構造雜湊函式

一 雜湊函式的選擇有兩條標準 簡單和均勻。簡單指雜湊函式的計算簡單快速 均勻指對於關鍵字集合中的任一關鍵字,雜湊函式能以等概率將其對映到表空間的任何乙個位置上。也就是說,雜湊函式能將子集k隨機均勻地分布在表的位址集上,以使衝突最小化。二 常用雜湊函式 為簡單起見,假定關鍵字是定義在自然數集合上。1 ...

雜湊表與雜湊函式

雜湊表 我們將任意型別元素轉換為整型的過程叫作雜湊。所謂雜湊,實質上是高維空間向低維空間的對映。高維度空間元素數量多,低維空間元素數量少,必定會出現多對一的對映,所以必然出現雜湊衝突。在設計雜湊函式的過程要針對狀態數來進行分析。雜湊函式的本質在做雜湊,處理雜湊碰撞。設計雜湊表應當注重以下兩點 設計雜...