除法雜湊函式之雜湊值問題

2021-06-26 20:41:35 字數 978 閱讀 8911

演算法導論對於除法雜湊函式的描述。其中涉及到一小點數學問題:

k mod m時,m之所以為素數時為了使得k在m所在的素數域上保持唯一性(根據尤拉定理和費馬小定理)

雜湊函式: 

h(k) = k mod m
其中m的取值如是描述:

應用除法雜湊法的時候,要避免選擇m的某些值,例如,m不應該為2 的冪 。(盡量取素數,並且距離 2^p 比較遠的數值。 )

因為如果 m = 2^p (2的p次方),則 h(k) 就是k的p個最低位數字。除非一直各種最低p位的排列形式為等可能的,

否則在設計雜湊函式的時候,最好考慮關鍵字的所有位。

解釋一下: 如果

m = 2^p (2的p次方),則 h(k) =k mod m 就等價於 k的低m位與 m 求餘所得的值。例如:m = 8 = 2^3 。那麼,1

456mod 8 = 2

456mod 8 = 3

456mod 8

= 4456

mod 8 = 

456mod 8 ………… 如果這樣的話,那麼h(k)重複得概率就會大大的增加了。

「除非已知各種最低p位的排列形式為等可能的」這句話的意思是,如果低位p位在所有k中出現的概率是相同的,那麼就可以使用2^p 來作為雜湊值。

「否則在設計雜湊函式的時候,最好考慮關鍵字的所有位。」也就是盡量考慮到所有的位數。

希望解釋的能夠看懂^^^^^看不懂的只能回家了,不要寫**了........

附: 費馬小定

理是數論

中的乙個重要定理,其內容為: 假如p是質數,且(a,p)=1,那麼 a^(p-1) ≡1(mod p) 假如p是質數,且a,p互質,那麼 a的(p-1)次方除以p的餘數恆等於1。假如p是乙個質數的話,則2^(p-1)≡1(mod p)成立(這是費馬小定理的乙個特殊情況)是對的。但反過來,假如2^(p-1)≡1(mod p)成立那麼p是乙個質數是不成立的(比如341符合上述條件但不是乙個質數)。

11 3 除法雜湊法

include include include include include define slot size 20000 雜湊槽的大小 define arr size 100000 動態關鍵字集合 define min size 0 動態關鍵字集合的最小值 define max size 999...

雜湊函式(雜湊函式,Hash Function)

說明 雜湊的概念屬於查詢,它不以關鍵字的比較為基本操作,採用直接定址技術。在理想情況下,查詢的期望時間為o 1 簡單的說,hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出字串的長度稱為hash函式的位數。下圖 於維基百科 雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料...

雜湊函式 雜湊函式 演算法

常用字串雜湊函式有bkdrhash,aphash,djbhash,jshash,rshash,sdbmhash,pjwhash,elfhash等等。c 實現 include define m 249997 define m1 1000003 define m2 10000019 大素數 using ...