Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ざっくり形式的冪級数

shirotsume4
May 28, 2023
500

 ざっくり形式的冪級数

誤植,ミス等です
修正版は後日アップロードする予定です
・与えられたN項多項式fについて,fの逆元invの「先頭N項」をO(NlogN)で求めることができます.
・負の二項定理の左辺には(-1)^kがかかります

shirotsume4

May 28, 2023
Tweet

Transcript

  1. まずは多項式の話  多項式  𝑓 𝑥 = 𝑎0 + 𝑎1

    𝑥 + 𝑎2 𝑥2 + ⋯ + 𝑎𝑛 𝑥𝑛  多項式の係数列が大事で、xはそれほど大事ではない  多項式や形式的冪級数に対する議論は、数列[𝑎0 , 𝑎1 , 𝑎2 , … 𝑎𝑛 ]に対する議論だとみな しても問題ない。  多項式の演算  和、差  同じ次数同士を計算するだけ  定数倍  それぞれ定数倍するだけ  積  多項式の掛け算  FFTを使うと高速に計算できる 𝑂(𝑁 log 𝑁)
  2. 多項式と数え上げの対応付け  多項式を使うと、数え上げをうまく扱うことができる。  例えば二項定理  𝑛 𝑘 = 𝑥𝑘

    1 + 𝑥 𝑛  𝑥𝑘 は、後ろの式の 𝑥𝑘の係数という意味  「コスト 𝑘 の物体」が𝑥𝑘に対応するイメージ。  二項定理も、N個の物体それぞれを選ぶか選ばないかをそれぞれ決めるという イメージを持つとわかりやすいかも?  (1+x)を掛けるという操作を、コスト0か1かを決める操作だととらえられるとよい。  じゃあコスト0か1か2だと?  (1 + 𝑥 + 𝑥2)を掛ければよい!
  3. 多項式で数え上げする練習  少し練習してみよう。  リンゴが3つ、ミカンが2つある。合計3つ選ぶ方法は?  𝑥3 1 + 𝑥

    + 𝑥2 + 𝑥3 1 + 𝑥 + 𝑥2 が答え。  A = {2, 3}, B = {2, 4}, C = {3, 5, 7} の3つの集合がある。それぞれから1つずつ 選んで合計をnにする方法は?  [𝑥𝑛](𝑥2 + 𝑥3)(𝑥2 + 𝑥4)(𝑥3 + 𝑥5 + 𝑥7)  数列 A = (3, 1, 4) がある。数列の(連続とは限らない)部分列であって、和 がnのものの個数は?  [𝑥𝑛](1 + 𝑥3)(1 + 𝑥)(1 + 𝑥4)
  4. 多項式からDPを作る  数列 A = (3, 1, 4) がある。数列の(連続とは限らない)部分列であっ て、和がnのものの個数は?

     [𝑥𝑛](1 + 𝑥3)(1 + 𝑥)(1 + 𝑥4)  これをDPにする  DP[i][j] = i 個目のかっこまで見たときの𝑥𝑗の係数  こうすると、かっこ(1 + 𝑥𝑘)は次の遷移と対応することが分かる。  DP[i+1][j+k]+=DP[i][j]  DP[i+1][j] += DP[i][j]  これは部分和問題のDPそのもの!
  5. 形式的冪級数とは?  形式的冪級数は、多項式と違い、無限の次数を扱えるようにしたもの。  𝑓 𝑥 = 𝑎0 + 𝑎1

    𝑥 + 𝑎2 𝑥2 + ⋯  あくまでも多項式っぽく見えるのは形だけで、実際は無限数列に対する演算と して定義されていると考えよう!  だから、収束性とかは考えない  実際の計算の際は、形式的冪級数を必要な次数まで切って計算することになる。  実は、形式的冪級数の計算は、必要な次数までで切ってしまってもだいたいうまく いく  リンゴとミカンが無限個売っている。n個買う方法は?  [𝑥𝑛](1 + 𝑥 + 𝑥2 + 𝑥3 + 𝑥4 + ⋯ )(1 + 𝑥 + 𝑥2 + 𝑥3 + 𝑥4 + ⋯ )
  6. 無限級数の和と逆元  等比級数1 + 𝑥 + 𝑥2 + 𝑥3 +

    ⋯の値を考えよう。これは初項1、公比xなので、 1 1−𝑥 と等しくなる。つまり、 1 − 𝑥 1 + 𝑥 + 𝑥2 + 𝑥3 + ⋯ = 1を満たす。 よって、形式的冪級数1 + 𝑥 + 𝑥2 + 𝑥3 + ⋯の逆元を(1 − 𝑥)として考えることができる。 【逆元】𝑎の逆元とは、𝑎𝑏 = 1を満たす𝑏のこと。この𝑏は、存在するならただ一つ。 形式的冪級数は、定数項が 0 でなければ逆元を持つことが知られています。 また、形式的冪級数の先頭N項が与えられた時、逆元はO(NlogN)で求められます。
  7. フィボナッチ数列を形式的冪級数で  フィボナッチ数列  𝐹0 = 𝐹1 = 1, 𝐹𝑖+2

    = 𝐹𝑖 + 𝐹𝑖+1  フィボナッチ数列のN項目は、以下の場合の数と同じ(競プロ典型)  N段の階段を、1回で1段または2段上がれるとしたときに上がる方法の個数  例えば、K回で上がるなら、1段上がるか2段上がるかをK回選ぶと考えることができる。  𝑥 + 𝑥2 𝐾を考えればよい。  今回は何回で上がると決まっていないので、 𝑥 + 𝑥2 0 + 𝑥 + 𝑥2 1 + 𝑥 + 𝑥2 2 + ⋯ を考える。  これは、初項1公比(𝑥 + 𝑥2)なので、 1 1 −𝑥 −𝑥2 として求められる!  1 1 −𝑥 −𝑥2 のN次の係数は、フィボナッチ数列の第N項と一致する。  Wolfram Alphaで確かめてみよう!  このように、係数がある数列と一致するような形式的冪級数を母関数という!
  8. その他こまごましたこと  1 1 − 𝑥 を掛けるという操作は、累積和を取る操作と同じ。  (1 +

    𝑥 + 𝑥2 + ⋯ )を掛けているのと同じ。よって、𝑥𝑘にはk次以下すべての結果が累 積されることになる。  二項定理、†負の二項定理†  𝑛 𝑘 = 𝑥𝑘 1 + 𝑥 𝑛 (nCkと同じ)  𝑛+𝑘−1 𝑘 = 𝑥𝑘 1 + 𝑥 −𝑛 = [𝑥𝑘] 1 1+𝑥 𝑛 (nHkと同じ)  高速きたまさ法  [𝑥𝑛] 𝑃 𝑥 𝑄(𝑥) を高速に求められる。
  9. 今回の総まとめ EDPC-M Candiesを解いてみよう  問題文要約  長さNの数列𝑥 = (𝑥1 ,

    𝑥2 , … 𝑥𝑁 )であって、各iについて0 ≤ 𝑥𝑖 ≤ 𝑎𝑖 を満たし、総和がK であるものの個数を求めよ。  多項式で考えると、求めるべきものは  1 + 𝑥 + 𝑥2 + ⋯ + 𝑥𝑎1 1 + 𝑥 + 𝑥2 + ⋯ + 𝑥𝑎2 … (1 + 𝑥 + 𝑥2 + ⋯ + 𝑥𝑎𝑛)  等比数列の和の公式から、  1−𝑥𝑎1+1 1 −𝑥 × 1−𝑥𝑎2+1 1 −𝑥 × ⋯ × 1−𝑥𝑎𝑛+1 1 −𝑥 を求めればよい。  分子はうまくやればDP遷移に変えられて、分母は 1 1−𝑥 だから…?  是非自力で解いてみよう!