1

場合の数問題を多項式で瞬殺する

414
0
$$$$

皆様ごきげんよう。
突然ですが、まずはこちらの問題をご覧ください。よければ少し考えてみてください。

問題|カードの積が平方数となる確率

$n$を正の整数とする。$1,2,3,4$と書かれた$4$枚のカードから、毎回等確率で$1$枚を選び、元に戻す操作を独立に$n$回行う。選んだカードに書かれた数の積を$X_n$とするとき、$X_n$が平方数となる確率を求めよ。


解答例を二つ置いておきます。考え終わった方は開いてみてください。
解答例1|2と3を選んだ回数に注目する

$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}}$


解答例2|確率の漸化式を作る

$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,-1$を代入したら終わってしまいました。
この記事を読み終わる頃には、この解答で何をしていたのかが分かり、多項式が場合の数の問題を解くための手段の一つとなっていることでしょう。目指すのは、解答を追えるだけでなく、次の問題で「この情報を多項式に記録できないか」と自分で考えられることです。
後半では、roots of unity filterと呼ばれる考え方まで進みます。名前だけ見たことがある方にも、ここからどうつながるのかを説明します。生成関数やFPSとの関係も、最後に整理しておきましょう。

目次

1 展開は「選択」の記録
2 代入で取り出し、冒頭の問題を解く
3 次の問題では、何を記録するか

発展 偶奇から一般の合同条件へ
さらに先 生成関数とFPS

本編は二項定理と指数法則から。発展では複素数と等比数列、一般の場合にはド・モアブルの定理を使います。

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$となる選択列の個数。指数が状態を表し、係数がその状態になる場合の数を表します。


求めたいのは、$a,b$がともに偶数である項の係数の合計です。ただ、展開して一項ずつ拾うのでは、せっかくまとめた意味がありません。次は、展開せずに必要な情報を取り出します。

2 代入で取り出し、冒頭の問題を解く

1と−1で、偶数次だけを拾う

まず、一変数の有限多項式
$$ 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$


二項係数の飛ばし和で見たことがある方もいるでしょう。大切なのは、これが二項係数専用の工夫ではないことです。代入によって、指数の条件に応じて項の寄与を残したり、打ち消したりできるのです。
なお、$\{P(x)+P(-x)\}/2$なら、偶数次の項を残した「多項式」になります。その後に$x=1$を代入すると、上の「係数和」が得られます。この二つは区別しておくと便利です。

二つの条件は、一つずつ処理する

冒頭の$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}}}$


$n=1$なら$1,4$の二枚なので$1/2$$n=2$なら$(1,1),(1,4),(4,1),(4,4),(2,2),(3,3)$の六通りなので$6/16=3/8$です。どちらも式と一致します。
ここまでで、最初の多項式解答の仕組みはすべてそろいました。

3 次の問題では、何を記録するか

別の問題で使うには、「あの多項式」を覚えるより、何を指数に記録すると、最後の条件を読み取れるかを考えることが大切です。
今回、変数が二つだったのは、平方数判定のために素因数$2,3$の指数を別々に追跡する必要があったからです。$5$の指数も必要なら、
$$ 2^a3^b5^c\longleftrightarrow x^ay^bz^c $$
とすればよい。同じように、選んだ枚数と数の和など、性質の違う情報も同時に記録できます。

変数を用意する目安

別々に追跡したい、足し合わされる量一種類につき一変数。ここで「別々」とは、確率的に独立という意味ではありません。二つの量が関係し合っていても、二変数で記録できます。


例えばカードに$6$を追加するなら、$6=2\cdot3$の記録は$xy$です。一回分が$1+x+y+x^2+xy$となり、平方数を取り出す操作は同じです。
また、偶奇だけが必要なら$4$$1$で記録し、一回分を$2+x+y$としても構いません。$1$$4$はどちらも指数の偶奇を変えないので、同じ記録に二通り分の係数が付くわけです。ただし、これは指数の正確な値を捨てた記録です。立方数まで調べるなら、$4$の記録を$x^2$へ戻す必要があります。

積ではなく、和を調べる問題でも

次の問題では、何を記録すればよいでしょうか。解答を開く前に、一枚のカードに対応する括弧を考えてみてください。

小さな練習|自分で記録を作る

