旋转哈希

✍ dations ◷ 2025-11-22 08:37:03 #散列函数

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

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

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

相关

  • T三叠纪(英语:Triassic,符号T)是2.51亿至2.01亿年前的一个地质时代,它位于二叠纪和侏罗纪之间,是中生代的第一个纪。三叠纪的开始和结束各以一次灭绝事件为标志。虽然这段时间的岩
  • 大直大直,为台湾台北市中山区地名,位于基隆河北岸,鸡南山以南,中山北路四段以东,剑南路、堤顶大道二段以西。过去设有大直庄、大直大字,现划有大直次分区,包含剑潭、大直、永安、北安、
  • 克洛维四世克洛维四世(法语:Clovis IV;680年-695年3月),有时会被称为克洛维三世(若认为之前的克洛维三世是篡位者),法兰克王国墨洛温王朝的全法兰兄国王(691年4月12日—695年3月在位)。提乌德里克
  • 朴泰成朴泰成(박태성),朝鲜政治家,任职朝鲜劳动党中央委员会副部长、组织指导部第1副部长、党中央政治局委员及党中央委员会副委员长等多项要职。据报导,他是最高领导人金正恩的亲信。
  • 相州 (北魏)相州,中国古代的州。北魏天兴四年(401年)以邺行台所辖六郡(魏郡、阳平、广平、汲郡、顿丘、清河)改设为相州,位于河南北部安阳市一带和临漳县。州治在安阳(今河南省安阳市)。北周末,
  • 卡尔·泰勒·康普顿卡尔·泰勒·康普顿(英语:Karl Taylor Compton,1887年9月14日-1954年6月22日),美国物理学家,曾于1930年至1948年任麻省理工学院校长。
  • 恩久·达玛巴扎恩久·达玛巴扎(藏语:.mw-parser-output .uchen{font-family:"Qomolangma-Dunhuang","Qomolangma-Uchen Sarchen","Qomolangma-Uchen Sarchung","Qomolangma-Uchen Suring","Q
  • 中国散裂中子源中国散裂中子源(英语:China Spallation Neutron Source,缩写CSNS)是在中国广东省东莞市大朗镇建设、由中国科学院高能物理研究所运营的一个基于粒子加速器的中子源,也是中国南方
  • 天下第一城坐标:39°42′42″N 116°54′06″E / 39.711748°N 116.901761°E / 39.711748; 116.901761天下第一城,是河北省廊坊市的一个旅游景点,也是一座集旅游和文化为一体的仿明清北
  • 陈抗甫陈抗甫(1941年4月-),男,汉族,福建福州人,中华人民共和国政治人物,曾任九三学社中央原常务副主席,第十一届全国政协常务委员、副秘书长(兼职)。2008年,当选第十一届全国政协常务委员,代表