旋转哈希

✍ dations ◷ 2025-11-20 17:50:00 #散列函数

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

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

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

相关

  • C1公羊坦克C1公羊坦克(C1 Ariete)是意大利陆军的第三世代主力战车。由意大利国内自行研制与生产,并于1995年开始服役至今。意大利在1982年提出研制新型主战坦克的计划,以替换300辆旧式的M6
  • 菲利普·弗兰兹·冯·西博尔德菲利普·弗兰兹·冯·西博尔德(Philipp Franz von Siebold,1796年2月17日-1866年10月18日),德国内科医生、植物学家、旅行家、日本学家和日本器物收藏家。他是日本第一个女医楠本
  • 克尔曼沙赫省克尔曼沙汗省(波斯语:كرمانشاه)是伊朗三十个省份之一。面积24,6417公里,在所有省份中排行第15。人口约1,938,000(2005年数据);首府位于克尔曼沙赫市。克尔曼沙汗省位于
  • 客籍法和镇压叛乱法《客籍法和镇压叛乱法》(Alien and Sedition Acts)是美国联邦党在第五届国会(英语:5th United States Congress)上通过的四则法律。于1798年由美国总统约翰·亚当斯签署。该法律
  • 逆行性生长逆行性生长(Anaplasia),是指成熟的正常细胞非正常地复归未成熟的细胞,为恶性肿瘤(malignant neoplasms)的指标性症状。大多数癌细胞会导致细胞去分化,让细胞无限制的分裂。但发生
  • 地龟地龟(学名:;英文:),亦名黑胸叶龟、长尾山龟、十二棱龟、金龟,地龟科地龟属,半水栖龟,主要分布于越南和中国之广西、广东、湖南、海南等地。摄氏温度介于18℃~28℃之山区丛林、小溪及山
  • 俄罗斯苏维埃联邦社会主义共和国部长会议俄罗斯苏维埃联邦社会主义共和国部长会议(俄语:Совет Министров РСФСР)是1946年3月15日—1991年12月25日俄罗斯苏维埃联邦社会主义共和国最高行政机构,它受
  • 加拿大苏格兰盖尔语加拿大苏格兰盖尔语,也被称作布雷顿角岛盖尔语(苏格兰盖尔语:Gàidhlig Chanada, A' Ghàidhlig Chanèideanach, Gàidhlig Cheap Bhreatainn),当地人将之简称为盖尔语(Gaelic或
  • 克尔韦屈拉坐标:58°25′27″N 26°46′56″E / 58.42417°N 26.78222°E / 58.42417; 26.78222克尔韦屈拉(爱沙尼亚语:Kõrveküla),是爱沙尼亚的城镇,位于该国东南部,由塔尔图县负责管辖,是
  • 克利福特园克利福特园(Hortus Cliffortianus)是一个早期植物学文献中的名著,于1738年出版。该著作是卡尔·林奈和格奥尔格·迪奥尼修斯·艾雷特(Georg Dionysius Ehret)的合作,由乔治·克利