皆様ごきげんよう。
突然ですが、まずはこちらの問題をご覧ください。よければ少し考えてみてください。
問題|カードの積が平方数となる確率
$n$を正の整数とする。$1,2,3,4$と書かれた$4$枚のカードから、毎回等確率で$1$枚を選び、元に戻す操作を独立に$n$回行う。選んだカードに書かれた数の積を$X_n$とするとき、$X_n$が平方数となる確率を求めよ。
$2,3,4$を選んだ回数をそれぞれ$a,b,c$とすると、$X_n=2^{a+2c}3^b$なので、平方数となる条件は$a,b$がともに偶数であること。
$2$または$3$を選ぶ回数を$k$とする。$k=0$なら、すべて$1$か$4$を選ぶので$2^n$通り。
$k$が正の偶数なら、その位置は${}_nC_k$通り。固定した$k$個の位置への$2,3$の入れ方のうち、両方の個数が偶数となるものは$2^{k-1}$通りである。実際、最初の$k-1$個を自由に決めると、$2$の個数が偶数となるように最後の一つが決まり、$k$も偶数なので$3$の個数も偶数になる。残りの位置は$1,4$のいずれかなので$2^{n-k}$通り。
$k$が奇数なら条件を満たさない。二項定理から、偶数番目の二項係数の和は$2^{n-1}$であるため、求める場合の数は
$\displaystyle 2^n+2^{n-1}\bigl(2^{n-1}-1\bigr)=4^{n-1}+2^{n-1}$
となる。全$4^n$通りは等確率なので、求める確率は$\displaystyle\frac14+\frac1{2^{n+1}}$。
$X_n=2^{A_n}3^{B_n}$と書き、平方数となる確率を$p_n$とする。$A_n+B_n$の偶奇は、$1,4$を選ぶと変わらず、$2,3$を選ぶと反転する。したがって$n\geq1$では、$A_n+B_n$が奇数である確率は$1/2$。
次の一回で平方数になるのは、両指数が偶数の状態から$1$か$4$を選ぶ場合と、一方だけが奇数の状態から、その指数を反転させるカードを選ぶ場合である。よって
$\displaystyle p_{n+1}=\frac12p_n+\frac14\cdot\frac12=\frac12p_n+\frac18$
となる。$p_1=1/2$と$\displaystyle p_{n+1}-\frac14=\frac12\left(p_n-\frac14\right)$より、$\displaystyle p_n=\frac14+\frac1{2^{n+1}}$。
多項式を使った解答
$F(x,y)=(1+x+y+x^2)^n$とおく。$x^ay^b$の係数は、$X_n=2^a3^b$となる選び方の個数を表す。したがって、平方数となる選び方の個数は
$\displaystyle\begin{aligned}\frac14\bigl\{&F(1,1)+F(-1,1)\\&+F(1,-1)+F(-1,-1)\bigr\}\end{aligned}$
$\displaystyle =\frac{4^n+2^n+2^n+0^n}{4}=4^{n-1}+2^{n-1}$
である。全$4^n$通りで割れば、求める確率は$\displaystyle\boxed{\frac14+\frac1{2^{n+1}}}$。
まずは、よく知っている式から始めましょう。
$$
(1+x)^n=\underbrace{(1+x)(1+x)\cdots(1+x)}_{n\text{個}}
$$
この積を展開するときは、各括弧から$1$または$x$を一つずつ選び、それらを掛けます。
$x^k$を作るには、ちょうど$k$個の括弧から$x$を選べばよい。その選び方は${}_nC_k$通りなので、$x^k$の係数は${}_nC_k$です。これが
$$
(1+x)^n=\sum_{k=0}^{n}{}_nC_kx^k
$$
という二項定理の、場合の数としての意味でした。
基本の見方
積を展開することは、それぞれの括弧から一項ずつ選ぶこと。同じ結果になる選び方がまとまると、その個数が係数になる。
冒頭の問題では、積そのものを計算しなくても、素因数$2,3$の指数が分かれば平方数かどうかを判定できます。
そこで、$2$の指数を$x$の指数に、$3$の指数を$y$の指数に記録します。
| カード | 素因数の指数が分かる形 | 記録する単項式 |
|---|---|---|
| $1$ | $2^0 3^0$ | $1=x^0y^0$ |
| $2$ | $2^1 3^0$ | $x$ |
| $3$ | $2^0 3^1$ | $y$ |
| $4$ | $2^2 3^0$ | $x^2$ |
$1$も一つの選択肢です。指数を増やさない選択なので、$0$ではなく$x^0y^0=1$で記録します。
一回の選択では、これら四つのうちどれか一つを選びます。その選択肢を、括弧の中に
$$
1+x+y+x^2
$$
と並べておきます。ここでの足し算は、四枚を同時に選ぶという意味ではありません。展開するときに選べる項を、一つの括弧に用意しているのです。
三回の選択なら、括弧を三つ用意します。
$$
\begin{aligned}
&(1+x+y+x^2)(1+x+y+x^2)\\
&\qquad{}\times(1+x+y+x^2)
\end{aligned}
$$
第一の括弧から選ぶ項は一回目のカード、第二は二回目、第三は三回目に対応します。分配法則で展開すると、各括弧から一項ずつ選ぶすべての組合せが、一度ずつ現れます。
例えば、カードを$2,4,3$の順に選んだ場合、対応する項は
$$
x\cdot x^2\cdot y=x^3y
$$
です。一方、カードの積も$2\cdot4\cdot3=2^3 3^1$。$x,y$の指数が、素因数$2,3$の指数をそのまま記録しています。
カードの数を掛けると素因数の指数が足され、単項式を掛けても文字の指数が足される。この対応があるので、複数回の選択を積で表せるわけです。
同様に$n$回なら、一回につき一つ、合計$n$個の括弧を用意して
$$
F(x,y)=(1+x+y+x^2)^n
$$
となります。$x,y$は、今の段階では値を求める未知数というより、情報を記録するための記号だと思ってください。
例えば二回の選択で積が$4$になるのは、順序を区別して
$$
(1,4),\quad(2,2),\quad(4,1)
$$
の三通りです。展開では、それぞれ$1\cdot x^2$、$x\cdot x$、$x^2\cdot1$を生みます。まとめると$3x^2$となり、係数$3$に三通り分の情報が残ります。
一般にも、まとめる前の各項は一つの選択列に対応し、その係数は$1$です。同じ$x^ay^b$を生む項を足し合わせれば、係数はその選択列の個数になります。
記録できた情報
$F(x,y)$における$x^ay^b$の係数は、積が$2^a3^b$となる選択列の個数。指数が状態を表し、係数がその状態になる場合の数を表します。
まず、一変数の有限多項式
$$
P(x)=a_0+a_1x+a_2x^2+\cdots+a_Nx^N
$$
を考えます。$x=1$を代入すると、すべての$x^k$が$1$になるので、$P(1)$は係数全体の和です。
一方、$x=-1$なら、偶数次の項はそのまま、奇数次の項は符号が反転します。偶数次の係数和を$E$、奇数次の係数和を$O$とおけば、
$$
P(1)=E+O,\qquad P(-1)=E-O.
$$
足し算と引き算から、次の二式が得られます。
取り出し方|偶数次・奇数次の係数和
$\displaystyle E=\frac{P(1)+P(-1)}2$
$\displaystyle O=\frac{P(1)-P(-1)}2$
冒頭の$F(x,y)$へ戻りましょう。平方数となる条件は、$x$の指数も$y$の指数も偶数であることでした。
まずは$y$をそのままにして、$x$についてだけ操作します。
$$
H(y)=\frac{F(1,y)+F(-1,y)}2
$$
例えば、元の項が$c x^a y^b$なら、この操作による寄与は
$$
c\,\frac{1+(-1)^a}{2}\,y^b
$$
です。$a$が奇数なら$0$、偶数なら$c y^b$になります。つまり、$x$の指数が偶数である場合だけが残り、$y$の指数の情報はまだ保たれています。
次に、$H(y)$から$y$の偶数次の係数和を取り出します。求める個数を$N_n$とすると、
$$
N_n=\frac{H(1)+H(-1)}2.
$$
$H$の式を戻せば、
$$
\begin{aligned}
N_n=\frac14\bigl\{&F(1,1)+F(-1,1)\\
&+F(1,-1)+F(-1,-1)\bigr\}
\end{aligned}
$$
です。冒頭の四つの代入は、偶数次を取り出す操作を、二つの変数に一回ずつ行ったものでした。
あとは代入するだけです。
| $(x,y)$ | $1+x+y+x^2$ | $F(x,y)$ |
|---|---|---|
| $(1,1)$ | $4$ | $4^n$ |
| $(-1,1)$ | $2$ | $2^n$ |
| $(1,-1)$ | $2$ | $2^n$ |
| $(-1,-1)$ | $0$ | $0$ |
$n\geq1$なので、最後の値は$0$です。したがって
$$
N_n=\frac{4^n+2^{n+1}}4=4^{n-1}+2^{n-1}.
$$
冒頭の問題の答え
$\displaystyle\Pr(X_n\text{が平方数})=\frac{N_n}{4^n}=\boxed{\frac14+\frac1{2^{n+1}}}$
別の問題で使うには、「あの多項式」を覚えるより、何を指数に記録すると、最後の条件を読み取れるかを考えることが大切です。
今回、変数が二つだったのは、平方数判定のために素因数$2,3$の指数を別々に追跡する必要があったからです。$5$の指数も必要なら、
$$
2^a3^b5^c\longleftrightarrow x^ay^bz^c
$$
とすればよい。同じように、選んだ枚数と数の和など、性質の違う情報も同時に記録できます。
変数を用意する目安
別々に追跡したい、足し合わされる量一種類につき一変数。ここで「別々」とは、確率的に独立という意味ではありません。二つの量が関係し合っていても、二変数で記録できます。
次の問題では、何を記録すればよいでしょうか。解答を開く前に、一枚のカードに対応する括弧を考えてみてください。
小さな練習|自分で記録を作る
$1,2,3,4,5,6$と書かれた六枚のカードから三枚を選ぶ。選んだ数の和が偶数となる選び方は何通りか。ただし、選ぶ順序は区別しない。
今回は$t$の指数に選んだ枚数、$x$の指数に数の和を記録します。数字$j$のカードについて、「選ばない」を$1$、「選ぶ」を$tx^j$とすれば、一枚分は$1+tx^j$です。
$\displaystyle G(t,x)=(1+tx)(1+tx^2)\cdots(1+tx^6)$
とおくと、$t^3x^s$の係数は、三枚を選んで和が$s$となる場合の数です。一つの括弧が一枚に対応するため、同じカードを二度選ぶことも、選ぶ順序による重複も起こりません。
和が偶数のものを残すには、$\{G(t,1)+G(t,-1)\}/2$を考え、その$t^3$の係数を読みます。
$\displaystyle G(t,1)=(1+t)^6,\qquad G(t,-1)=(1-t^2)^3$
なので、後者に$t^3$の項はありません。答えは$\displaystyle\frac12{}_6C_3=10$通りです。
普通に数えるなら、「奇数のカードが零枚または二枚」として${}_3C_3+{}_3C_2{}_3C_1=10$でも求まります。ここで練習したいのは、一枚ごとの選択と、記録したい二つの量から式を組み立てる部分です。
問題を前にしたときの考え方
ここからは発展
本編では、$1,-1$の代入で偶数次を取り出しました。ここでは、指数をある数で割った余りを指定して取り出せるようにします。
$1,-1$は、どちらも二乗すると$1$になる数でした。では、三乗すると$1$になる数を使えばどうでしょうか。
$z^3=1$を解くと、
$$
1,\quad\frac{-1+\sqrt3\,i}{2},\quad\frac{-1-\sqrt3\,i}{2}
$$
の三つです。二番目の数を$u$と書くことにすると、三番目は$u^2$であり、
$$
u^3=1,\qquad 1+u+u^2=0
$$
が成り立ちます。
ここで、$P(1)+P(u)+P(u^2)$を考えます。元の$a_kx^k$という項は、足し合わせると$a_k(1+u^k+u^{2k})$を生みます。
| 指数$k$を$3$で割った余り | $1+u^k+u^{2k}$ |
|---|---|
| $0$ | $1+1+1=3$ |
| $1$ | $1+u+u^2=0$ |
| $2$ | $1+u^2+u^4=1+u^2+u=0$ |
したがって、三つの値を足して$3$で割れば、指数が$3$の倍数の項の係数だけが残ります。
$$
\frac{P(1)+P(u)+P(u^2)}3=a_0+a_3+a_6+\cdots
$$
右辺は、$P$の次数以下の項までの有限和です。例えば$P(x)=1+2x+3x^2+4x^3+5x^4$なら、この値は$1+4=5$となります。
使ってみる|1、2、4のカード
$1,2,4$の三枚から独立に等確率で、元に戻して$n$回選ぶとします。積が立方数となる条件は、素因数$2$の指数が$3$の倍数であること。一回分を$1+x+x^2$と記録すれば、$n\geq1$で、その場合の数は
$\displaystyle\frac{3^n+(1+u+u^2)^n+(1+u^2+u^4)^n}{3}=3^{n-1}$
です。全$3^n$通りで割ると、確率は$1/3$となります。
$m$を$2$以上の整数とし、
$$
q=\cos\frac{2\pi}{m}+i\sin\frac{2\pi}{m}
$$
とおきます。ド・モアブルの定理より、$z^m=1$の$m$個の解は
$$
1,q,q^2,\ldots,q^{m-1}
$$
です。$q$は一回掛けるごとに角度$2\pi/m$だけ回る数で、$q^d=1$となるのは整数$d$が$m$の倍数のときに限ります。
整数$d$について、次の和を調べましょう。
$$
1+q^d+q^{2d}+\cdots+q^{(m-1)d}
$$
$d$が$m$の倍数なら、各項が$1$なので和は$m$。そうでなければ、公比$q^d\ne1$の等比数列の和として
$$
\frac{1-(q^d)^m}{1-q^d}=0
$$
となります。分子が$0$なのは、$(q^d)^m=(q^m)^d=1$だからです。負の$d$についても同じ議論が成り立ちます。
一項$a_kx^k$にこの仕組みを使うと、$m$の倍数の次数だけが残るので、有限多項式$P(x)=\sum_{k=0}^{N}a_kx^k$について、
$$
\frac1m\sum_{j=0}^{m-1}P(q^j)
=\sum_{\substack{0\leq k\leq N\\k\equiv0\pmod m}}a_k
$$
が得られます。右辺は、「$0\leq k\leq N$のうち、$k$が$m$の倍数であるものだけで足す」という意味です。
例えば$3$で割って$1$余る次数を取り出したいなら、
$$
\frac{P(1)+u^{-1}P(u)+u^{-2}P(u^2)}3
$$
とします。元の$a_kx^k$に掛かる数が、今度は$\{1+u^{k-1}+u^{2(k-1)}\}/3$となるため、$k-1$が$3$の倍数のときだけ残ります。なお、$u^{-1}=u^2$、$u^{-2}=u$です。
一般にも、$0\leq r< m$を満たす整数$r$について、代入値ごとに$q^{-jr}$を掛ければ、指数の判定が$k$から$k-r$へずれます。
一般式|余りを指定した係数和
$\displaystyle\frac1m\sum_{j=0}^{m-1}q^{-jr}P(q^j)=\sum_{\substack{0\leq k\leq N\\k\equiv r\pmod m}}a_k$
$k\equiv r\pmod m$は、$k$を$m$で割った余りが$r$であることを表します。各$a_k$に掛かる数は$\displaystyle\frac1m\sum_{j=0}^{m-1}q^{j(k-r)}$なので、先ほどの等比数列の計算で、条件に合えば$1$、合わなければ$0$になります。
正の整数が$m$乗数となる条件は、素因数分解に現れる指数がすべて$m$の倍数であることです。各指数が$m$の倍数なら$m$乗を括り出せ、逆に$m$乗した整数の各指数は$m$の倍数になります。
| 調べたい積 | 各素因数の指数に課す条件 | 一変数ごとに使う代入値 |
|---|---|---|
| 平方数 | $2$の倍数 | $1,-1$ |
| 立方数 | $3$の倍数 | $1,u,u^2$ |
| $m$乗数 | $m$の倍数 | $1,q,\ldots,q^{m-1}$ |
冒頭と同じ$F(x,y)=(1+x+y+x^2)^n$を使えば、$X_n$が$m$乗数となる確率は
$$
\boxed{\frac{1}{m^2 4^n}\sum_{j=0}^{m-1}\sum_{k=0}^{m-1}\bigl(1+q^j+q^k+q^{2j}\bigr)^n}
$$
と表せます。$x$の指数に一回、$y$の指数に一回フィルターを掛けるので、$m$で二回割ります。その後、全選択列の個数$4^n$で割っています。
$m=2$なら本編の四つの代入、$m=3$なら九つの代入です。変数が三つ必要なら、三つ目にも同じ操作を加えます。各変数に違う条件を課すこともでき、例えば「$x$の指数が偶数、$y$の指数が$3$の倍数」なら、$x$には$1,-1$、$y$には$1,u,u^2$を使えばよいわけです。
有限多項式$P(x,y)$において、$x$の指数を$m$で割った余りが$r$、$y$の指数を$\ell$で割った余りが$s$となる項の係数和を求めます。$m,\ell\geq2$、$0\leq r< m$、$0\leq s<\ell$とします。
$\displaystyle q=\cos\frac{2\pi}{m}+i\sin\frac{2\pi}{m}$、
$\displaystyle v=\cos\frac{2\pi}{\ell}+i\sin\frac{2\pi}{\ell}$
とおけば、答えは
$\displaystyle\frac1{m\ell}\sum_{j=0}^{m-1}\sum_{k=0}^{\ell-1}q^{-jr}v^{-ks}P(q^j,v^k)$
です。一項$c x^a y^b$から来る寄与は、$c$に二つの一変数フィルターを掛けたもの。両方の条件に合えば$c$が残り、どちらかに合わなければ$0$になります。これが同時抽出の理由です。
ここで整理すること
今までの「係数に情報を持たせる」考え方に名前を付け、有限個の情報から無限の係数列へ広げます。冒頭の問題自体は、有限多項式だけで完結しています。
数列$a_0,a_1,a_2,\ldots$に対し、
$$
A(x)=\sum_{k=0}^{\infty}a_kx^k
$$
と係数に並べたものを、その数列の通常型生成関数といいます。母関数とも呼ばれます。ある次数より先の係数がすべて$0$なら、有限多項式になります。
今回の$F(x,y)$も、二つの指数$a,b$に対応する場合の数を、$x^ay^b$の係数として並べた多変数の生成関数です。
式を作るだけでは、別の書き方で情報を並べただけです。そこに積や代入などの操作を加えると、場合の数を一つずつ求めずに、欲しい情報へまとめて働きかけられます。本記事では、
| 式への操作 | 数えているものへの意味 |
|---|---|
| 選択肢の単項式を足す | 選択肢を一つの式にまとめる |
| 段階ごとの式を掛ける | 各段階の選択を組み合わせる |
| 指定した単項式の係数を読む | その状態になる場合の数を得る |
| $1$を代入する | その変数で区別していた状態を合計する |
| 冪根の代入値を重み付きで足す | 指数の合同条件に合う場合を合計する |
という対応を使いました。これが、生成関数を数え上げに利用する具体的な中身です。
補足|係数に確率を記録してもよい
一回に各カードを選ぶ確率が$p_1,p_2,p_3,p_4$なら、$p_1+p_2x+p_3y+p_4x^2$を使えます。独立に$n$回選んだとき、その$n$乗の係数は、各積になる確率です。条件に合う係数を抽出すれば、そのまま求める確率になり、最後に$4^n$で割る必要はありません。各$p_j$は非負で、合計は$1$とします。
FPSはFormal Power Series、形式的冪級数の略です。以下では係数を実数や複素数として考えます。
$a_0+a_1x+a_2x^2+\cdots$を、ある数$x$を代入して値を求めるものとしてではなく、係数列$(a_0,a_1,a_2,\ldots)$を記録するものとして扱います。二つのFPSが等しいとは、すべての次数で係数が等しいことです。
足し算では同じ次数の係数を足します。掛け算は多項式と同じで、$A(x)=\sum_{k=0}^{\infty}a_kx^k$、$B(x)=\sum_{k=0}^{\infty}b_kx^k$なら、$A(x)B(x)$の$x^N$の係数を
$$
\sum_{k=0}^{N}a_kb_{N-k}
$$
と定めます。重要なのは、一つの係数を決めるために足す項は有限個だということです。そのため、数値としての無限和の収束を仮定しなくても、各係数の計算ができます。
例えば$S(x)=1+x+x^2+\cdots$なら、$(1-x)S(x)$の定数項は$1$で、正の次数の係数はすべて$1-1=0$。したがって、FPSとして
$$
(1-x)S(x)=1,\qquad S(x)=\frac1{1-x}
$$
と書けます。右の分数は「$1-x$を掛けると$1$になる形式的冪級数」を表しています。ここでは$x$に数値を入れていません。
多項式は、途中から係数がずっと$0$になるFPSです。そして生成関数は、数列や場合の数などを係数に記録して使うという役割を表す言葉です。「多項式・FPS」と「生成関数」は、互いに排他的な分類ではありません。
注意|収束を考えないことと、自由に数を代入できることは別
有限多項式では$P(1)$が係数全体の和になりました。しかし、FPSの$1+x+x^2+\cdots$へ$x=1$を入れて「係数和」を得る操作は、そのままでは定義できません。数値として評価するなら、別途、収束などの条件を確かめる必要があります。
一方、変数を残した$A(q^jx)$は、$a_k$を$a_kq^{jk}$に変える操作として定義できます。この違いにより、次のフィルターはFPSでも使えます。
$Q(x,y)=1+x+y+x^2$とし、$n$回分を$F_n(x,y)=Q(x,y)^n$と書きます。零回の選択も「何も選ばない一通り」として$F_0=1$とします。
抽選回数を新しい変数$t$の指数に記録すると、
$\displaystyle\sum_{n=0}^{\infty}F_n(x,y)t^n=\frac1{1-tQ(x,y)}$
となります。これは$t$についてのFPSで、各係数は$x,y$の有限多項式です。両辺に$1-tQ(x,y)$を掛ければ、定数項以外が消えることから確認できます。
ここでは$x,y$へ$1$や冪根を代入しても、各$t^n$の係数にある有限多項式を評価するだけなので問題ありません。どの文字について無限級数と見ているかも大切です。
最初の問題を、もう一度思い返してみてください。平方数という条件を見て素因数の指数を追い、その指数を単項式へ記録し、偶数という条件に合わせて代入値を選びました。
次に場合の数の問題に出会ったら、「何を数えるか」に加えて、何を指数に記録すれば、その条件を取り出せるかも考えてみてください。多項式を作る最初の一手は、そこから始まります。
ここまでお読みくださり、ありがとうございました。
皆さんの日常に良き数学の彩のあらんことを。それでは、ごきげんよう。
数学的背景をもう少し読むなら
Cody Johnson, Generating Functions:生成関数による数え上げと、roots of unity filterの応用例。
Stephen Melczer, An Invitation to Enumeration, Chapter 4:形式的冪級数の定義、積、生成関数との関係。多変数の考え方はChapter 7へ。いずれも英語で、後半は大学数学を含みます。