Skip to content

第 10 章:取幂的均匀性与到达时间分布 ​

返回目录

10.1 均匀输入怎样才能产生均匀输出 ​

先说明一个将反复使用的计数原则。若X在一个有限集合S上均匀,令Y=f(X)。对于一个输出y,

P(Y=y)=\frac{|\{x\in S:f(x)=y\}|}{|S|}.

分子是产生y的输入个数,也称y的原像个数。因为每个输入概率相同,输出概率就由有多少个输入合到这里决定。若每个可能输出的原像一样多,输出才均匀;若f是双射,每个输出只有一个原像,当然也均匀。

所以“底数均匀”本身不足以推出“取幂后均匀”。下面必须实际检查这个取幂映射的原像数量,以及哪些映射是双射。

10.2 把模数的乘法周期拆成奇部和2的幂 ​

只分析模p,模q同理。把p-1中的因子2全部提出,写成

p-1=2^\alpha u,\qquad u\text{为奇数}.

\alpha表示p-1含有多少个因子2;因为p为奇质数,\alpha\ge1。另一方面,算法的指数是K=2^sr,r为奇数。由于p-1\mid K,有s\ge\alpha和u\mid r。

后一个整除关系为什么成立?u\mid2^sr,但u是奇数,与2^s互质,所以可以消去2^s,推出u\mid r。于是写r=uw,w也为奇数。

取模p的原根g,令h=g^u。因为g的阶为p-1=2^\alpha u,第4.4节给出

\operatorname{ord}_p(h)
=\frac{2^\alpha u}{\gcd(2^\alpha u,u)}=2^\alpha.

因此h生成一个恰有2^\alpha个元素的循环群

H_p=\{1,h,h^2,\ldots,h^{2^\alpha-1}\}\quad(\bmod p).

提出奇部u的作用,就是从长度2^\alpha u的原根循环中,得到长度纯为2的幂的循环。算法先算a^r,也会消去这个奇部;下一节把两件事连接起来。

10.3 为什么指数开始对2的幂取模 ​

原根给出唯一编号a\equiv g^k\pmod p,其中0\le k<2^\alpha u。取r=uw次幂后,

a^r\equiv(g^k)^{uw}=(g^u)^{kw}=h^{kw}\pmod p.

现在底数变为h,它的阶是2^\alpha。所以h^{kw}的值由指数kw\bmod2^\alpha决定。这就是为什么指数的模数变为2^\alpha。

幂值仍在模p下计算,指数则按h的周期取模2^\alpha。 没有把a^r\bmod p改成a^r\bmod2^\alpha。第4.3节的指数与幂值区分在这里再次出现。

10.4 为什么取幂后在这个循环群上均匀 ​

由第9章,a\bmod p在全部非零类上均匀。原根编号是双射,所以k也在0,\ldots,2^\alpha u-1上均匀。接着沿上一节的等式分三步看分布。

首先将k对2^\alpha取余。固定余数j,恰有

j,\ j+2^\alpha,\ \ldots,\ j+(u-1)2^\alpha

这u个编号产生它。每个余数的原像数相同,所以k\bmod2^\alpha均匀,每个概率为u/(2^\alpha u)=2^{-\alpha}。

其次把这个余数乘w。因为w为奇数,\gcd(w,2^\alpha)=1,乘法可消去:若wj_1\equiv wj_2\pmod{2^\alpha},必有j_1\equiv j_2。因此乘w是一个排列,kw\bmod2^\alpha仍均匀。此处只需要w与2^\alpha互质,不需要它与整个p-1互质。

最后由编号j转为h^j\bmod p。由于h的阶恰好为2^\alpha,这又是双射。所以

\boxed{a^r\bmod p\text{在 }H_p\text{上均匀,每个元素的概率为 }2^{-\alpha}.}

完整的依据依次是:原根给出双射编号,取余有等大小原像,乘奇数是排列,最后的幂编号又是双射。 取幂通常没有在全部p-1个非零类上保持均匀,而是在这个较小的H_p上均匀。

如果希望核对各步,可以取p=13:p-1=4\cdot3,选原根g=2,则h=8的阶为4。取r=9,有w=3;12个编号对4取余时每个余数有3个原像,乘3再把四个余数重排,因此输出1,8,12,5各占1/4。这个例子对应上面的原像数与排列,不承担一般证明。

10.5 到达时间为什么由元素阶决定 ​

令z=a^r\bmod p,它已在H_p中。假设z的阶为d。连续平方j次就是计算z^{2^j},所以第4.2节告诉我们

z^{2^j}\equiv1\pmod p\quad\Longleftrightarrow\quad d\mid2^j.

因为H_p是2^\alpha阶循环群,z的阶必为2^t,其中0\le t\le\alpha。这可以直接从z=h^k与幂阶公式d=2^\alpha/\gcd(2^\alpha,k)看出,也符合“元素阶整除群阶”的一般定理。

当d=2^t时,d\mid2^j等价于j\ge t,所以最早到1的时刻恰为T_p=t。t=0意味着d=1,即初始z已经是1。现在问题变成:H_p中有多少个元素的阶恰为2^t?

10.6 怎样从阶的个数得到概率 ​

先做一般计数。设h的阶为N,全部元素是h^k,0\le k<N。若d\mid N,由幂阶公式,h^k的阶恰好为d等价于

\gcd(N,k)=\frac Nd.

满足条件的编号必能写成k=(N/d)j,其中0\le j<d。代入最大公约数,条件进一步等价于\gcd(d,j)=1。这样的j恰有\varphi(d)个,所以循环群中阶恰为d的元素有\varphi(d)个。d=1时只有单位元;第16章保留完整的群论证明。

回到N=2^\alpha。阶为1的元素有1个;阶为2^t、1\le t\le\alpha的元素有\varphi(2^t)=2^{t-1}个。这是因为0至2^t-1中与2^t互质的编号正是奇数,恰占一半。

每个元素的概率已知为2^{-\alpha},因此

\boxed{
P(T_p=t)=
\begin{cases}
2^{-\alpha},&t=0,\\
2^{t-1-\alpha},&1\le t\le\alpha,\\
0,&\text{其他整数 }t.
\end{cases}}

这是“符合条件的元素个数除以全部元素个数”,不是把各个到达时间直接设成等可能。比如\alpha=2时,阶1、2、4分别有1、1、2个元素,所以T_p取0、1、2的概率为1/4,1/4,1/2。这个小例子显示:元素均匀,到达时间却不均匀,因为不同阶的元素数量不同。

一般情况下,所有概率的总和为(1+1+2+\cdots+2^{\alpha-1})/2^\alpha=1。而每个概率都不超过1/2:t=0用\alpha\ge1;1\le t\le\alpha时最大值在t=\alpha取得,恰为2^{\alpha-1}/2^\alpha=1/2。模q完全同理,只需把\alpha换成q-1中因子2的次数\beta。

保留每一次追问,认真走完每一步证明。