给定一组已知密钥,可以为它们确定最佳散列函数吗?

时间:2017-03-02 13:51:43

标签: java c++ algorithm hash

gperf似乎是一个选项(如果使用C或C ++),但有哪些更好,至少在某些情况下?示例应用程序将链接代码与异常。对于异常处理的常见实现,链接器需要构造一个最佳的关联查找,从返回地址(对于可以生成异常的函数的调用)到破坏/最终化函数代码的地址,用于堆栈展开。

1 个答案:

答案 0 :(得分:1)

如果您事先知道所有已知的密钥集,那么构建一个trie/keyword tree密钥。在每个单词结尾处放置一个唯一索引。

这样,您的哈希函数永远不会超过O(length_of_the_largest_string)时间。所需的内存是O(total_character_in_all_the_strings)

如果您只使用唯一的前缀,那么您可以减少一些时间和内存。