14

ある数え上げの問題について

2086
0

お久しぶりです。学校のレポートとして提出したものを記事にしておこうと思います。

問題の設定

今回、興味を引かれたのが次の問題1です。

n2 を整数とする.n×n のマス目にいくつかの駒を置く.一つのマスには1つまでしかコマを置けないとき,どの行,どの列にもちょうど2個の駒が置かれているような置き方は何通りあるか?

上記の問題を考えついた時点ではその解答を知らなかったため、これを解決することをレポートの目標としました。この記事では、問題1の母関数を用いた解決を述べたいと思います。

なお、問題1の解答を数列として並べたものが、オンライン整数列大辞典における 数列 A001499 に掲載されています。

結論

先に結論を述べてしまいましょう!

(問題1の解答)

n2 についての問題1の答えを pn で表す.p0=1 および p1=0 とすれば,形式的冪級数として以下の等式が成り立つ:
k0pk(k!)2xk=e12x1x.
また,
pn=(n!)2k=0n((1)k122nk×k!(2n2knk)).

わお。なかなかキモい冪級数が登場しましたね。では証明していきましょう。
まず簡単な準備をしておきます。

(準備)

ある駒の配置に対して,駒の置いてあるマスを頂点とし,同じ行または列にある頂点の間に辺を張った無向グラフを考える.このようにしてできるグラフと駒の配置は1対1に対応するから,以下ではグラフに注目して数え上げを行う.グラフに対応する駒の配置が問題の条件を満たすとき,グラフが条件を満たすと呼ぶことにする.
このグラフの全ての頂点の次数は 2 であるから,周期が 3 以上であるようないくつかのサイクルに分解することができる.それぞれのサイクルの周期は偶数である.

前半の証明

前半を示すために(まあほとんど前半が本質なんですが)次の補題を用意します。

条件を満たすグラフであって,周期が 2a1 のサイクルを c1 個,2a2 のサイクルを c2 個,2ak のサイクルを ck 個持つようなものは
(n!)2×1i=1k(2ai)ci×ci!
個存在する.ここで,a1c1++akck=n であり,各 ai2 以上で異なるとする.

(補題2)

各サイクルに注目しよう.周期が 2a のサイクルの頂点は a 行,a 列にまたがり,それぞれの行,列に 2 つずつの頂点を持つ.これらの行 r1,,ra および列 c1,,ca を固定するとき,サイクルは次のような順列
r1ci1rj1ci2rj2rja1ciar1
(ただし i1<ia )と一対一に対応する.実際,上の順列において隣り合っている二つの行・列の交点を取り,それらを頂点とするようなサイクルが対応する.よって,この場合にサイクルは a!×(a1)!2 通り存在する.
一旦すべてのサイクルを区別して考える.異なるサイクルは異なる行,列にまたがることに注意すると,それぞれのサイクルに行・列を割り当てる方法は
(n!i(ai)!ci)2
通りである.それぞれの割り当て方に対して,(サイクルの決め方が互いに干渉しないことから)
i(ai!(ai1)!2)ci
通りのグラフが存在するから,すべてのサイクルを区別するときのグラフの数は
(n!i(ai)!ci)2×i(ai!(ai1)!2)ci=(n!)2i(2ai)ci
通りである.同じ周期のサイクルの区別を無くすために i(ci)! で割れば,結論が得られる.(補題の証明終わり)

これで準備ができたので、前半が証明できます。

(命題1の前半)

補題 2.1 の結論の式は次のように変形できる.
(1)(n!2)c!×1i(2ai)ci×c!ici!
ここで,c=c1++cn と置いた.サイクルの周期によって場合分けすることを考えれば,(1) の値を適切(※1)な (a1,,ak,c1,,ck) すべてに渡って足し合わせた値が問題1の解答となる.
c を固定する.c!ici!c1,c2,,cn 個の区別されたものの並べ替えの総数であることを踏まえれば,(1) の値の総和は
(n!)2c!(x24+x36+x48+)c
という形式的冪級数の xn の係数として与えられることが分かる.c を動かすことで,求めるべき場合の数 pn
P(x)=x24+x36+, Q(x)=1+P(x)1!+P(x)22!+
で表される Q(x)xn の係数に (n!)2 を掛けたものとして与えられる.いま,これらは形式的冪級数として
P(x)=12(log(1x)x),Q(x)=eP(x)=e12x1x
と計算できる(※2).Q(x) の定数項,1 次の係数がそれぞれ 1,0 であることから,
k0pk(k!)2xk=e12x1x
が従う.よって,前半の主張が示された.

後半の証明

命題の後半を示すために、次の補題3(※3)を用意します。

形式的冪級数として,
114x=k0(2kk)xk.

(補題3)

等式の右辺を f(x) とおく.このとき,簡単な計算により
f(x)=k0(4k+2)(2kk)xk, xf(x)=k0k(2kk)xk
を得る.これより,
(14x)f(x)=2f(x)f(x)f(x)=214xf(x)f(x)dx=214xdxlogf(x)=12log114x
が順に従う.いま f(x) の定数項は 1 であるから,f(x)=(14x)1/2 を得る.(補題の証明終わり)

さあ、いよいよ命題の後半です。

(命題1の後半)

補題2.2より,
e12x1x=(k0(x/2)kk!)(k0(2kk)(14x)k)=n0k=0n((1)k122nk×k!(2n2knk))xn

が成立する.前半の主張にこれを合わせることで,後半の主張を得る.(証明終わり)

※印たち

※1 例えば、ai のいずれかが 1 である場合は不適切です。補題 2 が適切な組について常に正しいのは幸いなことです。

※2 本当は log や微分などの操作はより厳密に行わないといけないはずですが、ここでは割愛しています。これは知識不足によるもので、申し訳ないです。

※3 この補題に関しては、全面的に kaichou243 氏の結果を引用しました。ありがとうございました。

振り返って

これで命題1が示されました。どうだったでしょうか。母関数の議論の部分は、ごく、本当にごく一部の層には見覚えがあるかもしれません。
それは何かと言うと、 OMC074-E のユーザー解説 です。読んでもらえば分かりますが、ほぼ同じ発想で示せるんですね。

問題1は,「どの行,列にもちょうど 1 個」の場合に比べると数え上げることが格段に困難な問題であったと思います。それを形式的冪級数を用いて解決することができたのは面白かったです。今後は、より発展的な形式的冪級数に関する知識(特に微分など)を深めていきたいと思います。(※2や※3など、知識不足が見られますからね...。)

読んでくれてありがとうございました。では、また会う日まで。

投稿日:2023917
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

locker
locker
53
5500
2008年の早生まれです

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 問題の設定
  2. 結論
  3. 前半の証明
  4. 後半の証明
  5. ※印たち
  6. 振り返って