旋转哈希

✍ dations ◷ 2025-11-16 12:13:36 #散列函数

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

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

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

相关

  • 数理统计学数理统计(英语:Mathematical statistics)是统计学的数学基础,从数学的角度去研究统计学,为各种应用统计学提供理论支持。
  • DNA聚合酶δDNA聚合酶δ(DNA polymerase delta)为真核生物体内的一种酶复合体,可进行DNA复制及修复。DNA聚合酶δ由四个次单元组成:POLD1(英语:POLD1)、POLD2(英语:POLD2)、POLD3(英语:POLD3),以及POL
  • 洋行洋行是华人与西方洋人的国际贸易商行、公司、代理行,历史开始于中国清朝,从事出口、入口及转口商品的商业贸易组织,是物流、供应链上的参与者。相当于现在的“出入口贸易公司”
  • 联合抵制1984年夏季奥运会联合抵制1984年夏季奥运会通常被称为“抵制洛杉矶奥运会”,是苏联政府在四年前美国与多国联合抵制1980年夏季奥运会后主导的对洛杉矶奥运会进行抵制的一次行动,一共有18个国家
  • 贝拉·哈迪德伊莎贝拉·海尔·哈迪德(英语:Isabella Khair Hadid,1996年10月9日-),美国模特儿,于2014年与IMG模特儿公司(英语:IMG Models)签约。1996年10月9日,哈迪德出生于华盛顿哥伦比亚特区,父亲
  • 码头市核电站码头市核电站(英语:Shippingport Atomic Power Station)是世界上第一个商业核子动力发电厂。码头市核电站位于海狸谷核发电站附近,坐落于美国宾夕法尼亚州比弗县俄亥俄河畔,距离
  • 高山南高山南(日语:高山 みなみ/たかやま みなみ ,1964年5月5日-),日本女性配音员、歌手、作曲家、旁白。出身于东京都足立区。身高156cm。B型血。前夫为漫画家青山刚昌。本名:新井泉(新井
  • 傅博 (足球教练)傅博(1965年2月28日-),已退役中国足球运动员,现任足球教练。傅博选手时期在辽宁队担任中场或前锋位置。在辽宁队教练李应发率领下,从1984年至1993年,傅博与马林、傅玉斌、董礼强、
  • 菠萝快递《菠萝快递》(英语:)是一部2008年美国动作喜剧片,由大卫·高登·格林执导,塞思·罗根和伊凡·戈博共同撰写剧本,同时罗根与戈博也和曾在《一夜大肚》(2007年)、《男孩我最坏(英语:Supe
  • 咖喱面包咖喱面包 (日语:カレーパン),或称咖喱甜甜圈,是一种流行的日式食品,为沾上日式咖喱的甜甜圈,包裹面包粉油炸而成。咖喱面包源自于日本东京,在昭和二年(1927年)时,一家名为“名花堂”