演算法導論對於除法雜湊函式的描述。其中涉及到一小點數學問題:
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 ...