首页> 外文会议>IEEE Annual Symposium on Foundations of Computer Science >Simple Tabulation, Fast Expanders, Double Tabulation, and High Independence
【24h】

Simple Tabulation, Fast Expanders, Double Tabulation, and High Independence

机译:简单列表,快速扩展器,双重列表和高度独立

获取原文

摘要

Simple tabulation dates back to Zobrist in 1970 who used it for game playing programs. Keys are viewed as consisting of c characters from some alphabet A. We initialize c tables h_0, ..., h_c-1 mapping characters to random hash values. A key x=(x_0, ..., x_c-1) is hashed to h_0[x_0] xor h_1[x_1] xor ... xor h_c-1[x_c-1]. The scheme is extremely fast when the character hash tables h_i are in cache. Simple tabulation hashing is not even 4-independent, but we show here that if we apply it twice, then we do get high independence. First we hash to some intermediate keys that are 6 times longer than the original keys, and then we hash the intermediate keys to the final hash values. The intermediate keys have d=6c characters from A. We can then view the hash function as a highly unbalanced bipartite graph with keys on one side, each with edges to d output characters on the other side. We show that this graph has nice expansion properties, and from that it follows that if we perform another level of simple tabulation on the intermediate keys, then the composition is a highly independent hash function. More precisely, the independence we get is |A|Omega(1/c). In our O-notation, we view both A and c is going to infinity, but with c much smaller than |A|. Our space is O(c|A|) and the hash function is evaluated in O(c) time. Siegel [FOCS'89, SICOMP'04] has proved that with this space, if the hash function is evaluated in o(c) time, then the independence can only be o(c), so our evaluation time is best possible for Omega(c) independence-our independence is much higher if c=|A|o(1/c). Siegel used O(c)c evaluation time to get the same independence with similar space. Siegel's main focus was c=O(1), but we are exponentially faster when c=omega(1). Applying our scheme recursively, we can increase our independence to |A|Ω(1) with o(clog c) evaluation time. Compared with Siegel's scheme this is both faster and higher independence. Siegel states about his scheme tha- it is "far too slow for any practical application". Our scheme is trivial to implement, and it does provide realistic implementations of 100-independent hashing for, say, 32-bit and 64-bit keys.
机译:简单的表格可以追溯到1970年的Zobrist,他曾将其用于游戏程序。键被视为由来自某些字母A的c个字符组成。我们初始化c个表h_0,...,h_c-1,将字符映射到随机哈希值。密钥x =(x_0,...,x_c-1)散列到h_0 [x_0] xor h_1 [x_1] xor ... xor h_c-1 [x_c-1]。当字符哈希表h_i在高速缓存中时,该方案非常快。简单的列表散列甚至不独立于4,但是在这里我们表明,如果将其两次应用,则确实具有很高的独立性。首先,我们对一些中间键进行哈希处理,这些中间键的长度是原始键的6倍,然后我们将中间键哈希为最终的哈希值。中间键具有来自A的d = 6c个字符。然后,我们可以将哈希函数视为高度不平衡的二部图,其一侧是键,每个键的另一侧都具有d个输出字符。我们证明了该图具有良好的扩展特性,由此得出的结论是,如果我们对中间键执行另一级别的简单制表,则该组合是一个高度独立的哈希函数。更准确地说,我们获得的独立性是| A | Omega(1 / c)。在我们的O标记中,我们看到A和c都将达到无穷大,但是c远小于| A |。我们的空间为O(c | A |),哈希函数以O(c)的时间求值。 Siegel [FOCS'89,SICOMP'04]证明,在此空间中,如果哈希函数在o(c)时间中求值,则独立性只能是o(c),因此我们的求值时间最适合Omega (c)独立性-如果c = | A | o(1 / c),我们的独立性要高得多。 Siegel使用O(c)c评估时间来获得具有相似空间的相同独立性。 Siegel的主要关注点是c = O(1),但是当c = omega(1)时,我们的速度更快。递归地应用我们的方案,我们可以在评估时间为o(clog c)的情况下将独立性提高到| A |Ω(1)。与Siegel的方案相比,这既更快又更高。西格尔说他的方案“对于任何实际应用来说太慢了”。我们的方案实现起来很简单,并且确实为32位和64位密钥提供了100个独立哈希的实际实现。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号