gpt4 book ai didi

haskell - 这种处理哈希冲突的方法是新的/独特的吗?

转载 作者:行者123 更新时间:2023-12-02 15:51:18 24 4
gpt4 key购买 nike

在处理 HashMap 时,我看到了一些处理哈希冲突的策略,但我们提出了一些不同的策略。我想知道这是否是新事物。

此版本的 HashMap 仅在哈希和将被哈希的数据结构可盐化时才有效。(Haskell 中的 hashable 就是这种情况,我们建议实现这种方法。)

这个想法是,不是在 HashMap 的每个单元格中存储列表或数组,而是存储递归 HashMap 。这个递归 HashMap 的唯一区别是您使用了不同的盐。这样, HashMap 的一个级别上的哈希冲突很可能不会发生下一个级别上的哈希冲突。因此,插入到这样的 HashMap 中不再是 O(此哈希上的冲突数),而是 O(此哈希上递归发生冲突的级别数),这很可能更好。

更详细的解释和实现可以在这里找到:

https://github.com/tibbe/unordered-containers/pull/217/files/58af4519ace34c5f7d3c1359907ff75e27b9cdb8#diff-ba23e0f18c79cb873ac5375367524cfaR114

最佳答案

您的想法似乎与 the Fredman, Komlós & Szemerédi paper from 1984 中建议的想法相同。如Wikipedia summarizes it :

FKS Hashing makes use of a hash table with two levels in which the top level contains n buckets which each contain their own hash table.

与您的想法相反,本地 HashMap 不是递归的,而是每个 HashMap 都选择一个使其成为完美哈希的盐。在实践中,这(正如你所说)通常已经由你尝试的第一个盐给出,因此它是渐近恒定时间的。

关于haskell - 这种处理哈希冲突的方法是新的/独特的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53495133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com