NO4B<遊楽街>さんの解答3回目 5/25 6:16受信 6月15日更新


■問題の解釈
「4人のとき(1-2)-(3-4)とつなぐ場合は1つと数える」という補足から、
「このような最終形が何通りあるか」という問題だと解釈します。

■問1
((1-2)-3)-4
(1-(2-3))-4
1-((2-3)-4)
1-(2-(3-4))
(1-2)-(3-4)

答) 5通り

■問2
(((1-2)-3)-4)-5
((1-(2-3))-4)-5
(1-((2-3)-4))-5
1-(((2-3)-4)-5)
(1-(2-(3-4)))-5
1-(2-(3-4)))-5)
1-(2-((3-4)-5))
((1-2)-(3-4))-5
(1-2)-((3-4)-5)
((1-2)-3)-(4-5)
(1-2)-(3-(4-5))
(1-(2-3))-(4-5)
1-((2-3)-(4-5))
1-(2-(3-(4-5)))

答) 14通り

■問3
(1-2)-(3-4)のような手の繋ぎ方の組み合わせを数式に見立てます。
(以降、演算子は+に置き換えます)

このままの形では難しそうなので、中置記法ではなく後置記法で書き直してみます。
このとき、数字は小さい順に並べることにすれば、後置記法の数式は一意に決まります。
n=4の場合を書き出すと
((1-2)-3)-4 → 12+3+4+
(1-(2-3))-4 → 123++4+
1-((2-3)-4) → 123+4++
1-(2-(3-4)) → 1234+++
(1-2)-(3-4) → 12+34++
となります。
後置記法の計算方法は、先頭から順に見ていき演算子が出てきたら、
その演算子と直前の2つの数字を計算結果に置き換えるという手順を繰り返します。
(例 123+4++ → 154++ → 19+ → 10)
このことから、後置記法の記述が計算可能であるためには、
先頭から数字の個数と演算子の個数を数えていったとき、常に
「それまでに現れた数字の個数 > それまでに現れた演算子の個数」
という条件が成り立っていなければならないことがわかります。

今、演算子の総数より数字の総数の方が1個だけ多いですが、
総数が同じ方が以降の話が少しだけ簡単になるので、
最初の数字は固定してその数字は数えないことにすれば、満たさなければならない条件は
「それまでに現れた数字の個数 ≧ それまでに現れた演算子の個数」
と書き直せます。

(★ここからn=5の例なので注意★)
次の図1において、後置記法の式を先頭から順に見ていったとき、
数字が現れたらX方向へ+1進み、演算子が現れたらY方向へ+1進むとすると、
n=5の場合、(n-1)×(n-1) = 4×4の正方形の左下の頂点(◆)から
右上の頂点(●)へ行く経路の内、対角線より上にはみ出さない(対角線上はOK)経路の総数が
求める答ということになります。

演算子            演算子           
 ↑ │ │ │ │/     ↑ │ │ │ │/   
 ├─┼─┼─┼─●─     ├─┼─┼─┼─●─   
4│ │ │ │/│     4│ │ │ │/│    
 ├─┼─┼─┼─┼─     ├─┼─┼─┼D4┼─   
3│ │ │/│ │     3│ │ │/│ │    
 ├─┼─┼─┼─┼─     ├─┼─┼C3┼D3┼─   
2│ │/│ │ │     2│ │/│ │ │    
 ├─┼─┼─┼─┼─     ├─┼B2┼C2┼D2┼─   
1│/│ │ │ │     1│/│ │ │ │    
 ◆─┴─┴─┴─┴→数字   ◆A1┴B1┴C1┴D1┴→数字 
  1 2 3 4        1 2 3 4     
     図1             図2       

ここで、N×Nの正方形について条件を満たす経路の総数をf(N)とする。
(つまりn人の手の繋ぎ方はf(n-1)である)
図2において、A1〜D4まで辿り着く経路の総数をそれぞれa1〜d4とすると、
f(4) = d4 + d3 + d2 + d1
である。
d4 = c1 + c2 + c3
d3 = c1 + c2 + c3
d2 = c1 + c2
d1 = c1
より
f(4) = 2*c3 + 3*c2 + 4*c1
さらに、
c3 = b1 + b2
c2 = b1 + b2
c1 = b1
より
f(4) = 5 * b2 + 9 * b1
さらに、
b2 = a1
b1 = a1
より
f(4) = 14 * a1
a1 = 1であるから、f(4) = 14

f(4)を表す式の係数に着目すると、
 1  1  1  1
 2  3  4
 5  9
14
と変化している。上記の計算式からも明らかなように、
m+1行i列目はm行の1列目からi+1列目までの和になっている。
つまり、m行目の数列のi項目をF(m,i)とすると、
F(m+1,i) = Σ[j=1〜i+1] F(m,j)
である。F(m,i)の一般項がわかれば、
f(N) = F(N,1)
となる。

(★ここから先はちゃんと証明していません★)

F(m,i)の一般項をm=4まで計算してみると、
F(1,i) = 1
F(2,i) = Σ[j=1〜i+1] 1 = i+1
F(3,i) = Σ[j=1〜i+1] (i+1) = (i+1)(i+4)/2
F(4,i) = Σ[j=1〜i+1] (i+1)(i+4)/6 = (i+1)(i+5)(i+6)/6

これから、
F(5,i) = (i+1)(i+6)(i+7)(i+8)/4!
F(6,i) = (i+1)(i+7)(i+8)(i+9)(i+10)/5!
を予想した。F(5,1)とF(6,1)を計算すると42と132となり、
下の結果と一致したので、証明はできていないがどうやら正しそうである。

m=1   1  1  1  1  1  1
m=2   2  3  4  5  6
m=3   5  9 14 20
m=4  14 28 48
m=5  42 9
m=6 132

上記の予想からF(m,i)の一般項は
F(m,i) = (i+1)(i+2m-2)!/{(m-1)!(i+m)!}
従って、
f(N) = F(N,1)
     = 2(2N-1)!/{(N-1)!(N+1)!}
     = 2N(2N-1)!/{N(N-1)!(N+1)!}
     = (2N)!/{N!N!(N+1)}
     = C(2N,N)/(N+1) ← (Cは組み合わせ)
となる。

ゆえに、n人の手の繋ぎ方は
f(n-1) = C(2n-2,n-1)/n
(n=1, n=2でも正しい値となる)

    <自宅>  mizuryu@aqua.ocn.ne.jp