旋转哈希

✍ dations ◷ 2025-11-23 13:53:56 #散列函数

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

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

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

相关

  • 开门七件事开门七件事是古代中国平民百姓每天为生活而奔波的七件事,已成为中国的谚语。从“开门”(即开始家庭一天正常运作之时或持家,维持生计),就都离不开七件维持日常生活的必需品,分别是
  • 卫满朝鲜卫满朝鲜(朝鲜语:위만조선/衛滿朝鮮 Wiman joseon;前195年—前108年),又称卫氏朝鲜(朝鲜语:위씨조선/衛氏朝鮮 Wissi joseon),是一个由燕人卫满建立的古朝鲜政权。君主 · 首都 ·
  • 刃牙《刃牙》是日本漫画家板垣惠介所作的日本漫画作品,由秋田书店出版。第1部在1991年于《周刊少年Champion》刊载,第1部有推出OVA和电视动画。系列作品有《刃牙》(グラップラー刃
  • 黄花菜金针花、又名黄花菜、柑橘萱草(学名:Hemerocallis citrina)是萱草科的植物,原产中国大陆中南方省分。花经过蒸、晒,加工成干菜,金针花也可食用,但食用前应充分加热,否则可能导致中毒
  • 高锝酸钠高锝酸钠是一种无机化合物,它是高锝酸盐的一种,化学式为NaTcO4,是由−阴离子和钠阳离子组成,由离子键结合而成。该化合物中的Tc若是同质异能放射性同位素99mTc(即Na99mTcO4)的话
  • 丁浩 (清朝)丁浩(?-19世纪?),字子然,一字养吾,号松亭,河南汝州宝丰县人,清朝官员。道光十八年(1838年)进士。咸丰元年(1851年)任江南道监察御史,历改江西道、广西道。官至广东广州府知府。
  • ALICE OR ALICE~妹控哥哥与双胞胎妹妹~漫画单行本第1卷封面《ALICE OR ALICE~妹控哥哥与双胞胎妹妹~》(日语:ありすorありす ~シスコン兄さんと双子の妹~),是由梱枝Riko所作的日本四格漫画作品。发表于《月刊Comic Alive
  • 金视奖最佳女主角金视奖最佳女主角是在金视奖两年一度颁发的奖项之一。第一届年度金视奖颁奖典礼于2010年举行。该奖项是于2010年创立;由杨雁雁在连续剧《女头家》里表现优秀而获得该奖项。奖
  • 李英华李英华可以指:
  • 比司吉面包比司吉(英语:Biscuit)在美国英语和加拿大英语中是指在美国和加拿大部分地区一种是以泡打粉或小苏打取代酵母作为化学膨松剂制成的小面包。它的外面皮烤得焦黄坚脆,内里蓬松而绵