Schwartz–Zippelの補題

同義語:Schwartz-Zippelの補題シュワルツ–ジッペルの補題DeMillo–Lipton–Schwartz–Zippelの補題Schwartz–Zippel lemmaSchwartz-Zippel lemma

概要

Schwartz–Zippelの補題(Schwartz–Zippel lemma)とは、体 $K$ 上の $0$ でない $n$ 変数多項式 $P$ の全次数が $d$ 以下なら、$K$ の空でない有限集合 $S_1,\dots,S_n$ から各座標を独立に一様に選んだ点で $P$ が $0$ になる確率は $d/\min_i\lvert S_i\rvert$ 以下である、という定理である。変数の個数についての帰納法と、1 変数多項式の根の個数が次数以下であることから示される。系として、全次数がどの $\lvert S_i\rvert$ より小さい多項式が格子 $S_1\times\cdots\times S_n$ の全体で消えれば $0$ であることも従う。展開せずに無作為な点での値で多項式の恒等式を判定する乱択アルゴリズムの根拠であり、完全マッチングの判定などに使われる。

$$\newcommand{C}[0]{\mathbb{C}} \newcommand{div}[0]{\mathbin{÷}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{Z}[0]{\mathbb{Z}} $$

前提知識: 多項式環, 剰余の定理と因数定理, 数学的帰納法

Schwartz–Zippel の補題(Schwartz–Zippel lemma)は、体 $K$ 上の $0$ でない多変数多項式 $P$ が、有限集合の直積 $S_1\times\cdots\times S_n$ の点でどれだけ $0$ になりうるかを、$P$ の全次数 $d$ だけで抑える定理である。点を一様に選ぶと、$P$ がそこで $0$ になる確率は $d/\min_i\lvert S_i\rvert$ 以下である。
1 変数の多項式なら、剰余の定理と因数定理 の定理「根の個数は次数以下」により、$0$ でない $d$ 次以下の多項式の根は $d$ 個以下である。このため、2 つの 1 変数多項式が等しいかどうかは $d+1$ 個の点での値を比べれば決まる(三角関数の公式を確かめる方法 の定理「有限個の値で多項式が一致すれば恒等式」)。変数が $n$ 個になると、係数が実数なら、格子 $\{0,1,\dots,d\}^n$ の $(d+1)^n$ 個の点で値を比べれば決まる(cor-sz-grid)が、点の数は $n$ について指数的に増える。Schwartz–Zippel の補題は、点を無作為に選べば $1$ 点でも高い確率で違いが分かることを示す。これは、式を展開せずに多項式の恒等式を確かめる乱択アルゴリズム(多項式恒等性テスト)の根拠になる。

定義と主定理

以下、$K$ は体、$n\ge1$ とし、$K[x_1,\dots,x_n]$ の元の 全次数 は 多項式環 の定義「多変数の多項式環」の意味とする。$0$ でない定数の全次数は $0$ である。

零点の個数

$S_1,\dots,S_n$ を $K$ の空でない有限部分集合、$P\in K[x_1,\dots,x_n]$ とする。
$$ Z(P;S_1,\dots,S_n):=\{a=(a_1,\dots,a_n)\in S_1\times\cdots\times S_n\mid P(a)=0\} $$
を、$P$ の $S_1\times\cdots\times S_n$ の中の 零点の集合 という。各 $a_i$ を $S_i$ から独立に一様に選ぶとき、$P(a)=0$ となる確率は $\lvert Z(P;S_1,\dots,S_n)\rvert/(\lvert S_1\rvert\cdots\lvert S_n\rvert)$ である。

Schwartz–Zippelの補題

$S_1,\dots,S_n$ を $K$ の空でない有限部分集合とし、$m:=\min_i\lvert S_i\rvert$、$N:=\lvert S_1\rvert\cdots\lvert S_n\rvert$ とおく。$P\in K[x_1,\dots,x_n]$ が $0$ でなく、全次数が $d$ 以下ならば
$$ \lvert Z(P;S_1,\dots,S_n)\rvert\le\frac dm\,N $$
である。すなわち、各 $a_i$ を $S_i$ から独立に一様に選ぶとき、$P(a)=0$ となる確率は $d/m$ 以下である。とくに $S_1=\cdots=S_n=S$ なら、零点は $d\lvert S\rvert^{n-1}$ 個以下である。

変数の個数についての帰納法

$n$ についての帰納法で示す。
$n=1$ の場合。 $P$ は $0$ でない 1 変数多項式で次数を $e\le d$ とすると、多項式環 の定理「根の個数」により $P$ の $K$ の中の根は $e$ 個以下である。よって $\lvert Z(P;S_1)\rvert\le e\le d=\frac d{\lvert S_1\rvert}N$ である。
$n\ge2$ の場合。 変数の個数が $n-1$ のとき主張が成り立つとする。多項式環 の系「多変数の普遍性と変数の順序」により $K[x_1,\dots,x_n]=K[x_2,\dots,x_n][x_1]$ とみなし、
$$ P=\sum_{i=0}^{k}x_1^{\,i}\,P_i(x_2,\dots,x_n),\qquad P_k\neq0 $$
と書く($P\neq0$ なので、$0$ でない $P_i$ のうち $i$ が最大のものを $P_k$ とする)。$x_1^{\,i}$ と $P_i$ の単項式の積は $P$ の単項式なので、$P_i$ の全次数は $d-i$ 以下であり、とくに $P_k$ の全次数は $d-k$ 以下である。
$a'=(a_2,\dots,a_n)\in S':=S_2\times\cdots\times S_n$ を 2 種類に分ける。

  • $P_k(a')=0$ となる $a'$ の集合を $E$ とする。帰納法の仮定を $P_k$ と $S_2,\dots,S_n$ に使うと、$\lvert E\rvert\le\frac{d-k}m\lvert S'\rvert$ である($\min_{i\ge2}\lvert S_i\rvert\ge m$ なので)。$a'\in E$ については、$P(a_1,a')=0$ となる $a_1\in S_1$ は高々 $\lvert S_1\rvert$ 個である。
  • $a'\notin E$ なら、$P(x_1,a')=\sum_{i=0}^k P_i(a')x_1^{\,i}$ は $x_1^{\,k}$ の係数が $P_k(a')\neq0$ の $k$ 次の 1 変数多項式なので、根は $k$ 個以下である。よって $P(a_1,a')=0$ となる $a_1\in S_1$ は $k$ 個以下である。
    $a'$ ごとに数えて足すと、$\lvert S'\rvert\,\lvert S_1\rvert=N$ と $k\le\frac km\lvert S_1\rvert$ から
    $$ \lvert Z(P;S_1,\dots,S_n)\rvert\le\lvert E\rvert\,\lvert S_1\rvert+k\,\lvert S'\rvert\le\frac{d-k}mN+\frac kmN=\frac dmN $$
    である。$\square$

$d\ge m$ のときは主張は自明(零点の数は $N$ 以下)なので、意味があるのは $d< m$ のときである。評価は改良できない:$d\le\lvert S\rvert$ のとき、相異なる $s_1,\dots,s_d\in S$ について $P:=(x_1-s_1)\cdots(x_1-s_d)$ は全次数 $d$ で、$S^n$ の中の零点は $a_1\in\{s_1,\dots,s_d\}$ となる点のちょうど $d\lvert S\rvert^{n-1}$ 個である。
全次数のかわりに各変数ごとの次数で測ると、次の形になる。全次数 $d$ の多項式では各変数の次数も $d$ 以下なので、$S_1=\cdots=S_n=S$ のときこの形の評価は $nd/\lvert S\rvert$ となり、thm-sz-main より弱い。また $S_1=\cdots=S_n$ のときは $d\le d_1+\cdots+d_n$ なので、この形が thm-sz-main より強くなることはない。一方、$\lvert S_i\rvert$ が変数ごとに違うときは、この形のほうが強いこともある。たとえば $P=x_1^{10}x_2$、$\lvert S_1\rvert=100$、$\lvert S_2\rvert=2$ では、この形の評価は確率 $\frac{10}{100}+\frac12=0.6$ だが、thm-sz-main の評価 $\frac{11}2$ は $1$ を超えるので何も言わない。

各変数の次数による評価

$S_1,\dots,S_n$ を $K$ の空でない有限部分集合、$N:=\lvert S_1\rvert\cdots\lvert S_n\rvert$ とする。$0$ でない $P\in K[x_1,\dots,x_n]$ の $x_i$ についての次数が $d_i$ 以下($i=1,\dots,n$)ならば
$$ \lvert Z(P;S_1,\dots,S_n)\rvert\le\Bigl(\frac{d_1}{\lvert S_1\rvert}+\cdots+\frac{d_n}{\lvert S_n\rvert}\Bigr)N $$
である。

prf-sz-main と同じく $n$ についての帰納法で示す。$n=1$ は根の個数が $d_1$ 以下であることによる。$n\ge2$ では、prf-sz-main と同じく $P=\sum_{i=0}^kx_1^{\,i}P_i$($P_k\neq0$)と書くと $k\le d_1$ であり、$P_k$ の $x_j$ についての次数は $d_j$ 以下($j\ge2$)である。帰納法の仮定から $\lvert E\rvert\le\bigl(\sum_{j\ge2}d_j/\lvert S_j\rvert\bigr)\lvert S'\rvert$ で、$a'\notin E$ では零点は $k\le d_1$ 個以下なので、$\lvert Z\rvert\le\lvert E\rvert\lvert S_1\rvert+d_1\lvert S'\rvert\le\bigl(\sum_{j\ge2}d_j/\lvert S_j\rvert+d_1/\lvert S_1\rvert\bigr)N$ である。$\square$

格子で消える多項式

$P\in K[x_1,\dots,x_n]$ の全次数が $d$ 以下で、$\lvert S_i\rvert> d$($i=1,\dots,n$)を満たす有限集合 $S_i\subset K$ について、$P$ が $S_1\times\cdots\times S_n$ のすべての点で $0$ になるならば、$P=0$ である。とくに $K$ が無限体なら、$K^n$ のすべての点で $0$ になる多項式は $0$ だけであり、2 つの多項式は多項式関数として等しければ多項式として等しい。

$P\neq0$ なら thm-sz-main により零点は $\frac dmN< N$ 個($m>d$ なので)であり、すべての点で $0$ になることに反する。$K$ が無限体なら、各 $S_i$ として $d+1$ 個の元をとればよい。$\square$

乱択による多項式恒等性テスト

多項式 $P$ が式の形ではなく、値を計算する手順(たとえば行列式や、四則演算を組み合わせた計算)として与えられていることがある。展開すると項の数が膨大になるが、点での値はすぐ計算できる。このとき次の手順で $P=0$ かどうかを判定する。

繰り返しによる誤りの確率

$P\in K[x_1,\dots,x_n]$ の全次数が $d$ 以下であるとし、有限集合 $S\subset K$ を $\lvert S\rvert\ge2d$ ととる。$S^n$ の点 $a^{(1)},\dots,a^{(t)}$ を独立に一様に選び、$P(a^{(j)})$ がすべて $0$ なら「$P=0$」、どれかが $0$ でなければ「$P\neq0$」と答える。

  1. $P=0$ なら、答えは必ず正しい。$P\neq0$ と答えたときも、答えは必ず正しい。
  2. $P\neq0$ なら、誤って「$P=0$」と答える確率は $(d/\lvert S\rvert)^t\le2^{-t}$ 以下である。

1:$P=0$ ならどの点でも値は $0$ なので「$P=0$」と答える。「$P\neq0$」と答えるのは $0$ でない値が実際に見つかったときである。
2:$P\neq0$ とする。誤るのは $t$ 個の点がすべて零点のときで、点は独立なので、その確率は 1 点が零点になる確率の $t$ 乗である。thm-sz-main によりこれは $(d/\lvert S\rvert)^t$ 以下で、$\lvert S\rvert\ge2d$ から $2^{-t}$ 以下である。$\square$

誤りが一方の向きにしか起こらない(「$P\neq0$」という答えは常に正しい)ので、繰り返すほど誤りの確率が指数的に小さくなる。足し算・引き算・掛け算を組み合わせた回路(算術回路)で与えられた多項式でも、回路に沿って点での値を計算すれば同じ手順が使える。乱択アルゴリズムの計算量の枠組みは 計算量理論 で扱う。

恒等式の誤りを無作為な点で見つける

「$(x+y+z)^3-x^3-y^3-z^3=3(x+y+z)(xy+yz+zx)$」という式が正しいかを確かめる。左辺から右辺を引いた多項式を $P$ とすると、$(x+y)(y+z)(z+x)=(x+y+z)(xy+yz+zx)-xyz$ と、正しい恒等式 $(x+y+z)^3-x^3-y^3-z^3=3(x+y)(y+z)(z+x)$ から $P=-3xyz$ である。よってこの式は誤りで、正しいのは右辺を $3(x+y)(y+z)(z+x)$ とした式である。
展開せずに調べる場合を考える。$P$ の全次数は $3$ 以下なので、$S=\{0,1,\dots,9\}$ から $x,y,z$ を独立に一様に選ぶと、thm-sz-main により $P=0$ となる確率は $3/10$ 以下である。実際には $P=-3xyz$ が $0$ になるのはどれかの座標が $0$ のときで、その確率は $1-(9/10)^3=0.271$ である。たとえば $(x,y,z)=(1,2,3)$ では左辺 $216-1-8-27=180$、右辺 $3\cdot6\cdot11=198$ で、1 点で誤りが分かる。

多項式の積を 1 点で検算する

有理数係数の 1 変数の多項式 $A$、$B$(次数 $d$ 以下)と、積として計算した多項式 $C$(次数 $2d$ 以下)がある。$C=AB$ かどうかを、展開をやり直さずに確かめたい。$S=\{1,2,\dots,4d\}$ から $r$ を一様に選び、$A(r)B(r)$ と $C(r)$ を比べる。$C\neq AB$ なら $C-AB$ は次数 $2d$ 以下の $0$ でない多項式なので、根は $2d$ 個以下であり、$A(r)B(r)=C(r)$ となる確率は $2d/4d=1/2$ 以下である。値の計算は Horner の方法でそれぞれ $d$ 回か $2d$ 回程度の掛け算で済み、積を展開し直す($d^2$ 回程度の掛け算)より少ない。ここでは $n=1$ なので、thm-sz-main は根の個数の評価そのものである。

Vandermonde の行列式を無作為な点で確かめる

$3\times3$ の行列式について
$$ \det\begin{pmatrix}1&x&x^2\\1&y&y^2\\1&z&z^2\end{pmatrix}=(y-x)(z-x)(z-y) $$
(Vandermondeの行列式)を確かめる。両辺の差を $P$ とすると全次数は $3$ 以下である。$S=\{0,1,\dots,9\}$ から独立に選んだ点 $(x,y,z)=(2,5,7)$ では、左辺は $1\cdot(5\cdot49-7\cdot25)-2\cdot(49-25)+4\cdot(7-5)=70-48+8=30$、右辺は $3\cdot5\cdot2=30$ で一致する。もし $P\neq0$ なら、1 点で一致してしまう確率は thm-sz-main により $3/10$ 以下なので、独立に選んだ $10$ 点ですべて一致すれば、誤った式を見逃す確率は $(3/10)^{10}< 10^{-5}$ である(prop-sz-repeat の 2 の計算)。これは恒等式の証明ではないが、cor-sz-grid によれば、$\{0,1,2,3\}^3$ の $64$ 点すべてで一致すれば証明になる。

二部グラフの完全マッチングと行列式

二部グラフ $G$ の頂点が $u_1,\dots,u_n$ と $v_1,\dots,v_n$ に分かれているとする。$n\times n$ 行列 $X$ を、$u_iv_j$ が辺なら $(i,j)$ 成分を変数 $x_{ij}$、辺でなければ $0$ と定める。行列式 の定義から
$$ \det X=\sum_{\sigma}\operatorname{sgn}(\sigma)\prod_{i=1}^nX_{i\sigma(i)} $$
($\sigma$ は $\{1,\dots,n\}$ の置換全体を動く)であり、$\sigma$ の項が $0$ でないのは、すべての $i$ で $u_iv_{\sigma(i)}$ が辺のとき、すなわち $\{u_iv_{\sigma(i)}\}$ が $G$ の完全マッチング(マッチング(グラフ理論))のときである。異なる $\sigma$ の項は異なる単項式 $\prod_ix_{i\sigma(i)}$ なので打ち消し合わない。したがって、$\det X\neq0$(多項式として)であることと、$G$ が完全マッチングをもつことは同値である。
$\det X$ の全次数は $n$ なので、$S=\{1,2,\dots,2n\}$ から各 $x_{ij}$ を独立に一様に選んで数値の行列式を計算すると、完全マッチングがあるときは thm-sz-main により確率 $1/2$ 以上で $0$ でない値が出て、ないときは値は必ず $0$ である。数値の行列式は掃き出し法で $n^3$ 程度の四則演算で求まる。

例と反例

次の表は、thm-sz-main と cor-sz-grid の仮定を 1 つずつ外した例である。

外す条件反例成り立たなくなること
$P\neq0$$P=0$零点の集合が $S_1\times\cdots\times S_n$ 全体になる
$K$ が体環 $\mathbb{Z}/6\mathbb{Z}$ で $n=1$、$S_1=\mathbb{Z}/6\mathbb{Z}$、$P=3x$(次数 $1$)零点 $\{0,2,4\}$ は $3$ 個で、$\frac dmN=1$ を超える
$d$ を全次数とすること$n=2$、$S_1=S_2=S$($\lvert S\rvert\ge2$)、$P=(x_1-s)(x_2-s)$($s\in S$、各変数の次数は $1$)各変数の次数の最大値 $1$ を $d$ に使うと $\lvert S\rvert$ 個以下となるはずが、零点は $2\lvert S\rvert-1$ 個
$\lvert S_i\rvert>d$(cor-sz-grid)素数 $p$ について $K=S_1=\mathbb{F}_p$、$P=x^p-x$$0$ でないのに $\mathbb{F}_p$ のすべての点で $0$ になる

確かめ:2 行目では $3x=0$ と $x\in\{0,2,4\}$ が同値である。$\mathbb{Z}/6\mathbb{Z}$ は零因子 $2,3$ をもつので、根の個数を抑える議論(多項式環 の定理「根の個数」の証明で、$(\beta-\alpha)^k$ で割る所と約分する所)が使えない。3 行目では零点は $a_1=s$ または $a_2=s$ の点で、$\lvert S\rvert+\lvert S\rvert-1$ 個である。全次数は $2$ なので thm-sz-main の評価 $2\lvert S\rvert$ とは矛盾しない。4 行目は 有限体 の系「有限体における $x^q=x$」による(全次数 $p$ と $\lvert S_1\rvert=p$ が等しく、仮定 $\lvert S_1\rvert>d$ だけが破れている)。

出典

Sho08 の演習 7.24(§7.2、p. 185)は、整域 $D$ と空でない有限集合 $S\subset D$ について、全次数 $k$ の多項式の $S^n$ の中の零点が $k\lvert S\rvert^{n-1}$ 個以下であることを問うている。これは thm-sz-main で $S_1=\cdots=S_n=S$ とした場合を整域に広げた形で、整域はその分数体に含まれるので thm-sz-main から従う。

関連項目

参考文献

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する