旋转哈希

✍ dations ◷ 2025-12-03 07:08:51 #散列函数

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

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

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

相关

  • 冷却冷却(Cooling)是内部热能通过热辐射、热传导或对流传热给环境介质的过程。冷却还可以指:
  • 光学望远镜光学望远镜是用于收集可见光的一种望远镜,并且经由聚焦光线,可以直接放大影像、进行目视观测或者摄影等等,特别是指用于观察夜空,固定在脚架上的单筒望远镜,也包括手持的双筒镜和
  • 碳氧血红蛋白碳氧血红蛋白为血红蛋白与一氧化碳分子的稳定化合物,当一氧化碳气体被生物吸入或在代谢过程中产生时形成。血红蛋白有与一氧化碳结合的倾向,高于它和氧气的亲和力约240倍,当碳
  • 羧酸列表羧酸常见于各种生物化学过程,很多羧酸具有俗名。不论正名俗名,羧酸的英文全名在形容词后加acid,羧酸盐和羧酸酯通常将字尾“-ic”去掉换成“-ate”。通常在生化过程中英文用“-
  • 安东内斯库扬·安东内斯库(罗马尼亚语:Ion Antonescu,罗马尼亚语:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","
  • 原子反应堆核子反应炉(英语:nuclear reactor)是一种启动、控制并维持核裂变或核聚变链式反应的装置。相对于核武爆炸瞬间所发生的失控链式反应,在反应堆之中,核变的速率可以得到精确的控制,
  • 阿尔法·卡里姆·拉德哈瓦阿尔法·卡里姆·拉德哈瓦(乌尔都语:ارفع کریم رندھاوا,Arfa Karim Randhawa‎‎,1995年2月2日-2012年1月14日),巴基斯坦学生、电脑奇才。2004年,仅9岁时成为微软认
  • 森田等价在抽象代数中,森田等价(Morita equivalence)是定义在环之间的一个等价关系,这个等价保持许多环论性质。以日本数学家森田纪一(英语:Kiiti Morita)命名,他在1958年定义了这个等价关系
  • 刘眉生刘眉生(1905年3月26日-1937年10月13日),字天嘏。贵州省遵义县南白镇人。他为抗日战争期间阵亡的中国军方高级将领之一。军校第五期步兵专门学校校官班毕业,国民革命军14军85师510
  • 摩洛哥坚果摩洛哥坚果(,又名 Roem. & Schult.),亦有音译阿甘,是一种生长自西地中海的北非地区的碳酸钙半沙漠山谷的山榄科特有种植物,可在摩洛哥西南部的苏斯及阿尔及利亚的廷杜夫合共8280平