資料結構與演算法之雜湊 hash table

2022-08-02 12:45:08 字數 2221 閱讀 6672

1、 雜湊:由資料項的值來確定資料存放的位置。雜湊表中的儲存位置被成為槽。

2、雜湊函式:實現從資料項到儲存槽的轉換的函式稱為雜湊函式。

3、 槽號:雜湊函式返回的資料項的儲存位置。

求餘雜湊:

方法:

將資料項除以雜湊表的大小,得到的餘數作 為槽號。

實際上「求餘數」方法會以不同形式出現在所有 雜湊函式裡 因為雜湊函式返回的槽號必須在雜湊表大小範圍 之內,所以一般會對雜湊表大小求餘。

資料的查詢:

只需要使用同乙個雜湊函式,對查詢項進行計算,測試下返回的槽號所對應的槽中是否有 資料項即可

不足:

可能會出現」衝突「現象。即:兩個不同的資料項通過求餘數後得到相同的槽號。

完美雜湊函式:

1. 方法:

給定一組資料項,如果乙個雜湊函式能把 每個資料項對映到不同的槽中。對於固定的一組資料,總是能想方設法設計出完美雜湊函式。

2. 不足:

但是如果這組資料經常變動的話,很難有乙個完美的雜湊函式(即會出現些許的衝突,但!衝突其實也不致命的,我們可以妥善的處理他們!)

3. 設計完美雜湊函式的方法:

①設計出乙個足夠大的雜湊表(即:擴大雜湊表的容量)使得所有可能出現的資料項都能夠佔據不同的槽。(不實用)

②退而求其次,好的雜湊函式需要具備特性 :

衝突最少(近似完美)、

計算難度低(額外開銷小)、

充分分散資料項(節約空間)

雜湊的應用之一

區域鏈區域鏈介紹:區域鏈是一種分布式資料庫,通過網路連線的節點 每個節點都儲存著整個資料庫所有資料 任何地點存入的資料都會完成同步。

其本質特徵:去中心化,即不存在任何控制中心,協調中心節點,所有節點都是平等的 ,無法被控制。

區塊鏈由乙個個區塊(block)組成,區 塊分為頭(head)和體(body) 

區塊頭記錄了一些元資料和鏈結到前乙個區塊的資訊。

生成時間、前乙個區塊(head+body)的雜湊值

區域鏈具有不可修改性:

由於雜湊值具有抗修改性,任何對某個區 塊資料的改動必然引起雜湊值的變化,為了不導致這個區塊脫離鏈條,就需要修改所有 後續的區塊。

由於有「工作量證明」的機制,這種大規模修改 不可能實現的,除非掌握了全網51%以的計算力。

雜湊函式設計

1.摺疊法:

將資料項按照位數分為若干段,再將幾段數字相加, 最後對雜湊表大小求餘,得到雜湊值。

有時候摺疊法還會包括乙個隔數反轉的步驟

2.平方取中(計算量稍大):

首先將資料項做平方運算,然後取平方數的中間兩位,再對雜湊表的大小求餘。

3.非數項:

也可以對非數字的資料項進行雜湊, 把字串中的每個字元看作ascii碼即可,再將這些整數累加,對雜湊表大小求餘。

注意:

這樣的雜湊函式對所有的變位詞都 返回相同的雜湊值 為了防止這一點,可以將字串所在的位置作為 權重因子,乘以ord值。

4.數字分析法:

對於給定的關鍵碼集合,分析所有關鍵碼中各位數字出現的頻率,從中選出分布情況較好的若干數字作為雜湊函式的值。

雜湊函式設計基本法則

1.

雜湊函式不能太複雜,否則將成為儲存過程和查詢過程的計算負擔。

2.

雜湊值應盡可能地均勻分布

衝突的解決方案:

1.解決衝突:

乙個系統化的方法在雜湊表中儲存發生衝突資料中的第二個資料項。

2.解決方法

開放定址:即 再找乙個開放的空槽來儲存 最簡單的就是從衝突的槽開始往後掃瞄,直到碰 到乙個空槽 如果到雜湊表尾部還未找到,則從首部接著掃瞄 。

向後逐個槽尋找的方法則是開放定址技術 中的「線性探測。

3.缺點:

容易有聚集趨勢。

4.改進:

將逐個探測改為跳躍式探測(再雜湊)。

資料結構與演算法之雜湊表

介紹 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。應用 看乙個實際需求,google公司的乙個上機題 有乙個公司,...

資料結構與演算法 七 之雜湊表

雜湊表,是根據關鍵碼值而進行訪問的資料結構。通過碼值對映到表中的乙個位置來訪問以加快查詢速度。這個對映函式叫雜湊函式,存放記錄的陣列叫雜湊表。使用陣列 鍊錶的形式實現乙個簡單的hashtable,實現以下函式。雜湊函式以最簡單的取模為例。首先定義乙個鍊錶節點,儲存key與value。class no...

資料結構與演算法簡記 雜湊演算法

將任意長度的二進位制值串對映為固定長度的二進位制值串,這個對映的規則就是雜湊演算法。而通過原始資料對映之後得到的二進位制值串就是雜湊值。md5 md5 message digest algorithm,md5 訊息摘要演算法 sha secure hash algorithm,安全雜湊演算法 借助h...