2013-10-16 40 views
-4

我想用開放的尋址和雙散列存儲在哈希表中有些詞的關鍵哈希表和獲取的話

的問題是,我一直在問用horners規則來使用計算基礎-128制首烏得到這個詞的關鍵,但我不知道如何在java中實現base-128基數系統。任何人都可以幫我嗎?

+2

你要求別人把它寫你,幫不了你。 – Kon

+0

詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。 –

+1

我們不是*寫我的代碼給我*的服務;告訴我們你到目前爲止所嘗試過的。 – michaelb958

回答

1

幾個要點:

  • Horner的規則是一個多項式評估策略;請參閱Wikipedia
  • 使用base-128的想法是將編碼字母(可能來自核心ASCII字符集)編號爲。請再次參閱Wikipedia

所以基本上你做什麼,給定一個關鍵foobar,太計算出相應的數值[102, 111, 111, 98, 97, 114]),則認爲它們是多項式(102 + 111*X + 111*X^2 + 98*X^3 + 97*X^4 + 114*X^5)的係數,評價說多項式(您選擇的,說7,產生2188827),其中產生您的散列值

請注意,快速評估多項式會產生大數值;一個常見的解決方案是取結果的模數,選擇足夠大的質數模數。還請注意,由於模塊化算術法則,您可以在霍納算法的每一步取模數。在前面的例子中,假設你選擇了39019作爲你的引物編號,你會得到3763

這是一個非常簡單的實現校驗的(遠遠加密安全BTW)

+0

感謝的例子幫助澄清問題更好 –