旋转哈希

✍ dations ◷ 2025-07-12 18:05:21 #散列函数

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

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

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

相关

  • 穆罕默德·阿里治下穆罕默德·阿里王朝(阿拉伯语:أسرة محمد علي Usrat Muhammad 'Ali)是十九世纪至二十世纪埃及和苏丹的统治王朝,以其创立者穆罕默德·阿里为名,穆罕默德·阿里被视为现
  • 尼纳奇尼纳奇(英语:Neenach)是位于美国加利福尼亚州洛杉矶县的一个非建制地区。该地的面积和人口皆未知。尼纳奇的座标为34°46′33″N 118°34′06″W / 34.77583°N 118.56833°W /
  • 肯尼迪遇刺案阴谋论1963年11月22日肯尼迪遇刺案后,诞生了许多阴谋论的说法,至今仍被热议。其对象包括中央情报局、联邦调查局、苏联国家安全委员会、美国黑手党、时任美国副总统林登·约翰逊、古
  • 冯宝君冯宝君(马来语:Fong Po Kuan,1973年9月15日-),前马来西亚民主行动党华都牙也区国会议员。
  • 御笔匾额御笔匾额,是指东亚君主(中国皇帝、日本天皇、朝鲜君主、越南君主等)所赐,由君主亲笔题字之匾额。赐给寺院、庙宇的御笔匾额又称敕额。中国皇帝的御笔匾额除了赐给于领地内的庙宇
  • 太空一号《太空一号》(英语:,又称作)是一部于2012年上映的法国科幻动作片,由史蒂芬·圣莱杰与詹姆斯·马瑟执导,两人也与吕克·贝松共同完成剧本。电影主演包括盖·皮尔斯、玛姬·格蕾斯、
  • 伊卡黑石伊卡黑石(Ica Stones),又称伊卡石头、伊卡石,是秘鲁伊卡大区的安山岩民俗工艺品,刻有各种艺术图案卖到外国,后来引发科学骗局而大受观光客欢迎 。 1966年秘鲁人Javier Cabrera建
  • 胜利航空胜利航空(俄语:Победа)是俄罗斯一家廉价航空公司,总部位于莫斯科伏努科沃国际机场,分部位于阿纳帕和索契等两个城市,主要负责运营俄国境内航线和飞往欧洲的国际航线,乃俄罗斯
  • 普嘉·海迪普嘉·海迪(英语:Pooja Hegde,1990年10月13日-)是印度女演员,主要演出泰卢固语和宝莱坞电影。她在2012年拍摄了第一部电影。2016年,海迪在她第一部宝莱坞电影《Mohenjo Daro》担任
  • 格雷厄姆·查普曼格雷厄姆·阿瑟·查普曼(英语:Graham Arthur Chapman,1941年1月8日-1989年10月4日)是一位英国喜剧家、编剧和演员,是超现实喜剧团体蒙提·派森的六名成员之一。