旋转哈希

✍ dations ◷ 2025-11-21 19:43:39 #散列函数

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

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

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

相关

  • 群落生物系统层级关系:生物圈 > 生态系统 > 群落 > 种群 > 个体群落(英语:biocoenosis)或称为“生物群落”。生存在一起并与一定的生存条件相适应的动植物的总体。群落生境是群落生
  • 宫颈息肉宫颈息肉(英语:cervical polyp)是一种常见的原发型息肉或肿物,通常生长于子宫颈管(英语:Canal of the cervix)表面。并发原因不明,但与宫颈炎相关。慢性炎症长期刺激使宫颈管局部黏
  • AuCl氯化亚金(氯化金(I)),又称一氯化金。是金元素的一种氯化物,化学式为AuCl。氯化亚金可以通过三氯化金的热分解来制备。虽然更高温度下如果氯气的压强合适它可以保持稳定,但是它在
  • 中国大学生篮球联赛中国大学生篮球联赛(CUBA,Chinese University Basketball Association)是一个中国篮球协会主办的高校之间的篮球联赛。联赛的宗旨是“发展高校篮球,培养篮球人才”。联赛的模式
  • 临淄临淄区位于中华人民共和国山东省中部,是淄博市一个石油化工产业密集的市辖区。在古代曾为西周、春秋、战国时的大国齐国国都,1994年被国务院定为国家历史文化名城。临淄,古称营
  • 业 (佛教)业(梵语:कर्म,转写:karma,或karman;巴利语:kamma),佛教术语,指由思想驱动的行为,这些行为在未来会形成结果,也就是业报或果报,业与报之间有天然的因果法则。业与果报是佛教的基础理论
  • 伊尔默瑙滑冰场伊尔默瑙滑冰场是图林根州伊尔默瑙市负责运营,建于市中心火车站旁。滑冰场是由火车站酒店和玻璃工厂改建而成。在2005年5月12日市议会决定在伊尔默瑙修建一个滑冰场。当地曾
  • 高厚良高厚良(1915年12月-2006年7月14日),是中国人民解放军空军高级将领,少将军衔,河南新县人。1932年参加红军,1933年参加中国共产党,在红四方面军参加了长征。中国抗日战争时期在八路军
  • 布巴赫湖坐标:48°30′03″N 8°14′41″E / 48.500714°N 8.244606°E / 48.500714; 8.244606布巴赫湖(德语:Buhlbachsee),是德国的湖泊,位于该国西南部,由巴登-符腾堡州负责管辖,处于拜尔
  • WTO防卫措施WTO防卫措施是世界贸易组织(WTO)允许的一项紧急救济手段,当一个国家因为不能预见的情况,发现进口商品大量增加,对于其国内的产业可能或已经造成严重损害时,可以采取使用:5。依据WT