2020-team-0x06-Hashing
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
[/wiki/2020-team0x06 返回]
== Hashing ==
=== Schwartz-Zippel lemma ===
* 若hash值由(多元)n次函数在模mod下确定,则hash碰撞的概率为n/mod
* mod最好为质数
=== Sequence ===
* 序列ai的hash函数为\sigma ai * r^i^,其中r为mod内随机整数
* 环hash可由环的最小表示确定
=== (multi)Set ===
* 设集合内任意元素为x,则集合的hash函数为\prod (x + r)
=== Tree ===
* 对每个高度i随机一个权值ri,对于以x为根且高度为i的子树,其hash函数为其儿子hash值集合在ri下的hash,即\prod (son + ri)
* 无根树可以重心为根
=== Graph ===
* 设h(v, d)为节点v的d级hash,则h(v,d)为h(son,d-1)的有序序列的hash,整个图的hash为h(v,maxd)的有序序列的hash,h(v,0)=1
* '''未经证明'''
=== Reference ===
[http://rng-58.blogspot.com/2017/02/hashing-and-probability-of-collision.html rng_58’s blog]
[/wiki/2020-team0x06 返回]
Hashing
Schwartz-Zippel lemma
- 若hash值由(多元)n次函数在模mod下确定,则hash碰撞的概率为n/mod
- mod最好为质数
Sequence
- 序列ai的hash函数为\sigma ai * ri,其中r为mod内随机整数
- 环hash可由环的最小表示确定
(multi)Set
- 设集合内任意元素为x,则集合的hash函数为\prod (x + r)
Tree
- 对每个高度i随机一个权值ri,对于以x为根且高度为i的子树,其hash函数为其儿子hash值集合在ri下的hash,即\prod (son + ri)
- 无根树可以重心为根
Graph
- 设h(v, d)为节点v的d级hash,则h(v,d)为h(son,d-1)的有序序列的hash,整个图的hash为h(v,maxd)的有序序列的hash,h(v,0)=1
- 未经证明