5

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

180
0

 お久しぶりです ぴーです
 作問をしていたらいい感じの進捗が生まれたので共有します

 今回は下の問題を考えていきます.

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

 もしかしたら見たことある人もいるかも知れませんね
 この問題については lockerさんが記事を書いており 、以下のように既に結果が出ています.

n×nのときの答えをf(n)とおくと
f(n)=(n!)2k=0n(1)k122nkk!(2n2knk)

 この記事では別のアプローチで答えを導出していきます

証明

前半

 前半では以下の式を示します

n!×2nk=0nnCk×2kk!f(k)=(2n)!

 証明:各行・列にちょうど2個置かれているn×n のマス目を用意します

 このマス目の各マス(大マスとします)をさらに四分割し、それぞれの駒を四つの小マスのうちの一つに配置することで、どの行・列にもちょうど1個置かれているような2n×2nマスを作ることを考えます

 このとき、元のn×nマスの配置から2n×2nマスの配置を作る方法は各列の2個の左右、各行の2個の上下を決めればよいので22n個あります.

 逆に2n×2nの配置を決めればn×nの配置が存在する、と言いたいところですが、1マスに2個駒が入ってしまうような並び方が当然存在します

 ここで、各大マスにちょうど1個の駒が置かれている配置を良い配置とします

 このとき、駒が2個入ってしまった大マスがk個あるとすると、そのk組の行・列を無視した(nk)×(nk)マスは良い配置です

 k個の大マスの位置は(nCk)2×k!通り、各大マスで2個の駒の配置が2通り存在するので、駒が2個入ってしまった大マスがk個あるような配置は

(nCk)2×k!×2k×22(nk)f(nk)

 通りあります.ただしf(0)=1です.
 knkとすると

(nCk)2×(nk)!×2nk×22kf(k)=(n!)2(k!)2{(nk)!}2×(nk!)×2n+k×f(k)=n!×nCk×2n+kk!×f(k)

 これを0knで和を取ると、2n×2nで各行・列にちょうど1つあるような並べ方の総数になるので

n!×2nk=0n(nk)×2kk!f(k)=(2n)!

 が成り立ちます.

後半

 F(x)=2kk!f(k), G(k)=(2n)!n!×2n=(2n1)!! とおけば((1)!!=1)

k=0n(nk)×F(k)=G(n)

 となるので、これを満たすF(n)を形式的冪級数で求めます
 まず、両辺の母関数をとって

n=0k=0n(nk)×F(k)xn=n=0G(n)xn

 となります

n=0k=0n(nk)×f(k)xn=k=0f(k)×xk(1x)k+1

また

n=0k=0n(1)nk(nk)×f(k+1)xn+1=k=1f(k)×(x1+x)k

n=0k=0n(nk)×f(k)xn=k=0f(k)n=k(nk)xn=k=0f(k)xkl=0(l+kk)xl=k=0F(k)×xk(1x)k+1

 より第一式が示された.これを逆にたどる感じで

k=1f(k)×(x1+x)k=k=1f(k)xkl=0(l+k1k1)(x)l=k=0f(k+1)xk+1l=0(l+kk)(x)l=k=0f(k+1)n=k(nk)xn+1×(1)nk=n=0k=0n(1)nk(nk)×f(k+1)xn+1

 も示された.

 補題より

k=0F(k)×xk(1x)k+1=n=0G(n)xnn=0F(n)×(x1x)n=(1x)n=0G(n)xn=G(0)+n=1(G(n)G(n1))xn

 となります.
 ここでx1x=yとおくと、x=y1+yなので

n=0F(n)yn=G(0)+n=1(G(n)G(n1))(y1+y)n=G(0)+n=0k=0n(1)nk(nk)×(G(k+1)G(k))yn+1

 2行目への変形は補題42式目を使っています.
 yn(n1)の係数を比較すると

F(n)=k=0n1(1)nk1(n1k)×(G(k+1)G(k))=k=1n(1)nk(n1k1)G(k)k=0n1(1)nk1(n1k)G(k)=k=1n1(1)nk(nk)G(k)+(1)n1G(n)=k=0n(1)nk(nk)G(k)

 ということで

f(n)=n!2nk=0n(1)nk(nk)(2k1)!!

 が示されました(個人的にはこっちの形のほうが好きです)

 これを更に変形すると

n!2nk=0n(1)nk(nk)(2k1)!!=n!2nk=0n(1)nkn!k!(nk)!×(2k)!2kk!=(n!)2k=0n(1)nk12n+k(nk)!×(2k)!(k!)2=(n!)2k=0n(1)k122nkk!(2n2knk)

 となり、冒頭に乗せた結果と一致しました!

おわりに

 僕の今までの記事に比べたらめっちゃ真面目になってしまいました
 真面目じゃない記事も一応書き進めているので許してください

 最初に書いた通り、始めはただ作問をしていて
 「マス目を2×2でまとめれば一列に2個置く問題ができるじゃん!」
 と思いつき、考察を進めていくうちにこの結果が出たという感じです

 個人的にこの「各マスを更に分割する」アイデアはかなり気に入っています.しかし「1マスに3個」などの一般化は厳しそうなので、あまり汎用性はない気がします

 逆に、後半の議論で使った逆関数を取る部分は結構使えそうです(大丈夫な気はしますが、この議論をするものを他に見ないので危ない操作だったら教えてください)

 最後まで読んでいただきありがとうございました.

投稿日:124
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

ぴー
ぴー
29
8829

コメント

他の人のコメント

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