旋转哈希

✍ dations ◷ 2025-04-02 19:14:29 #散列函数

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

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

主要应用之一是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进行哈希处理,可以在线性时间内完成。

相关

  • 火星3.693 m/s² (0.37795.32% 二氧化碳 2.7% 氮气 1.6% 氩 0.13% 氧气 0.08% 一氧化碳 210 ppm 水蒸气 100 ppm 一氧化氮 2.5 ppm 氖 300 ppb 氪 130 ppb 甲醛 80 ppb 氙 30 p
  • 棉纸棉纸,一种传统的手工纸,常用于撕画、水墨画及书法等,也可用于包装。最早起源于中国,后流传到台湾、日本、韩国等周边国家。因为其质地洁白,如同棉花,撕开后纤维如同棉丝,因此得名。
  • 哈 山哈山(1633年 - 1719年),富察氏,满洲镶红旗,清朝政治人物、清朝刑部尚书。曾任吏部左侍郎。康熙五十年十一月丙戌,接替齐世武,担任清朝刑部尚书,后革。由赖都接任。
  • 职业网球联合会职业网球联合会(Association of Tennis Professionals,缩写:ATP)由唐纳德·戴尔(英语:Donald Dell)、鲍勃·布瑞尼尔(英语:Bob Briner)、杰克·克拉玛(英语:Jack Kramer)、克里夫·佐斯德
  • 金岛金岛 (伊努必语:Ugiuvak)座落于阿拉斯加以西的白令海上,位于道格拉斯角以西约40英里(64千米)。金岛位于威尔士以南,诺姆西北约90英里(140千米),离岸边约40英里(64千米)。 金岛阔约1英
  • 考姆翁布考姆翁布是埃及的城镇,由阿斯旺省负责管辖,位于该国东南部尼罗河东岸,距离首府阿斯旺40公里,主要农产品有甘蔗和玉米,2010年人口75,128。
  • Dear My Future ~未来的自己~《Dear My Future ~未来的自己~》(Dear My Future ~未来の自分へ~)是日本女子音乐组合Prizmmy☆的单曲,于2012年4月25日由avex entertainment发行。
  • 路德维希·比尔曼路德维希·弗朗茨·本尼迪克特·比尔曼(德语:Ludwig Franz Benedict Biermann,1907年3月13日-1986年1月12日)是一位德国天文学家。比尔曼的研究是在天文物理和等离子。他预测了太
  • 盘蝠属盘蝠属(粗指盘蝠),哺乳纲、翼手目、蝙蝠科的一属,而与盘蝠属(粗指盘蝠)同科的动物尚有梓蝠属(梓蝠)、帆耳蝠属(帆耳蝠)、胼足蝠属(胼足蝠)、花尾蝠属(花尾蝠)等之数种哺乳动物。
  • 索热共和国索热共和国(法语:La République du Saugeais,发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Cod