Skip to content

NanoRed/proof-of-quadratic-probing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

关于二次探测如何保证探测到表所有项的证明

共有两种形式的二次探测,分别为
image
image(此证明仅讨论此形式)

一、预备知识

二次剩余

当存在某个 image , 令式子 image 的  image 有解时,称  image 是模  image 的二次剩余;当  image 无解时,称  image 是模  image 的二次非剩余。

列出一张 image 的二次剩余列表如下:

d 1 2 3 4 5 6 7 8 9 10 11 12 13 14
d^2 1 4 9 16 25 36 49 64 81 100 121 144 169 196
mod 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0
mod 3 1 1 0 1 1 0 1 1 0 1 1 0 1 1
mod 4 1 0 1 0 1 0 1 0 1 0 1 0 1 0
mod 5 1 4 4 1 0 1 4 4 1 0 1 4 4 1
mod 6 1 4 3 4 1 0 1 4 3 4 1 0 1 4
mod 7 1 4 2 2 4 1 0 1 4 2 2 4 1 0
mod 8 1 4 1 0 1 4 1 0 1 4 1 0 1 4
mod 9 1 4 0 7 7 0 4 1 0 1 4 0 7 7
mod 10 1 4 9 6 5 6 9 4 1 0 1 4 9 6
mod 11 1 4 9 5 3 3 5 9 4 1 0 1 4 9

从表中我们可以看出一些规律。首先,剩余数以 image  的长度为一个段一个段地轮回,这很好理解,因为取模为 image 时, 其值必然小于等于 image ;其次,在这一段的剩余数中, 左右两边是对称的,如mod 7时的1、4、2与2、4、1是对称的,也就是说,mod 7时的二次剩余只有3个。

费马小定律

设 image 为素数,  image 是任意整数,且不为  image 的倍数,则有  image 。

先证明一个引理:设 image 为素数,  image 是任意整数,且不为  image 的倍数,则有序列  image 与序列  image 不考虑顺序时等价。

假如序列  image 存在  image 重复,也即  image ,由于  image 不能被  image 整除,即只能是  image 被  image 整除,又因为  image ,所以  image ,能被  image 整除的情况只能是  image ,也就是说存在重复只能是两个值就是同一个的情况, 即序列 image 元素均在  image 以内,且不重复,即与序列  image 不考虑顺序时等价。

根据引理,将序列  image 与序列  image 元素分别累乘取模  image ,两边应该是相等的,也即  image 

欧拉判别法则

若 image 是模  image 的二次剩余,则有  image ;若  image 是模  image 的二次非剩余,则有  image 。

因为 image 是模  image 的二次剩余,有  image ,  image 不为0,则  image 不能被  image 整除,则  image 不能被  image 整除。

根据费马小定律,有 image 。

同样根据费马小定律,  image ,  image 要么为1,要么为-1,而  image 要么是二次剩余,要么是二次非剩余,因此,当  image 是模  image 的二次非剩余时,有  image 。

二、证明

将以 image 时进行说明:
image
假如0位已被哈希占用,此时触发二次探测再散列,先忽略负值的跳位,有  image ,这与二次剩余问题同出一撤,那么什么情况下每次探测的空格不重复呢?

假设存在  image ,使探测的空格重复,有  image ,存在以下条件使此等式不成立(反过来说不成立说明不重复):

  • 要令任意 image 和任意 image ,使image 不被 image 整除,首先 image 不能是只包含 image 或 image 其中的质因子的合数,由于 image 和 image 是任意的,也即 image 不能是合数, image 得是质数。
  • 由于image 和 image 是任意取值的,且 image ,即符合条件 image 即可,因此有 image 

因此,当 image 为质数,并且增量序列为:  image 时,可以保证探测空格不重复,如上例 image 时, image 对应二次剩余下标 image 。

那么剩下的 image 呢?其实这些就是 image 时的二次非剩余。

若 image 是 image 的二次剩余集合,它们必然是各不相同的,现假设有集合 image ,由于 image 之间各不相同,则 image 必然也各不相同。如此,假若可以令集合 image 与集合 image 没有交集,则它们的并集元素有 image 个,也就是等于所有剩余集合。由于集合 image 是二次剩余集合,则需找到一个 image ,令集合 image 等于二次非剩余集合即可。

我们根据欧拉判别法则进行命题转换:当 image 时,令 image 即可。

对 image 进行二项展开有:

     image
image
image

从而得到 image ,根据费马小定律,可得 image ,要使之恒成立, image 必须为奇数,即 image 为 image 形式时,有 image 必为奇数。

因此,当 image 为 image 形式的质数时,集合 image 就是 image 的非剩余集合,也就是说剩余集合与非剩余集合是关于模 image 对称的。现想象将哈希列表首尾相连形成一个环,从起始点0向逆时针方向移位代表的是正数增位序列 image 移位,由于对称,剩下的二次非剩余下标位置,必是顺时针方向的相反意义的二次剩余移位,由于二次剩余和非二次剩余之和为 image ,加上0位的一格即为哈希表总长度,因此,最终增量序列 image 可以扫描到全表。

三、总结

当哈希表长为形如 image 的质数时,移位增量序列 image 可以扫描到全表。

About

only discuss h(k,i) = h(k) + i^2 (mod p) form

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published