除法散列函數之散列值問題

來源:互聯網
上載者:User

標籤:style   blog   http   color   ar   使用   sp   on   2014   


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

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 。那麼,1456 Mod 8 = 2456 Mod 8 = 3456 Mod 8 = 4456 Mod 8 = 456 Mod 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符合上述條件但不是一個質數)。

除法散列函數之散列值問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.