旋转哈希

✍ dations ◷ 2025-11-09 11:07:22 #散列函数

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

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

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

相关

  • 希腊黑暗时代希腊黑暗时代(英语:Greek Dark Ages),又称荷马时代(根据荷马史诗)、几何时代(根据当时的几何艺术),是指希腊历史中从公元前11世纪迈锡尼文明覆灭到公元前9世纪第一个城邦的建立的历史
  • 克里斯·威尔考克斯克里斯·雷·威尔考克斯(英语:Chris Ray Wilcox,1982年9月3日-),生于北卡罗来纳州罗利,美国职业篮球运动员,司职中锋。大学期间效力于马里兰大学,帮助大学取得了球队历史上首座NCAA总
  • 哈尔魁梅林语哈尔魁梅林语(Halkomelem;上游方言:Halq'eméylem;岛方言:Hul'q'umín'um';下游方言:Hun'qumi'num')是一种萨利希语系的语言,通行于加拿大卑斯省,从温哥华岛的西岸,到大温的素里。
  • 中国海湾中国的海岸线曲折,海湾较多,自北向南主要有:
  • 许可 (法律)许可(英语:license)是为避免非法所采取的法律允许行为,亦可以指该允许行为的书面协议。当许可作为名词指称协议时,依然称许可,但实际情况会在其后添加条款或协议等词。许可人可以
  • 硫化镉锌硫化镉锌又称硫化锌镉,是硫化锌和硫化镉的混合物或复合物,可以用(Cd,Zn)S表示。它可用作光催化剂或半导体材料。它曾经被用作美国的非法人体实验。硫化镉锌可以乙酸锌为锌源,乙
  • 石笋石笋(Stalagmite),为碳酸钙石灰岩,位于溶洞洞底的尖锥体,是喀斯特地形的一种自然现象。石笋形如竹笋出土,自下向上生长。石笋与钟乳石成长缓慢,一万年约长高一米。石笋是由于含碳酸
  • 苏昌苏昌(?-1768年),伊尔根觉罗氏,满洲正蓝旗人。历任奉天府尹、广东巡抚、两广、湖广、闽浙总督、代理工部尚书等职。苏昌为都统满丕之孙。康熙五十九年(1720年),自监生考取内阁中书,升
  • 履行中心履行中心是订单履行领域的专业化公司。履行业务,可以具体理解为订单履行或者产品履行,是个人或公司向订货者履行发货过程的业务。典型的业务操作包括:存货、接受订单、包装、将
  • 环戊二烯基三羰基铬二聚体环戊二烯基三羰基铬二聚体是一种有机铬化合物(英语:organochromium compound),化学式为Cp2Cr2(CO)6,其中Cp表示环戊二烯(C5H5)。它是暗绿色晶体,它和单体CpCr(CO)3基处于平衡。该化