$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. 最後の条件を判定するために、何を記録するか決める。
  2. 一つ一つの選択肢を単項式にし、一段階分を和にする。
  3. 段階を組み合わせて積を作り、係数が何を数えるか確かめる。
  4. ちょうどある値なら係数を、偶奇や余りなら代入を使って取り出す。

積がすべての段階の組合せを数えることには注意が必要です。途中の選択で次の選択肢が変わる場合、同じ括弧を機械的に$n$乗すると、許されない選択まで数えることがあります。その場合は状態を分けるなど、記録の作り方を工夫します。
本編はここまでです。ここからは、取り出せる条件を「偶奇」から広げてみましょう。


発展 偶奇から一般の合同条件へ

ここからは発展

本編では、$1,-1$の代入で偶数次を取り出しました。ここでは、指数をある数で割った余りを指定して取り出せるようにします。

まず、指数が3の倍数の項を取り出す

$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でも、仕組みは等比数列

$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$の倍数であるものだけで足す」という意味です。

余りがrとなる項も取り出せる

例えば$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$になります。


この考え方は、roots of unity filter(1の冪根によるフィルター)と呼ばれます。名前の通り、$1$$m$乗根を使い、条件に合う次数だけを選別しています。本編で使った$1,-1$の操作は、その$m=2$の場合です。
以前の 二項係数m飛ばしの和 で扱ったのは、この仕組みを$P(x)=(1+x)^n$へ適用した場合でした。今回は、問題に合わせて$P$そのものを作るところまで含めて考えています。

平方数から、立方数・一般のm乗数へ

正の整数が$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$になります。これが同時抽出の理由です。


積が乗数になる条件そのものや、挟み込み・合同式・因数分解の使い分けは、 整数問題における整数の乗数条件 にまとめています。今回は、その指数の条件を満たす場合をまとめて数えることが役割です。
なお、一般式が作れることと、残った和が短く計算できることは別です。変数や法が多ければ代入回数も増えます。記録を作った後は、式が簡単になる代入か、対称性を使えるかも見てください。


さらに先 生成関数とFPS

ここで整理すること

今までの「係数に情報を持たせる」考え方に名前を付け、有限個の情報から無限の係数列へ広げます。冒頭の問題自体は、有限多項式だけで完結しています。

生成関数は、係数列をまとめて扱うための式

数列$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は「無限の係数列」として計算する

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でも使えます。


$m,q,r$を発展部分と同じ意味で用いると、
$$ \frac1m\sum_{j=0}^{m-1}q^{-jr}A(q^jx) =\sum_{\substack{k\geq0\\k\equiv r\pmod m}}a_kx^k $$
がFPSとして成り立ちます。各次数の係数について、有限個の$m$項を足して確かめればよいからです。右辺の和は、条件を満たす非負整数$k$すべてにわたります。
ここで得たのは、条件に合う項を残したFPSです。その係数を全部足した数値ではありません。最後に$x=1$を入れるには、やはり別の確認が必要です。
さらに一歩|抽選回数nも、一つの式にまとめる

$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$の係数にある有限多項式を評価するだけなので問題ありません。どの文字について無限級数と見ているかも大切です。


この先には、漸化式を生成関数の方程式へ直す方法や、FPSの逆数・微分などが続きます。十分に説明すると、この部分だけで別記事にできる内容です。今回は、有限多項式で行った「記録して操作する」という発想が、無限の係数列にもつながるところまでにしておきます。


最初の問題を、もう一度思い返してみてください。平方数という条件を見て素因数の指数を追い、その指数を単項式へ記録し、偶数という条件に合わせて代入値を選びました。
次に場合の数の問題に出会ったら、「何を数えるか」に加えて、何を指数に記録すれば、その条件を取り出せるかも考えてみてください。多項式を作る最初の一手は、そこから始まります。
ここまでお読みくださり、ありがとうございました。
皆さんの日常に良き数学の彩のあらんことを。それでは、ごきげんよう。

数学的背景をもう少し読むなら

Cody Johnson, Generating Functions:生成関数による数え上げと、roots of unity filterの応用例。

Stephen Melczer, An Invitation to Enumeration, Chapter 4:形式的冪級数の定義、積、生成関数との関係。多変数の考え方はChapter 7へ。いずれも英語で、後半は大学数学を含みます。

投稿日:1日前
更新日:1日前
数学の力で現場を変える アルゴリズムエンジニア募集 - Mathlog served by OptHub

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

bloom
bloom
136
15503

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中