組み合わせの個数を数える質問(yahoo知恵袋)
元の質問は, a,b,c,d,e,fの6文字から重複を許してn個選び,
選んだn個をそれぞれ2倍に複製した2n個を並べる並べ方の個数を求めたいとのこと.
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12151668017
例えば, n=3で最初に「aが1個とbが2個 (a,b,b)」が選ばれたら,
並べるときはそれぞれ2倍に複製してa,a,b,b,b,bを一列に並べる.
結論から書くと, n個選ぶときの並べ方の個数は
で求められる.
漸化式を立てて泥臭く求めたけれど, 以外に綺麗な形なので, エレガントな求め方がありそう.
数列A[i] = {a,b,c,d,e,f}として
A[1]=a,...,A[6]=fを表すとする.
f(n,k)でA[1],...,A[k]のk文字から重複を許してn個選んだときの並べ方の個数を表す.
つまり, f(n,6)の一般項を求めたい.
f(n,1) = 1
f(1,k) = k
はすぐ分かる.
また, A[1],...,A[k],A[k+1]のk+1文字から重複を許してn個選んだときの並べ方は
(1) n文字全部A[k+1]を選んだときの並び
(2) A[1],..,A[k]からm個選んでA[k+1]を(n-m)個選んだときの並び
(ただし, m=1,2,...,n)
に分けられる.
A[1],..,A[k]からm個選んでA[k+1]を(n-m)個選んだときの並びは
f(m,k)で数えた長さ2mの並びのそれぞれにA[k+1]を2(n-m)個挿入して作ることができる.
長さ2mの並びに2(n-m)個挿入する場合の数は通りあるから
(1)の並びは1個
(2)の並びは各mに対して, 個ずつある
よって並びの個数を求める漸化式は
となる
以下, ひたすらに一般項を計算する
とすると,
より
と表せる.
最後の式を整理して最初に書いた一般項が得られる.
次のf(n,7)は
(1/32)(S(6)+6S(4)+15S(2)+ 定数)という形だろうし, うまい規則がありそう.