我有一組128位數和集合的大小< 2^32 ...所以理論上我可以有一個映射函數,將所有的128位數映射到32位數....我怎麼構造映射函數映射函數
Q
映射函數
3
A
回答
3
好像你正在尋找一個最小perfect hash它將n個鍵映射到n個連續的整數。
上述句子中的wiki頁面鏈接提到了兩個實現它的庫。
0
如果不知道輸入數據的性質,它不可能給最優的哈希算法。但是如果輸入是均勻分佈的,那麼你可以使用輸入的低32位。這意味着碰撞的可能性,所以你必須處理。
0
通用結構是將所有128位值保存在一個大數組中,按升序排列。然後,每個值被「映射」到數組中的索引。要「計算」地圖,您需要在數組中進行二分搜索,以獲取數組中值的精確索引。使用2 值,數組的大小爲64 GB,二進制搜索需要在數組中進行35次左右的查找。
在所有的普遍性,你不能做的比這更好。然而,如果你的128位數值具有相當均勻的分佈(取決於它們來自何處),那麼大型數組結構可以被大量壓縮,特別是如果你能保證所有地圖輸入總是成分128位值的集合;我敢打賭,你可以將其削減到幾千兆字節 - 但查找會更加昂貴。
對於更實用的解決方案,你將與結構中的128位值的工作:他們來自哪裏,他們代表着什麼......
0
設置你的電話號碼爲師的位置它的價值在2^32。
相關問題
- 1. Vimscript - 映射函數
- 2. JavaScript參數映射()函數
- 3. 動態函數映射
- 4. C++函數映射實現
- 5. 映射C++類函數
- 6. Haskell和Erlang映射函數
- 7. std ::映射函數指針
- 8. 陣營 - 將數據映射到被映射函數
- 9. 映射函數給出無法解析的函數或方法(映射)
- 10. 在TypeScript中映射泛型函數中的映射類型
- 11. 帶列表參數的映射函數
- 12. NuSOAP - 函數參數映射不正確
- 13. 多維數組映射函數
- 14. 函數映射到數據幀
- 15. 重載構造映射構造函數
- 16. MongoDB的MapReduce的映射函數
- 17. MFC消息映射和虛函數
- 18. 從映射函數返回多個值
- 19. 將函數映射傳遞給宏
- 20. 的Modelica - 映射非Modelica的函數來
- 21. Perl的映射函數OO perl
- 22. int => int的散列函數映射
- 23. 將附加函數映射到列表
- 24. 二維numpy陣列的映射函數
- 25. 返回值映射回調函數
- 26. 哈斯克爾映射函數列表
- 27. 複雜函數的MATLAB線性映射
- 28. 終止外映射函數在JavaScript
- 29. 大熊貓映射函數返回「男」
- 30. 映射函數的意外結果
你能預測128位數字(或他們的模式)嗎? – 2011-04-25 18:04:26
你想達到什麼目標?解釋它而不使用單詞映射。而且,你用什麼語言? – Dialecticus 2011-04-25 18:10:48
@Dia:我猜他想要一個基於[hash]標籤的散列函數。但是+1對您的評論:-) – 2011-04-25 18:17:19