Hash演算法原理記錄

2021-09-10 05:28:57 字數 857 閱讀 9016

hash 翻譯為雜湊,也可以叫hash。

可以把任意長度的輸入通過hash演算法壓縮,變成固定長度輸出,輸出內容是雜湊值,這裡任意長度的輸入也可以叫做預對映。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。

雜湊表,它是基於快速訪問的角度設計的,也是一種典型的「空間換時間」的做法。顧名思義,該資料結構可以理解為乙個線性表,但是其中的元素不是緊密排列的,而是可能存在空隙。

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

比如我們儲存70個元素,但我們可能為這70個元素申請了100個元素的空間。70/100=0.7,這個數字稱為負載因子。我們之所以這樣做,也是為了「快速訪問」的目的。我們基於一種結果盡可能隨機平均分布的固定函式h為每個元素安排儲存位置,這樣就可以避免遍歷性質的線性搜尋,以達到快速訪問。但是由於此隨機性,也必然導致乙個問題就是衝突。所謂衝突,即兩個元素通過雜湊函式h得到的位址相同,那麼這兩個元素稱為「同義詞」。這類似於70個人去乙個有100個椅子的飯店吃飯。雜湊函式的計算結果是乙個儲存單位位址,每個儲存單位稱為「桶」。設乙個雜湊表有m個桶,則雜湊函式的值域應為[0,m-1]。

解決衝突是乙個複雜問題。

解決衝突的辦法:

(1)線性探查法:衝突後,線性向前試探,找到最近的乙個空位置。缺點是會出現堆積現象。訪問時,可能不是同義詞的詞也位於探查序列,影響效率。

(2)雙雜湊函式法:在位置d衝突後,再次使用另乙個雜湊函式產生乙個與雜湊表桶容量m互質的數c,依次試探(d+n*c)%m,使探查序列跳躍式分布。

**:

雜湊(hash)演算法的記錄

hash演算法,又稱雜湊或雜湊演算法,它能將任意長度的二進位制值對映為較短的固定長度的二進位制值,即hash值。並且不同的明文很難對映為相同的hash值。hash值在應用中又稱為數字指紋 fingerprint 數字摘要 digest 或者訊息摘要 乙個優秀的hash演算法,具有如下特點 對不同的關...

常見hash演算法的原理

分類 演算法和資料結構 2011 11 22 13 12 1579人閱讀收藏 舉報雜湊表,它是基於快速訪問的角度設計的,也是一種典型的 空間換時間 的做法。顧名思義,該資料結構可以理解為乙個線性表,但是其中的元素不是緊密排列的,而是可能存在空隙。雜湊表 hash table,也叫雜湊表 是根據關鍵碼...

幾種常用hash演算法及原理

計算理論中,沒有hash函式的說法,只有單向函式的說法。所謂的單向函式,是乙個複雜的定義,大家可以去看計算理論或者密碼學方面的資料。用 人 類 的語言描述單向函式就是 如果某個函式在給定輸入的時候,很容易計算出其結果來 而當給定結果的時候,很難計算出輸入來,這就是單項函式。各種加密函 數都可以被認為...