gperf似乎是一種選擇(如果使用C或C++),但是有更好的選擇,至少在某些情況下?示例應用程序將鏈接代碼與例外。對於常見的異常處理實現,鏈接器需要從返回地址(用於調用可能生成異常的函數)到函數的銷燬/定型代碼地址構造一個最佳關聯查找,以便堆棧展開。給定一組已知的密鑰,是否可以爲它們確定一個最佳散列函數?
0
A
回答
1
如果您事先知道所有已知的密鑰集,然後構建密鑰的trie/keyword tree。在每個單詞末尾添加一個唯一的索引。
這樣,你的散列函數將永遠不會超過O(length_of_the_largest_string)
時間。而內存需要的是O(total_character_in_all_the_strings)
如果你只使用唯一的前綴,那麼你可以減少一些時間和內存。
相關問題
- 1. 爲什麼給定的散列函數是一個糟糕的散列函數?
- 2. 確定一個數組是否是關聯(散列)或不
- 3. 給定一個函數,它是否是線性的,爲什麼?
- 4. 給定一個WPF圖像控件,是否可以確定它的HWND?
- 5. 函數來確定一組是否是另一個的子集
- 6. 作爲數組的密鑰散列 - 如何變成一個正常的散列?
- 7. php is_function(),以確定一個變量是否是一個函數
- 8. 陣列不是爲給定的密鑰
- 9. 檢查一個給定的密鑰是否已經存在於一個字典中並增加它
- 10. 散列函數和密鑰
- 11. MSSQL:給出一個表的object_id,確定它是否爲空
- 12. 是否可以投影子數組並將它們檢索爲一個數組?
- 13. 如何創建一個散列密鑰是從一個數組的Ruby
- 14. 給定一個數組,返回一個散列
- 15. 散列圖可以有一個由2個值組成的密鑰嗎?
- 16. 是否可以確定易失密鑰的初始TTL?
- 17. 散列函數加密 - 數據庫如何知道密碼是否正確?
- 18. 確定是否使用Python-xlib移動了一個密鑰
- 19. 確定一個數是否爲素數
- 20. 紅寶石可以深入搜索特定密鑰的散列/數組嗎?
- 21. 如何通過一組新的給定密鑰更改散列的所有密鑰
- 22. 確定一個函數中的數字是否爲負數
- 23. 我們可以決定一個數n是否屬於一個可數集S?
- 24. 確定數據庫是否已更改的最佳方法?
- 25. 我可以爲Meteor.users集合定義一個新的密鑰嗎?
- 26. Python:裝飾器可以確定一個函數是否正在類中定義?
- 27. 給定了一個完美的散列函數,計算包含
- 28. 如何確定給定的DTD是否爲另一個子集?
- 29. 如果密鑰長度已知,則確定Vigenere密碼的密鑰
- 30. Function.prototype的,以確定是否一個函數在JavaScript
標題聽起來更像是一個數學/ CS問題,然後是編程問題。不確定你在問題的正文中得到了什麼。 – NathanOliver
@NathanOliver是的,但它與我標記的語言有關,並且我還標記了算法。與異常處理的相關性與Java和C++的相關性。 – WaltK
什麼是*「最佳散列函數」*? –