题外话-基于Scharz-Zippel Lemma的Hash错误率证明

(一)$ \text{Scharz-Zippel Lemma}$ 引理

设:
(1)\(\mathbb{F}\)是任意域(E.g实数域、复数域)。
(2)\(f(x_1,x_2,...,x_n)\)是定义在\(\mathbb F\)上的非零\(n\)变元多项式,且全次数(total degree)\(d\)
(3)\(S ⊆ \mathbb F\)是一个有限子集。
(4)随机点\(r_1,r_2,...,r_n\)\(S\)中独立均匀抽取。
\(f\)在随机点处取零的概率满足:

\[Pr[f(r_1,r_2,...,r_n) = 0]\le \frac{d}{s},(s是S的大小) \]

证明

命题:对于Hash函数\(H(s)=\Sigma_{i=1}^{k}s_i \cdot p^i \mod M_1\)
出错概率的上界为\(O(\frac{L}{M_1}),\text{(L是字符串平均长度)}\)
\(Proof\)
不妨取两个字符串\(m_1, m_2\),则命题可以化归为证明\(H(m_1)-H(m_2)≡0(\mod M_1)\)
又不难证明\(H(m_1)-H(m_2)≡0\)等价于\(M_1 | H(m_1)-H(m_2)\)
那不妨假设两个字符串长度一样,都等于\(L\)
\(H(m_3)=H(m_1)-H(m_2)\)
命题转化成证明\(H(m_3)\)取到零的概率
又注意到\(H(m_1),N(m_2)\)的次数(当做全次数)为\(L\),而\(m_1, m_2\)的取值范围为模\(M_1\)的完全剩余系(\(S=\{0,1,2,...,M_1-1\}\))
套用\(\text{Scharz-Zippel}\)引理易知:

\[Pr[H(M_3)=0] \le \frac{L}{M_1} \]

即该Hash函数出错概率不超过\(\frac{L}{M_1}\)
证毕

posted @ 2025-12-13 17:28  Yangyihao  阅读(2)  评论(0)    收藏  举报