【发布时间】:2017-02-20 05:02:32
【问题描述】:
我所知道的用于计算容器哈希码的算法通过递归组合其中所有元素的哈希来工作。哈希的组合方式与我的问题无关。但是因为算法是递归的,所以计算会变得非常昂贵。 O(n),其中 n 是可到达的元素总数。
我的问题是是否有更有效的方法来做到这一点?例如,如果您有一个包含 100k 个元素的数组,您可以通过组合仅包含 100 个元素的哈希来计算哈希。这将使计算速度提高 1000 倍,同时仍然是一个很好的哈希函数,不是吗?
您选择的 100 个元素可以是第 100 个或每 1000 个(在上面的示例中)或使用其他确定性公式选择。
所以为了回答我的问题,你能否或者告诉我为什么我的想法行不通或者告诉我我的想法已经在哪里进行了调查。就像我提议的那样,是否有任何编程语言实现了“sub O(n) 序列哈希”?
【问题讨论】:
-
哈希是为了什么目的?如果您使用 XOR 之类的通勤组合运算符,那么您只需在操作容器时更新哈希即可。
标签: algorithm hash containers time-complexity hashcode