魔方陣の個数の公式
魔方陣っていうのは、ご存じの方も多いと思いますが、n×n マスに 1〜 までの数が入っていて、縦、横、斜めのマスの数の和が等しくなっているものを言います。
例えば、3×3 の魔方陣には次のようなものがあります。
魔方陣の個数は、n=5 までは完ぺきに求められているそうなのですが、n=6 となると、正確な数が分かっていないそうなのです。
それから、n×n マスの魔方陣の個数を求める公式も発見されていないとか何とか。
そこで、調子に乗って、公式を作ってみました。
まず、縦、横、斜めのマスの数の和ですが、これは次のようになります。
次に、各マス目に次のように番号をつけます。
さて、各マスに 1〜 までの数を割り振るわけですが、そのためには から への全単射関数、すなわち置換が必要になるわけです。
そこで、まずは から への全ての関数を考えます。
これらに適当に順序付けをして、k 番目の関数に i を代入したときの値を求める関数は、 として、次のように構成できます。
証明は面倒なので省略(自分で証明はしました)。
例えば、m=4 のとき、各 k について F(4,k,1), F(4,k,2), F(4,k,3), F(4,k,4) を計算してみると、次のようになります。
k=1〜4: (1,1,1,1),(1,1,1,2),(1,1,1,3),(1,1,1,4),
k=5〜8: (1,1,2,1),(1,1,2,2),(1,1,2,3),(1,1,2,4),
…,
k=253〜256:(4,4,4,1),(4,4,4,2),(4,4,4,3),(4,4,4,4)
さて、k 番目の関数が置換であるなら 1、そうでないなら 0 を返す関数は次のようになります。
ここで、D(i,j) はクロネッカーのデルタです。
とおきます。
すると、k 番目の置換、つまり k 番目の盤面に対し、縦、横、右下がりの対角線、左下がりの対角線の和が w なら 1、そうでないなら 0 を返す関数は、それぞれ次のようになります。
以上により、求める公式は次のようになります。
これで完成です。
めでたす。
(計算手順を数式で表現しただけなので、実用性は全くありません。)