yzl_lec5

date: 25.08.18

课程大纲

  • 整数单元一次同余方程
  • 整数单元一次同余方程的首一化
  • 整数单元一次同余方程组的合并
  • 整数单元一次同余方程

    我们之前主要研究过整数二元一次不定方程 $$ ax + by = val $$ 的解 $(x,y)$ 构成的解集。

    现在研究这样的同余方程 $$ ax \equiv val \mod b $$ 的解集。不妨要求 $a,b$ 是正整数,$a$ 取 $1$ 到 $b-1$ 的值。

    其实是一样的,

    $$ ax \equiv val \mod b $$

  • 什么情况下同余方程无解?
  • 排除掉前面的情况,同余方程是否一定有解?
  • 可以怎么刻画这个解集?
  • 整数单元一次同余方程的首一化

    首一多项式

    对于一个多项式 $a_n x^{n} + a_{n-1} x^{n-1} + \cdots + a_0$, 如果它的最高次项系数 $a_n$ 为 $1$,则称它为首一多项式。

    多项式方程的首一化

    研究一个多项式方程 $a_n x^{n} + a_{n-1} x^{n-1} + \cdots + a_0 = 0$ 的解, 如果能把最高次项的系数转化成 $1$ 又不影响解集,则称这个过程为首一化。

    同余方程的首一化?

    $$ ax \equiv val \mod b $$ 它的解集,要么无解,等价于另一个首一的同余方程的解集。

    整数单元一次同余方程组的合并

    方程组

    当我们求解一组方程的时候,实际上是在找同时满足这些方程的解。

    这个过程其实可以看成,求各个方程对应的解集,然后找它们的交集。

    无解

    可以想象有两种情况会导致方程组无解。

  • 某条方程解集本身就是空集。
    (例如,其中一条方程 $0\cdot x = 1$。)
  • 解集之交的确为空。
    (例如,同时存在方程 $x=0$ 和 $x=1$。)
  • 在求解方程组时,局部无解的话,一般就可以不往下算了,判断全局无解。

    首一化

    本来我们应该要求解同余方程组 $$ \begin{cases} a_1\cdot x \equiv val_1 \mod b_1 \\ a_2\cdot x \equiv val_2 \mod b_2 \\ \cdots \\ a_n\cdot x \equiv val_n \mod b_n \\ \end{cases} $$ 如何首一化?

    问题的简化

    通过前面叙述的过程,要么前面局部发现无解直接判断全局无解。反之就是要求解同余方程组,形如 $$ \begin{cases} x \equiv val_1 \mod b_1 \\ x \equiv val_2 \mod b_2 \\ \cdots \\ x \equiv val_n \mod b_n \\ \end{cases} $$

    两个解集之交

    实际上,结果要么是空集,要么是另一个可以由同余方程确定的解集。后面我们就是要仔细研究其中的细节。

    把它们先打回不定方程的形式,也就是说,对于 $x$,它属于两个集合的交,当且仅当存在 $y_1,y_2$,使得 $$ \begin{cases} x+b_1\cdot y_1 = val_1 \\ x+b_2\cdot y_2 = val_2 \\ \end{cases} $$ 同时成立。

    无解?

    假设下面能同时成立 $$ \begin{cases} x+b_1\cdot y_1 = val_1 \\ x+b_2\cdot y_2 = val_2 \\ \end{cases} $$ 那么理应有 $$ b_1\cdot y_1 - b_2\cdot y_2 = val_1 - val_2 $$ 什么时候上面这条式子肯定不成立,从而导出假设必然是矛盾的(即交集必然为空)?

    反之,多出来的性质

    $$ val_1 - val_2 \equiv 0 \mod \gcd(b_1, b_2) $$ 记 $g = \gcd(b_1, b_2)$,$t = \frac{val_1 - val_2}{g}$,也可以写成 $$ g\cdot b_1' \cdot y_1 - g\cdot b_2' \cdot y_2 = g\cdot t $$ (注意,$g,t,b_1',b_2'$ 的生成不依赖于 $y_1,y_2$。它们是取 $y_1,y_2$ 之前就可以提前写好的两个东西。 它们在这里只是为了方便书写,以及便于洞察性质而辅助定义的。)

    更进一步

    可以看出,$y_1,y_2$ 应当满足 $$ b_1' \cdot y_1 - b_2' \cdot y_2 = t $$ 这可以推出,$y_1$ 在模 $b_2'$ 意义是一个定值。从而如果 $x$ 存在,则 $$ x = val_1 - b_1\cdot y_1 $$ 必然在模 $b_2'\cdot b_1$ 意义下是一个定值。把辅助定义的 $b_2'$ 写回来,即 $b_2'\cdot b_1 = \frac{b_1\cdot b_2}{\gcd(b_1,b_2)}$。

    怎么确定这个定值?以及从 $\subseteq$ 到 $=$

    把合并后的解集记作 $L$,那么目前只是说明 $L$ 里面的元素模意义下不会有两种值。 即有模 $\frac{b_1\cdot b_2}{\gcd(b_1,b_2)}$ 等于某个定值 $r$ 的集合记为 $R$, 使得 $L\subseteq R$。
    至于 $L$ 具体等于什么,甚至说是不是空集,都还没讨论完全。但这时会有一个操作能使得 $L$ 被确定:

    构造一个 $R = \{x : x\equiv r \mod \frac{b_1\cdot b_2}{\gcd(b_1,b_2)}\}$ 并发现 $$ L\supseteq R $$

    构造

    实际上这里存在一种简洁并且更适合拿来设计算法的方法,来找到这个值。对于 $b_1,b_2,g=\gcd(b_1,b_2)$,存在 $u,v$ 使得 $$ b_1 u + b_2 v = g $$ 取 $$ r = val_1 + \frac{val_2 - val_1}{g}\cdot u \cdot b_1 $$ 即可。(怎么验证?怎么记忆?)