旋转哈希

✍ dations ◷ 2024-12-23 01:17:15 #散列函数

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

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

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

相关

  • 审议机构合议性团体(deliberative assembly)是一种要求成员以议事程序进行讨论的组织。1774年,前英国下议院议员埃德蒙·伯克在布里斯托向选民发表演讲时,首次称呼英国国会为合议性团体
  • 洪洞大槐树洪洞大槐树,又称古大槐树,山西大槐树,位于中国山西省洪洞县城西北二公里的贾村西侧的大槐树公园内,是明代的一处移民基地。元朝末年,自然灾害频有发生,黄河地区水患尤其严重。同时
  • 公卿公卿是指公家和基于日本律令规定的太政官当中之最高干部职位,即太政大臣、左大臣、右大臣、大纳言、中纳言、参议(或从三位以上(非参议))等高官(总称议政官)。平安时代起称为公卿。
  • 口索动物亚门半索动物门(学名:Hemichordata)是由一类像虫一般,生存于海底的后口动物所组成的门,通常被认为是棘皮动物的旁系群,可追溯至寒武纪早期或晚期,且包括一类已在石炭纪时灭绝的重要化石
  • 穆赫兰大道穆赫兰大道是位于南加州圣莫尼卡山脉东部的一条公路,以洛杉矶土木工程师威廉·穆赫兰(英语:William Mulholland)命名。西侧位于洛杉矶县和文图拉县的道路部分称作穆赫兰公路。这
  • 希伊葡萄园希伊葡萄园(法语:Chilly-le-Vignoble),音译为"希伊勒维尼奥布勒",是法国汝拉省的一个市镇,位于该省西部,省会隆斯勒索涅市区西南,属于隆斯勒索涅区。该市镇总面积3.07平方公里,2009年
  • 印度共和国日印度共和国日是纪念现行印度宪法于1950年1月26日取代1935年印度政府法(英语:Government of India Act 1935)正式生效的日子,也就是印度国庆日。1949年11月26日,印度制宪议会通过
  • 硝酸钕硝酸钕是一种无机化合物,化学式为Nd(NO3)3。硝酸钕可以将氧化钕、氢氧化钕或碳酸钕溶于硝酸得到:所得溶液经过小心蒸发可以得到水合硝酸钕,其中六水合物最常见。将六水合物继续
  • 李始荣李始荣(朝鲜语:이시영/李始榮 ,1868年12月3日-1953年3月19日),字城翕(성흡)·圣翁(성옹),号省斋·始林山人(시림산인), 本名的圣翕(성옹),朝鲜王朝末期文臣、韩国独立运动家和政治人物,敎育家
  • 戴维·斯伯格戴维·纳撒尼尔·斯伯格(英语:David Nathaniel Spergel,1961年3月25日-),美国理论天体物理学家,普林斯顿大学教授。他以在WMAP(威尔金森微波各向异性探测器)上的工作而知名。他是威尔