modify the representation of %.

This commit is contained in:
Shine wOng
2019-08-06 21:24:12 +08:00
parent a5552b2b69
commit 1c5eab7572

View File

@@ -138,7 +138,7 @@ $$
可是,关于平方试探法,我们不难提出一些问题,比如平方试探法果真可以覆盖整个散列表吗?是否存在散列表本来有空桶,却无法被探测到的现象?
这种情况是存在的,可以自己举一些例子要验证一下。不过,只要散列表长度$M$为素数,并且装填因子$\lambda \le 50\%$,则平方试探法迟早必然会终止于某个空桶,即$n^2 \% M$的取值恰好有$ceil(\frac{M}{2})$种,并且恰好由查找链的前$ceil(\frac{M}{2})$取遍。以下给出证明:
这种情况是存在的,可以自己举一些例子要验证一下。不过,只要散列表长度$M$为素数,并且装填因子$\lambda \le 0.5$,则平方试探法迟早必然会终止于某个空桶,即$n^2 \ mod\ M$的取值恰好有$ceil(\frac{M}{2})$种,并且恰好由查找链的前$ceil(\frac{M}{2})$取遍。以下给出证明:
设$a < b < ceil(\frac{M}{2})$,并且第$a$次试探与第$b$次试探冲突,即$a^2, b^2$是$M$的同余类
@@ -153,7 +153,7 @@ $$
> 双向平方试探法
根据上面的分析,在$M$为素数并且装填因子$\lambda < 50\%$的时候,单向平方试探法可以保证试探必然终止。一个自然的想法是,另一半的桶,是否也可以利用起来呢?这就是双向平方探测法。
根据上面的分析,在$M$为素数并且装填因子$\lambda < 0.5$的时候,单向平方试探法可以保证试探必然终止。一个自然的想法是,另一半的桶,是否也可以利用起来呢?这就是双向平方探测法。
双向平方探测法,就是在发生冲突时,依次向前向后进行平方探测,即
$$
@@ -191,6 +191,6 @@ $$
顾名思义,设置一个二级散列函数来确定试探位置,即
$$
[hash(key) + j \times hash_2(key)] \% M
[hash(key) + j \times hash_2(key)] \ mod\ M
$$
其他的方法其实都可以视作再散列法的一个实例。