旋转哈希

✍ dations ◷ 2025-12-10 08:16:10 #散列函数

旋转哈希(也称为滚动哈希、递归哈希、滚动校验和或滑动哈希)是一种哈希函数,输入的内容在一个窗口中进行移动哈希。

少数哈希函数允许快速计算滚动哈希值 — 只给出旧的哈希值,新的哈希值被快速计算出来,旧的值从窗口中移除,新的值添加到窗口中 — 类似于移动平均函数的计算方式,比其他低通滤波器更快。

主要应用之一是Rabin–Karp字符串搜索算法,该算法使用下面描述的滚动哈希。另一个流行的应用是rsync程序,它使用基于Mark Adler的adler-32的校验和作为滚动哈希。低带宽网络文件系统(LBFS)使用Rabin指纹作为其滚动哈希。

滚动哈希值最多只能是成对独立(英语:pairwise independent)的或强通用(英语:universal hashing)的。例如,它们不能是三向独立(英语:k-independent hashing)的。

通常使用仅包含乘法和加法的滚动哈希函数来解释Rabin–Karp字符串搜索算法:

其中 a {\displaystyle a} , data length , output: cut point ← 2KB //split minimum chunk size is 2KB ← 64KB //split maximum chunk size is 64KB ← ← ← // buffer size is less than minimum chunk size if ≤ then return n; if ≥ then ←     while < do ← ( << 1 ) + ] if !( & ) then return     return

其中

算法从数组下标为 M i n S i z e {\displaystyle MinSize} 开始循环,省去了处理长度不足最小分块所浪费的时间。计算当前字节下对应的指纹信息,当发现指纹信息等于提前预设好的 M a s k {\displaystyle Mask} 时,则进行分段处理。如果计算到最大的 M a x S i z e {\displaystyle MaxSize} 时仍然没有匹配到 M a s k {\displaystyle Mask} 时,此时强行进行分块。


所有滚动哈希函数在字符数上都是线性的,但其复杂度与窗口长度的关系( k {\displaystyle k} )不等。Rabin–Karp滚动哈希需要两个 k {\displaystyle k} 位数字的乘法,整数乘法是在 O ( k log k 2 O ( log k ) ) {\displaystyle O(k\log k2^{O(\log ^{*}k)})} 。通过循环多项式对ngram进行哈希处理,可以在线性时间内完成。

相关

  • 日本-琉球语系日琉语系,或者称作日本-琉球语系,是学者提出的一个语系,包含日语和琉球语两大分支。日琉语系这个概念由美国的日本学者Leon Serafim提出。日琉语系的所有语言的祖语都是原始日本
  • 实验心理学异常心理学 行为遗传学 生物心理学 心理药物学 认知心理学 比较心理学 跨文化心理学 文化心理学 差异心理学(英语:Differential psychology) 发展心理学 演化心理学 实验心理学
  • CanonCanon(音标:英-;美-)是英文名词,意思是“典型”或“真传经典”,也可表示: 1.正式〔伦理或思想行为上的〕规范、标准、准则,如行为(高尚趣味)的准则。 2.原著、真作、真本(书目)、正经
  • 盲鳗亚纲见内文盲鳗亚纲(学名:Myxini)是一类海洋脊椎动物,在食物链上属于食腐动物。过去是无颌总纲之下的一目,现在则是无颌总纲下的圆口纲下的一亚纲。盲鳗广泛分布于全球三大洋的温带、
  • 河堤堤坝或河堤是一条长长的,由泥土、石头、或混凝土造成的堆土、积墙或高岸,多为人工建造以用作预防水灾。人工堤的主要目的是避免洪水进入村庄或市镇,也减缓水道的自然变化,可供运
  • 脱乳清酸奶脱乳清酸奶,又称酸奶奶酪或希腊式酸奶,是将酸奶通过布或者纸滤去乳清后的产物,其黏稠度介于酸奶和奶酪之间,依然保留了酸奶独特的酸味。就像大多酸奶一样,脱乳清酸奶也是用牛奶加
  • 前210年
  • 翠鳢翠鳢为辐鳍鱼纲鲈形目鳢科的其中一种,分布于亚洲阿富汗、巴基斯坦、尼泊尔、印度、斯里兰卡、孟加拉、缅甸及中国云南省的淡水流域,体长可达31公分,栖息在泥底质的沼泽、湖泊、
  • 望天树望天树(学名:)为龙脑香科娑罗双属下的一个种,有时也归类于柳安属()。
  • 约瑟夫·瓦谢约瑟夫·瓦谢(法语:Joseph Vacher,1869年11月16日-1898年12月31日),法国连环杀手,绰号“法国开膛手”(The French Ripper)、“东南开膛手”(L'éventreur du Sud-Est)。瓦谢出生于法国