1

部分和を次数にとる母関数を用いて問題を解きたい

59
0

簡単な紹介

ぱっと, 定理を見てどんな風になるのか分かりにくいかもしれないので, 分からなかったときは下の例題で雰囲気を感じてもらえればいいです.

集合{an(1),an(2),,an(Nn)}nNの要素を1個ずつ取った和を次数に取る多項式

f(x):=i=1n(j=1Nixai(j))=(xa1(1)++xa1(N1))(xa2(1)++xa2(N2))(xan(1)++xan(Nn))

例題

次の例題を解きたいと思います.

整数列{an}1ak3k(k=1,2,n)を満たす.
a1+a2++an3で割れるような組数Sを求めよ.

f(x):=k=1n(l=13kxl)=(x+x2+x3)(x+x2++x6)(x+x2++x3n)
と定める.
a1++anで表される数を小さい順にS1,S2,とし, Snになる組数をAnとする.
f(x)=A1xS1+A2xS2++A32n2+12n+1xS32n2+12n+1
と表せる.

nN,ω=12+32とする.
ωn+ω2n+ω3n={3(n0mod3)0(n0mod3)

定理より, f(ω)+f(ω2)+f(ω3)は次のようになる.
f(ω)+f(ω2)+f(ω3)=A1(ωS1+ω2S1+ω3S1)+A2(ωS2+ω2S2+ω3S2)++A32n2+12n+1(ωS32n2+12n+1+ω2S32n2+12n+1+ω3S32n2+12n+1)
f(ω)+f(ω2)+f(ω3)=3(a1++an3で割れるものの総数)
f(x)=k=1n(l=13kxl)=k=1nx3k+1xx1
と表せるから, ω3=1より
f(ω3)=f(1)=k=1n3k=3nn!,f(ω)=k=1nω3k+1ωω1=0,f(ω2)=k=1nω6k+2ω2ω21=0
f(ω)+f(ω2)+f(ω3)=3nn!+0+0=3nn!
全体を3で割ると, 求める組数は3n1n!

ちょっと拡張

An{an(1),an(2),,an(Nn)}nNの和c1A1+c2A2++cnAnを次数に取る多項式

f(x):=i=1n(j=1Nixciai(j))=(xc1a1(1)++xc1a1(N1))(xc2a2(1)++xc2a2(N2))(xcnan(1)++xcnan(Nn))

An{an(1),an(2),,an(Nn)}nNZのとき, c1A1+c2A2++cnAnの期待値

ddxlogf(x)|x=1=f(1)f(1)

(雑に)

An{an(1),an(2),,an(Nn)}nNの和c1A1+c2A2++cnAnを次数に取る多項式は
f(x):=i=1n(j=1Nixciai(j))
である.
c1A1+c2A2++cnAnで表される数を小さい順にS1,S2,,Sm(m=max{c1A1+c2A2++cnAn})とし, Snになる組数をBnとする.
f(x)=B1xS1+B2xS2++BmxSm
和がSnになる確率はP(X=Sn)=BnB1+B2++Bm=Bnf(1)(n=1,2,,m)となるので,
f(x)f(1)=P(X=S1)xS1+P(X=S2)xS2++P(X=Sm)xSm
両辺を微分して, x=1を代入すると,
f(x)f(1)=S1P(X=S1)xS11+S2P(X=S2)xS21++SmP(X=Sm)xSm1
ddxlogf(x)|x=1=f(1)f(1)=S1P(X=S1)+S2P(X=S2)++SmP(X=Sm)=k=1mSkP(X=Sk)
よって, 期待値が求まる.

この集合の要素を同じものにすることによって, 重複を許したときの部分和もできます(例: 整数k(k=1,2,,100)が書かれたカードがk枚あるとき, 1枚を引いて記録し, 戻す操作を繰り返す.).


大体の問題は別の簡単な解法が存在するので、そんなに強いテクニックというわけではないのですが、応用が利きそうなので色々考えたいですね。

投稿日:2024129
更新日:20241210
OptHub AI Competition

この記事を高評価した人

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

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

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

▽X/Twitter▽ | TyLite(トワイライト)です。認知欲求のためにSNSとMathlogしてる。フォロバはほぼ返すと思う。

コメント

他の人のコメント

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