ツアー旅行企画
当HPがいつもお世話になっているHN「GAI」さんからの出題です。(平成21年10月5日)
3人(A、B、C)の客がツアー旅行を希望している。旅行会社は次の企画が可能である。
1. A、B、Cで一緒に行く。
2. A、Bで第1陣、Cだけで第2陣
3. B、Cで第1陣、Aだけで第2陣
4. C、Aで第1陣、Bだけで第2陣
5. Aで第1陣、B、Cで第2陣
6. Bで第1陣、C、Aで第2陣
7. Cで第1陣、A、Bで第2陣
8. Aで第1陣、Bで第2陣、Cで第3陣
9. Aで第1陣、Cで第2陣、Bで第3陣
10. Bで第1陣、Aで第2陣、Cで第3陣
11. Bで第1陣、Cで第2陣、Aで第3陣
12. Cで第1陣、Aで第2陣、Bで第3陣
13. Cで第1陣、Bで第2陣、Aで第3陣
以上の13通りの可能性が生まれる。
では、4人の客が現れたら何通りが考えられるだろうか?
一般に、n 人の客ならどうなるでしょう?
(答) 順列組合せの手頃な問題ですね!また、自然数をいくつかの和に分解する問題とも
関係がありそう...。
3人の場合は、 3=2+1=1+2=1+1+1 に注意して、
求める場合の数は、 3C3+3C2・1C1+3C1・2C2+3C1・2C1・1C1=13(通り)
4人の場合は、
4=3+1=2+2=2+1+1=1+3=1+2+1=1+1+2=1+1+1+1
に注意して、
4C4+4C3・1C1+4C2・2C2+4C2・2C1・1C1+4C1・3C3
+4C1・3C2・1C1+4C1・3C1・2C2+4C1・3C1・2C1・1C1
=1+4+6+12+4+12+12+24=75(通り)
(追記) 平成21年11月24日付け
上記の計算で、3は4通りの自然数の和(和の順番も考慮)に、4は8通りの自然数
の和(和の順番も考慮)に分解されている。
一般に次の公式が知られている。
自然数 n をいくつかの自然数の和(和の順番も考慮)に分解する方法の数は、
2n-1 通り
である。この公式は、次の事実を用いる。
自然数 n を m 個の自然数の和(和の順番も考慮)に分解する方法の数は、
n-1Cm-1 通り (ただし、 m≦n )
この証明は易しい。
(証明) n=1+1+1+・・・・・・+1 と分解すると、n−1個の「+」がある。
この中から、m−1個の「+」を取る組合せの数が求める場合の数である。
(証終)
したがって、 n-1C0+n-1C1+n-1C2+・・・+n-1Cn-1=2n-1 が成り立つ。
さて、上記の計算は、重複順列の考えを用いても出来る。
n 人を番号のついた k 個の部屋に振り分ける方法の数は、 kn 通りある。ただし、この
方法の数の中にはどこかの部屋が空室の場合も含まれることに注意する。
3人を空室がないようにいくつかの部屋に振り分ける場合の計算
3人を1個の部屋に振り分ける方法の数は、 13=1 通り
3人を2個の部屋に振り分ける方法の数は、 23−2=6 通り
3人を3個の部屋に振り分ける方法の数は、 33−3−3(23−2)=6 通り
(2個の部屋が空室になる場合が 3C2 通り、1個の部屋のみが空室になる場合が
3C1・(23−2)通り。これらを起こりうる全ての場合 33 通りから引けばよい。)
以上から、空室がないように、3人をいくつかの部屋に振り分ける方法の数は、
1+6+6=13(通り)
4人を空室がないようにいくつかの部屋に振り分ける場合の計算
4人を1個の部屋に振り分ける方法の数は、 14=1 通り
4人を2個の部屋に振り分ける方法の数は、 24−2=14 通り
4人を3個の部屋に振り分ける方法の数は、 34−3−3(24−2)=36 通り
(2個の部屋が空室になる場合が 3C2 通り、1個の部屋のみが空室になる場合が
3C1・(24−2)通り。これらを起こりうる全ての場合 34 通りから引けばよい。)
4人を4個の部屋に振り分ける方法の数は、
44−4−6(24−2)−4{34−3−3(24−2)}=24 通り
(3個の部屋が空室になる場合が 4C3 通り、2個の部屋のみが空室になる場合が
4C2・(24−2)通り。1個の部屋のみが空室になる場合が
4C1・{34−3−3(24−2)}通り。これらを起こりうる全ての場合 44 通りから引け
ばよい。)
以上から、空室がないように、4人をいくつかの部屋に振り分ける方法の数は、
1+14+36+24=75(通り)
上記の計算を振り返ると、次のように機械的に計算できることが分かる。
5人を空室がないようにいくつかの部屋に振り分ける場合の計算
5人を1個の部屋に振り分ける方法の数は、 15=1 通り
5人を2個の部屋に振り分ける方法の数は、 25−2=30 通り
5人を3個の部屋に振り分ける方法の数は、 35−3C2−3C1・30=150 通り
5人を4個の部屋に振り分ける方法の数は、
45−4C3−4C2・30−4C1・150=240 通り
5人を5個の部屋に振り分ける方法の数は、
55−5C4−5C3・30−5C2・150−5C1・240=120 通り
以上から、空室がないように、5人をいくつかの部屋に振り分ける方法の数は、
1+30+150+240+120=541(通り)
(コメント) Excel さんにお願いすれば、瞬時に求める場合の数が得られますね!
これまでの計算をまとめると、次のような数列が得られる。
1 , 3 , 13 , 75 , 541 , ・・・・・
GAI さんによれば、次のような算出方法があるらしい。(平成21年10月19日付け)
1.まずパスカルの三角形から、右端の 1 は取り除く。
2.左端から右に偶数番目の数に、−をつける。
3.各段目の左端から右斜め下に順々に表示されている数字をすべて加える。
4.この合計段の数の左から順に、 44、34、24、14 を掛け、すべてを加える。
すなわち
よって、 256−243+64−2=75(通り)
(コメント) 組合せの計算は結構気を使いますが、これだと機械的にどんどん算出できそう
ですね!ただ、GAI さんによれば、その算出の根拠が未だ不明とのこと。研究し
てみる価値がありそう...。
重複順列の考え方を用いた先の計算で、
3人を空室がないようにいくつかの部屋に振り分ける場合の計算
13+23−2C1+33−3C1・23+3C1=33・1+23(1−3C1)+1−2C1+3C1
4人を空室がないようにいくつかの部屋に振り分ける場合の計算
14+24−2C1+34−3C1・24+3C1+44−4C3+4C2(24−2)−4C1・(34−3)
=44・1+34(1−4C1)+24(1−3C1+4C2)+1−2C1+3C2−4C3
と式変形してみると、GAI さんによる算出方法のカラクリが見えてくる。
GAI さんの算出方法について、平成21年10月21日付けで、HN「at」さんより、ご教示い
ただいた。(一部文言等を修正・加筆させていただきました。)
n 人の客のツアー旅行計画の総数を、a(n) とする。また、1≦k≦n
に対して、n 人を異
なる k 個の部屋にどの部屋も空でないように分配する方法の総数を、b( n
, k ) とする。
このとき、明らかに、 a(n)=Σ[ k=1,n] b(
n , k ) である。
例 b( 2 , 1 )=1 、 b( 2 , 2 )=2 より、 a(2)=3
b( 3
, 1 )=1 、 b( 3 , 2 )=6 、 b( 3 ,3
)=6 より、 a(3)=13
この b( n , k ) について、次の漸化式が成り立つことは明らかだろう。
b( n+1 , k )=k・b( n , k−1 )+k・b( n , k )
ただし、 b( n , 1 )=1 、 b( n , n+1 )=0
実際に、b( n+1 , k ) は、n+1 人を異なる k 個の部屋にどの部屋も空でないように
分配する方法の総数であるが、ある特定な人、例えば、n+1 人目の人について、
一人部屋の場合 または 複数部屋の場合
の2つの場合に分けられる。
前者の場合は、まず、n+1 人目の人がどの部屋に入るかで、k 通りあり、その
1
通りに対して、残り n 人を k−1 個の部屋にどの部屋も空でないように分配する方
法の数は、b( n , k−1 ) 通りなので、合わせて、 k・b(
n , k−1 ) 通りとなる。
後者の場合は、n+1 人目の人がどの部屋に入るかで、k 通りあり、その
1 通り
に対して、残り n 人を k 個の部屋にどの部屋も空でないように分配する方法の数
は、b( n , k ) 通りなので、合わせて、 k・b( n , k
) 通りとなる。
よって、 b( n+1 , k )=k・b( n , k−1 )+k・b(
n , k ) が成り立つ。
例 b( 2 , 1 )=1 で、 b( 2 , 2 )=2・b( 1 , 1 )+2・b(
1 , 2 )=2
b( 3 , 1 )=1 で、 b( 3 , 2 )=2・b( 2 , 1 )+2・b( 2 , 2 )=6
b( 3 ,3 )=3・b( 2 , 2 )+3・b( 2 , 3 )=6
さて、包含と排除の原理から直ちに、(ただし、二項係数 kCj =C( k ,j ) とする。)
b( n , k )=kn−C(
k ,1 )(k−1)n+C( k ,2 )(k−2)n−・・・
+(−1)k-1C( k
,k−1 )(1)n
=Σ[ j=0 ,k−1] C( k ,j
)・(−1)j・(k−j)n
=Σ[ m=1 ,k] C( k ,k−m
)・(−1)k-m・mn
=Σ[ j=1 ,k]
(−1)k−j・C( k ,k−j )・jn
が分かるので、
a(n)=Σb( n
, k )
=Σ[ k=1,n]Σ[ j=1,k](−1)k−j・C( k ,k−j
)・jn
=Σ[ j=1,n]Σ[ k=j,n](−1)k−j・C( k ,k−j
)・jn
={Σ[ k=1,n](−1)k−1・C( k ,k−1
)・1n
+{Σ[ k=2,n](−1)k−2・C( k ,k−2
)・2n
+・・・・・・・・・・・・・・・・・・・
+{Σ[
k=n,n](−1)k−n・C( k ,k−n )・nn
={C( 1 ,0 )−C( 2
,1 )+C( 3 ,2 )−・・・+(−1)n−1C( n ,n−1 )}・1n
+{C(
2 ,0 )−C( 3 ,1 )+C( 4 ,2 )−・・・+(−1)n−2C( n ,n−2
)}・2n
+・・・・・・・・・・・・・・・・・・・
+C( n ,0
)・nn
となる。これは GAI さん が書かれた計算法そのものである。
a(n)の導出方法は他にもあり、次のHPが参考になると思う。
http://web2.incl.ne.jp/yaoki/jyun.htm
http://web2.incl.ne.jp/yaoki/ajyun.htm
(コメント) at さん、ありがとうございます。奥が深い解答ですね!もう少し勉強させていた
だいて、行間を補充したいと思います。
以下、工事中