2012-05-29 42 views
1

我在這裏看到了有關使用gperf的答案,但是,我更願意根據我爲strings的域爲固定長度域創建的證明推出自己的答案<= 200根據我從wolfram的計算,我得到~7.9 x 10^374總排列。因此,我的思路是如果我有一個2048位散列函數(3.2 x 10^616)我應該能夠處理我需要處理的整個字符串。我的問題是,如何證明由於所有長度爲200或更小的字符串的限制,我最終生成的哈希實現將是完美的?通過固定長度輸入驗證完美散列函數

+0

@interjay它有用的是更多的理論概念:)。所以你建議,如果我把每一個字符串,我把它轉換爲一個字節[]然後應用填充方案,我應該有一個沒有碰撞的解決方案?如果是這種情況,我該如何證明? – Woot4Moo

回答

3

長度爲200個字符的字符串只有200 * 8 = 1600位。如果2048位散列可以滿足您的需要,那麼您可以將字符串位用作完美散列。身份散列函數是完美的,因爲它將每個輸入映射到不同的散列值(顯然,因爲沒有映射)。

+0

我選擇了2048,因爲它是容納宇宙的高於1024的下一個值。這是否會產生意想不到的後果? – Woot4Moo