第4問
非負整数 n について,3種類の文字 ,{} から成る文字列 wn を以下のように定める。
・ w0={}
・ wn={w0,…,wn−1}
例えば
w1w2w3={w0}={{}}={w0,w1}={{},{{}}}={w0,w1,w2}={{},{{}},{{},{{}}}}
となる。
(1) wn の文字数を ln で表す。ln を求めよ。
(2) wn に含まれる ,{} の数をそれぞれ an,bn,cn とする。an,bn,cn を求めよ。
(3) wn にあらわれる文字を左から vn(1),vn(2),⋯,vn(ln) とおく。1≦i<j≦ln であり,vn(i)vn(j) が {} となる2整数 (i,j) の選び方の総数を xn とする。
例えば w0={} より v0(1)={,v0(2)=} であり,x0=1 である。
w1={{}} より v1(1)={,v1(2)={,v1(3)=},v1(4)=} である。このとき v1(1)v1(3),v1(1)v1(4),v1(2)v1(3),v1(2)v1(4) が {} となるため,x1=4 である。
xn を求めよ。
場合の数と数列の問題です.このような数え上げの問題には,漸化式を立てて計算することが基本的な方針となります.
この問題に出てくるxn=i=0∑n−1xi+(nの式)というタイプの漸化式には,ひとつずらして差をとる方法が有効です.
第4問(1)
文字列 S の長さを L(S) で表すことにすると,n≥1 のとき
ln=L(wn)=L({w0,…,wn−1})=L(w0)+⋯+L(wn−1)+2+(n−1)=l0+⋯+ln−1+n+1=n+1+i=0∑n−1li
となる.これとln+1=(n+1)+1+i=0∑nliとの差をとってln+1−ln=ln+1すなわちln+1+1=2(ln+1)が n≥1 で成り立つ.(n=0 では正しくないことに注意!)これとl1+1=4+1=5を合わせると,n≥1 のときln=5⋅2n−1−1が成り立つ.以上より
ln={5⋅2n−1−1 2 (n≥1)(n=0)
となる.
次に (2) です.an,bn,cn それぞれで漸化式を立ててもよいですが,(1) の結果と左右の括弧の対称性を使うと an のみ計算すればよいことがわかります.
第4問(2)
まず an を計算する.文字列 S に含まれるカンマ , の個数を A(S) で表すことにすると,n≥1 のとき
an=A(wn)=A({w0,…,wn−1})=A(w0)+⋯+A(wn−1)+(n−1)=(n−1)+i=0∑n−1ai
となる.これとan+1=n+i=0∑naiの差をとってan+1−an=an+1すなわちan+1+1=2(an+1)が n≥1 で成り立つ.これとa1+1=0+1=1を合わせると,n≥1 のときan=2n−1−1が成り立つ.以上より
an={2n−1−1 0 (n≥1)(n=0)
となる.
また定義よりln=an+bn+cnであり,wn の中に左括弧 { と右括弧 } は必ずペアで出現するからbn=cnが成り立つ.よって n≥1 のとき
bn=cn=21(ln−an)=21(5⋅2n−1−1−(2n−1−1))=2nとなる.これは n=0 でも正しいから
bn=cn=2nである.
最後に (3) です.漸化式を立てるという原則から,nが小さい場合の結果をうまく使えるようなやり方で文字の選び方を数えます.すると,wn={w0,…,wn−1}から
- 左右の括弧 {} を同じ wi の中で選ぶ
もしくは
- i<j として wi から左括弧 { を,wj から右括弧 } を選ぶ
という場合分けをして計算すればよさそうです.1つ目の場合は n が小さい場合の結果からわかり,2つ目の場合は (2) で数えた { と } の個数を使えば計算できます.
実際にはこれに加えて wn の左端の { と右端の } も考慮する必要があることから,左括弧 { の位置で場合分けします.
第4問(3)
n≥1 のとき,wn={w0,…,wn−1}と書ける.条件を満たすような2文字の選び方を,左括弧 { の位置で場合分けして数える.
- {w0,…,wn−1} の左端の { を選ぶとき
右括弧 } は wn に含まれるものならどれでもいいので,選び方は cn通りである.
- {w0,…,wn−1} の wi の中の { を選ぶとき
{} の作り方としてあり得るのは
- 「 wi の中で {} を作る」
もしくは
- 「 wi から { を選び, wi より右側の,wi+1,…,wn−1}の部分から } を選ぶ」
のどちらかである.それぞれの選び方はxi通りbi⋅(ci+1+⋯+cn−1+1)通り
である.
以上を足し合わせることで,n≥1 のとき
xn=cn+i=0∑n−1{xi+bi⋅(ci+1+⋯+cn−1+1)}=2n+i=0∑n−12i⋅(2i+1+⋯+2n−1+1)+i=0∑n−1xi
が成り立つ.これとxn+1=2n+1+i=0∑n2i⋅(2i+1+⋯+2n−1+2n+1)+i=0∑nxiの差をとると
xn+1−xn=2n+1−2n+i=0∑n−12i⋅2n+2n⋅1+xn=2n+1+2n⋅2−12n−1+xn=xn+2n(2n+1)
となるからxn+1=2xn+2n(2n+1)
が n≥1 で成り立つ.また n=0 のときも x0=1,x1=4 だから正しい.
2n+1xn+1=2nxn+21(2n+1)と変形することで n≥0 のとき
2nxn=20x0+i=0∑n−121(2i+1)=1+21⋅2−12n−1+21n=1+21(2n−1+n)=21(2n+n+1)
となる.よってxn=(2n+n+1)2n−1である.
略解
(1)
ln={5⋅2n−1−12(n≧1)(n=0)
(2)
anbncn={2n−1−10(n≧1)(n=0)=2n=2n
(3)
xn=(2n+n+1)2n−1