平成11年12月29日
[流れ星]第40回
数学的な応募問題<解答募集期間:12月26日〜1月8日>
[双子の並び方]
太郎さんが勤務している学校には、何組かの双子がいます。今、全部で2n人のn組の双子を
一列に並べる方法は何通りあるか、知りたくなりました。ただし、同じ組の双子は隣り合わないように
します。そこで、次の問いに答えてください。
問題1:n=1,2,3 のときの並び方は何通りあるか。
問題2:一般に、a(n) 通りあったとして、漸化式を導いてください。
問題3:可能なら、a(n) をnで表してください。
正直言って、まだ、太郎さんは一般の場合の答は知りません。
12月29日追加注釈
太郎さんは、同じ組の双子について、区別をする場合と、区別しない場合があることに
読者の寄せられた解答から気づきました。これから解答を寄せられる方は、先に区別しないで考えて、
その後、区別する場合に発展させてください。よろしくお願いします。
NO1<sambaGREEN
>さんからの解答 27日午後11時59分受信 29日更新意外にあっさりいったので,勘違いしているかもしれません。
********************************
n組の双子の位置関係の数(双子の入れ替わりを考えない場合)を,b(n)とします。
問題1
n=1のときは,明らかに不可能 a(1)=0,
n=2のとき,2組の双子の位置関係は ○×○× または ×○×○の2通りで b(2)=2
2組の双子がそれぞれ入れ替わることができるので,a(2)=2^2*b(2)=8
n=3のとき,3組目の双子は,|○|×|○|×|の5カ所の|のうちの2カ所に入れるので,
b(3)=5C2*b(2)=20,したがって,a(3)=2^3*b(3)=160
問題2,問題3
n≧3のとき,問題1の考え方で,n組目の双子の入り方は,(2n-1)C2通りなので,
b(n)=(2n-1)C2*b(n-1)が成り立つ。
従って,b(n)=(2n-1)(2n-2)/2*(2n-3)(2n-4)/2*・・・*5×4/2*b(2)
=b(2)*(2n-1)!/(3!*2^(n-2))
n組の双子は入れ替わり方は,2^nであるから,
a(n)=8(2n-1)!/3!=4(2n-1)!/3 これは,n=2のときも成立
<水の流れ:コメント>29日記入
「sambaGREEN」さんの解答の中で、
n=3のとき,3組目の双子は,|○|×|○|×|の5カ所の|のうちの2カ所に入れるので,
としてありますが、例えば ○|○×|× の中に3組目の双子入れる方法もありますから、
もれていますね。
NO2<sambaGREEN>さんからの報告 29日午前3時11分受信 29日更新
誤りのご指摘,ありがとうございました。sambaGREENです。
最近,こういうミス多いんですよね。自覚しているだけに重傷です(反省,体力回復せねば)。
考え直しましたが,実は行き詰まりました。というわけで,「解答」でなく「報告」という形で送らせていただきました。
**********************************************
n組の双子の位置関係の数(双子の入れ替わりを考えない場合)で考えます。
双子の入れ替わりを考える場合,それに2^nをかければ,よいわけですから。
n組の双子のうち,1組だけが隣り合う場合をb(n),2組が隣り合う場合をc(n)とします。
問題1
n=1のとき,あきらかに,a(1)=0,b(1)=1,c(1)=0
n=2のとき,a(2)=2 ○×○×,×○×○
b(2)=2 ○××○,×○○×
c(2)=2 ○○××,××○○
n=3のとき,
まず,a(3)について,3組目の双子は,
1○2×3○4×5の 5カ所のうちの2カ所に入れるので,5C2通り
1○2×3×4○5の 3と,残りの4カ所のうちの1カ所に入るので,4通り
1○2○3×4×5の 2と4に入らなければならないから,1通り
よって,a(3)=2*10+2*4+2*1=30
b(3)について,3組目の双子は,
1○2×3○4×5の 5カ所のうちの1カ所に隣り合って入るので,5通り
1○2×3×4○5の 3に隣り合って入るか,残りの4カ所のうち2カ所で(1+4C2)通り
1○2○3×4×5の 2または4と,1,3,5のうち1カ所で,6通り
よって,b(3)=2*5+2*7+2*6=36
c(3)について,3組目の双子は,
1○2×3×4○5の 3以外の4カ所のうちの1カ所に隣り合って入るので,4通り
1○2○3×4×5の 1,3,5のうち2カ所に入る,2または4に隣りあって入るで,3C2+2通り
よって,c(3)=2*4+2*5=18
問題2
n≧3のとき,n=3のときの考え方で,
a(n)=(2n-1)C2*a(n-1)+(2n-2)*b(n-1)+c(n-1)
b(n)=(2n-1)*a(n-1)+{(2n-2)C2+1}*b(n-1)+2*(2n-3)*c(n-1)
c(n)=(2n-2)*b(n-1)+{(2n-3)C2+2}*c(n-1)
と,漸化式が完成したように思ったのですが,実はまだ,見落としがありました。
○○・・・××・・・△△のように3組が隣り合う場合に,
3カ所のうち2カ所に割って入る場合の数をb(n)に加える必要があります。
3カ所のうち1カ所と,それ以外の1カ所入る場合の数をc(n)に加える必要があります。
つまり,3組が隣り合う場合d(n)を考える必要が生じます。そうすれば,今度は4組が,5組が・・・。無限地獄。
発想の転換が必要かもしれません。どなたか,よろしく・・・。
<水の流れ:コメント>29日記入
いや、ありがたいです。いろいろな考え方から、思わぬ副産物のでてくる例はいくらでもあります。
私の目標の一般項まで至っていません。皆さん!お願いします。
NO3<浜田>さんからの報告 8日午前8時10分受信 9日更新
双子の並び方の問題解答
今回は十進Basicを使って解いてみました.
n=1--> 0
n=2--> 8
n=3--> 240
n=4--> 13824
n=5--> 1263360
残念ながらパソコンでは,漸化式やら一般項を求める事は出来ませんので,このくらいで勘弁して下さい.
!futago.bas
let kosuu=0
for j0=0 to 1
let j1=0+1-j0
if int(j0/2)<>int(j1/2) then let kosuu=kosuu+1
next j0
print "n=1-->";kosuu!
let kosuu=0
for j0=0 to 3
for j1=0 to 3
if j0<>j1 and int(j0/2)<>int(j1/2) then
for j2=0 to 3
if j0<>j2 and j1<>j2 and int(j1/2)<>int(j2/2) then
let j3=0+1+2+3-j0-j1-j2
if int(j2/2)<>int(j3/2) then let kosuu=kosuu+1
end if
next j2
end if
next j1
next j0
print "n=2-->";kosuu
!
let kosuu=0
for j0=0 to 5
for j1=0 to 5
if j0<>j1 and int(j0/2)<>int(j1/2) then
for j2=0 to 5
if j0<>j2 and j1<>j2 and int(j1/2)<>int(j2/2) then
for j3=0 to 5
if j0<>j3 and j1<>j3 and j2<>j3 and int(j2/2)<>int(j3/2) then
for j4=0 to 5
if j0<>j4 and j1<>j4 and j2<>j4 and j3<>j4 and int(j3/2)<>int(j4/2) then
let j5=0+1+2+3+4+5-j0-j1-j2-j3-j4
if int(j4/2)<>int(j5/2) then let kosuu=kosuu+1
end if
next j4
end if
next j3
end if
next j2
end if
next j1
next j0
print "n=3-->";kosuu
!
let kosuu=0
for j0=0 to 7
for j1=0 to 7
if j0<>j1 and int(j0/2)<>int(j1/2) then
for j2=0 to 7
if j0<>j2 and j1<>j2 and int(j1/2)<>int(j2/2) then
for j3=0 to 7
if j0<>j3 and j1<>j3 and j2<>j3 and int(j2/2)<>int(j3/2) then
for j4=0 to 7
if j0<>j4 and j1<>j4 and j2<>j4 and j3<>j4 and int(j3/2)<>int(j4/2) then
for j5=0 to 7
if j0<>j5 and j1<>j5 and j2<>j5 and j3<>j5 and j4<>j5 and int(j4/2)<>int(j5/2) then
for j6=0 to 7
if j0<>j6 and j1<>j6 and j2<>j6 and j3<>j6 and j4<>j6 and j5<>j6 and int(j5/2)<>int(j6/2) then
let j7=0+1+2+3+4+5+6+7-j0-j1-j2-j3-j4-j5-j6
if int(j6/2)<>int(j7/2) then let kosuu=kosuu+1
end if next j6
end if next j5
end if next j4
end if next j3
end if next j2
end if next j1
next j0
print "n=4-->";kosuu
!
let kosuu=0
for j0=0 to 9
for j1=0 to 9
if j0<>j1 and int(j0/2)<>int(j1/2) then
for j2=0 to 9
if j0<>j2 and j1<>j2 and int(j1/2)<>int(j2/2) then
for j3=0 to 9
if j0<>j3 and j1<>j3 and j2<>j3 and int(j2/2)<>int(j3/2) then
for j4=0 to 9
if j0<>j4 and j1<>j4 and j2<>j4 and j3<>j4 and int(j3/2)<>int(j4/2) then
for j5=0 to 9
if j0<>j5 and j1<>j5 and j2<>j5 and j3<>j5 and j4<>j5 and int(j4/2)<>int(j5/2) then
for j6=0 to 9
if j0<>j6 and j1<>j6 and j2<>j6 and j3<>j6 and j4<>j6 and j5<>j6 and int(j5/2)<>int(j6/2) then
for j7=0 to 9
if j0<>j7 and j1<>j7 and j2<>j7 and j3<>j7 and j4<>j7 and j5<>j7 and j6<>j7 and int(j6/2)<>int(j7/2) then
for j8=0 to 9
if j0<>j8 and j1<>j8 and j2<>j8 and j3<>j8 and j4<>j8 and j5<>j8 and j6<>j8 and j7<>j8 and int(j7/2)<>int(j8/2) then
let j9=0+1+2+3+4+5+6+7+8+9-j0-j1-j2-j3-j4-j5-j6-j7-j8
if int(j8/2)<>int(j9/2) then let kosuu=kosuu+1
end if next j8
end if next j7
end if next j6
end if next j5
end if next j4
end if next j3
end if next j2
end i next j1
next j0
print "n=5-->";kosuu
end
サレジオ学院 浜田 明巳
PS.A Happy Millennium! 新年明けましておめでとうございます.今年もよろしくお願いします.
NO4<浜田>さんからの報告 1月11日午前8時35分受信 11日更新
双子の並び方の問題解答2
いつの間にか注釈が追加されていました.気が付きませんでした.場合の数の問題で,区別がつく,つかないは重要なポイントです.しかし人間にからむ場合,たとえ双子でも,区別がつかない訳はありません.区別がつきにくい白球,赤球の並び方を求める訳ではないのですから,区別がつかない場合の数を求める必要はないと思うのですが,どうでしょう.
とにかく解いてみます.やはり今回はデータが具体的に残るエクセルのマクロを使いました.結果は,
n=1--> 0
n=2--> 2
n=3--> 30
n=4--> 864
n=5--> 39480
Option Explicit
Sub Macro1()
Dim j(9), aru(9), kosuu(5), j0, j1, j2, j3, j4, j5, j6, j7, j8, jj, n, m, dame As Integer
For j1 = 1 To 5: kosuu(j1) = 0: Next
Dim narabi As String
Range("A1").Select
n = 2
For j0 = 0 To n - 1: j(0) = j0
For j1 = 0 To n - 1
If j0 <> j1 Then
j(1) = j1
For j2 = 0 To n - 1
If j1 <> j2 Then
j(2) = j2
GoSub last
If j2 <> j(3) Then GoSub printing
End If
Next
End If
Next
Next '
n = 3
For j0 = 0 To n - 1: j(0) = j0
or j1 = 0 To n - 1
If j0 <> j1 Then
j(1) = j1
For j2 = 0 To n - 1
If j1 <> j2 Then
j(2) = j2
For j3 = 0 To n - 1
If j2 <> j3 Then
j(3) = j3
For j4 = 0 To n - 1
If j3 <> j4 Then
j(4) = j4: m = 4: GoSub check
If dame = 0 Then
GoSub last
If j4 <> j(5) Then GoSub printing
End If
End If
Next
End If
Next
End If
Next
End If
Next
Next
'
n = 4
For j0 = 0 To n - 1: j(0) = j0
For j1 = 0 To n - 1
If j0 <> j1 Then
j(1) = j1
For j2 = 0 To n - 1
If j1 <> j2 Then
j(2) = j2
For j3 = 0 To n - 1
If j2 <> j3 Then
j(3) = j3
For j4 = 0 To n - 1
If j3 <> j4 Then
j(4) = j4: m = 4: GoSub check
If dame = 0 Then
For j5 = 0 To n - 1
If j4 <> j5 Then
j(5) = j5: m = 5: GoSub check
If dame = 0 Then
For j6 = 0 To n - 1
If j5 <> j6 Then
j(6) = j6: m = 6: GoSub check
If dame = 0 Then
GoSub last
If j6 <> j(7) Then GoSub printing
End If
End If
Next
End If
End If
Next
End If
End If
Next
End If
Next
End If
Next
End If
Next
Next'
n = 5
For j0 = 0 To n - 1: j(0) = j0
For j1 = 0 To n - 1
If j0 <> j1 Then
j(1) = j1
For j2 = 0 To n - 1
If j1 <> j2 Then
j(2) = j2
For j3 = 0 To n - 1
If j2 <> j3 Then
j(3) = j3
For j4 = 0 To n - 1
If j3 <> j4 Then
j(4) = j4: m = 4: GoSub check
If dame = 0 Then
For j5 = 0 To n - 1
If j4 <> j5 Then
j(5) = j5: m = 5: GoSub check
If dame = 0 Then
For j6 = 0 To n - 1
If j5 <> j6 Then
j(6) = j6: m = 6: GoSub check
If dame = 0 Then
For j7 = 0 To n - 1
If j6 <> j7 Then
j(7) = j7: m = 7: GoSub check
If dame = 0 Then
For j8 = 0 To n - 1
If j7 <> j8 Then
j(8) = j8: m = 8: GoSub check
If dame = 0 Then
GoSub last
If j8 <> j(9) Then GoSub printing
End If
End If
Next
End If
End If
Next
End If
End If
Next
End If
End If
Next
End If
End If
Next
End If
Next
End If
Next
End If
Next
Next
MsgBox "n=1-->" & kosuu(1) & Chr(13) & "n=2-->" & kosuu(2) & Chr(13) & "n=3-->" & kosuu(3) & Chr(13) & "n=4-->" & kosuu(4) & Chr(13) & "n=5-->" & kosuu(5)
End'
check:
For jj = 0 To n - 1: aru(jj) = 0: Next
For jj = 0 To m: aru(j(jj)) = aru(j(jj)) + 1: Next
dame = 0: jj = 0
While dame = 0 And jj < n: dame = -(aru(jj) > 2): jj = jj + 1: Wend
Return
'
last:
j(2 * n - 1) = 0
For jj = 1 To n - 1: j(2 * n - 1) = j(2 * n - 1) + 2 * jj: Next
For jj = 0 To 2 * n - 2: j(2 * n - 1) = j(2 * n - 1) - j(jj): Next
Return
'
printing:
kosuu(n) = kosuu(n) + 1
narabi = "": For jj = 0 To 2 * n - 1: narabi = narabi + Str$(j(jj)): Next
ActiveCell.FormulaR1C1 = kosuu(n)
SendKeys "{right}", True: ActiveCell.FormulaR1C1 = narabi
SendKeys "{down}", True: SendKeys "{left}", True
Return
End Sub
このプログラムは計算が終わるのに1時間はかかるかも知れません.気をつけて下さい。
<水の流れ:コメント> 11日記入
エクセルで開いてみたら、なの並び方がすべて書いてありました。全部で40,376行あります。
こんなに、使ったにはもちろん初めてです。「
プログラムは計算が終わるのに1時間はかかるかも知れません。」この言葉通り、大変な作業のようです。本当にありがたいです。この時間に費やされた苦労に頭が下がります。
感謝の気持ちとお礼を言います。
NO5<
sambaGREEN>さんからの報告 1月14日午前4時50分受信 14日更新いつもお世話になっています。sambaGREENです。
もともとの問題の場合の数(双子のそれぞれを区別する場合)を a(n),
双子の入れ替わりを考えない場合(前回考えていた場合)をb(n),
双子の位置のパターンの数(「○×○×」と「×○×○」を区別しない)をc(n) とします。
a(n)=2^n*b(n),b(n)=n!*c(n)が成り立ちますから,
c(n)を求めればよいことになります。
また,n組の双子のうち,1組だけが隣り合うパターンの数をd(n)とします。
(「○××○」と「×○○×」は区別しない)
n=1のとき,あきらかに,c(1)=0,d(1)=1
n=2のとき,c(2)=1 ○×○×
d(2)=1 ○××○
n=3のとき,
双子のパターンのみを考えていますから一番左を●とするともう一つの●は
1)●1○2×3○4×5 の場合 2〜5の4カ所に入ることが出来ます。
●○●×○×
●○×●○×
●○×○●×
●○×○×●
2)●1○2×3×4○5 の場合 3しか入れません。
●○×●×○
よって,c(3)=4+1=5
つぎに,d(3)について考えます。
1) c(3)のパターンの左の●を右の●とくっつけることによって,
●○●×○× → ○●●×○×
●○×●○× → ○×●●○×
●○×○●× → ○×○●●×
●○×○×● → ○×○×●●
●○×●×○ → ○×●●×○
2) ●●にc(2)のパターンをくっつけることによって,
●●○×○×
よって,d(3)=5+1=6
n組の双子のときをn=3のときの考え方と同じように考えていきます。
一番左を●とするともう一つの●は,
1) c(n-1)のパターンそれぞれの,2n-2ヶ所に入ることができるから,(2n-2)*c(n-1) 通り
2) d(n-1)のパターンそれぞれの,1ヶ所に入ることができるから, d(n-1) 通り
したがって, c(n)=(2n-2)*c(n-1)+d(n-1)
また,d(n)=c(n)+c(n-1)となるので,上式に代入して整理すると,
c(n)=(2n-1)*c(n-1)+c(n-2) ,c(1)=0,c(2)=1 となります。
Excelで計算した結果は以下の通りです。
n |
c(n) |
b(n) |
a(n) |
1 |
0 |
0 |
0 |
2 |
1 |
2 |
8 |
3 |
5 |
30 |
240 |
4 |
36 |
864 |
13824 |
5 |
329 |
39480 |
1263360 |
6 |
3655 |
2631600 |
168422400 |
7 |
47844 |
241133760 |
30865121280 |
「浜田さん」の2種類の計算結果の報告とも合致しているので,漸化式は正しいはずです。
しかし,残念ながら,私には一般項を求められませんでした。
どなたか,一般項を求めて下さい。もしくは求められないことを示して下さい。
(漸化式はあまり得意では・・・(泣))
<水の流れ:コメント> 14日記入
これだけ、きれいな数字が並びますから、一般項がありそうですが?
NO6<清川(kiyo)>さんからの報告 1月15日午後5時6分受信 16日更新
いつもお世話になっています。清川(kiyo)です。一般項を数列サイトで検索してみましたが、未解決のようです。
ID Number: A000806 (Formerly M3982 and N1651)
Sequence: 0,1,5,36,329,3655,47844,721315,12310199,234615096,
4939227215,113836841041,2850860253240,77087063678521,
2238375706930349,69466733978519340,2294640596998068569,
80381887628910919255
Name: a(n) = (2n+1)a(n-1) + a(n-2).
References J. Touchard, Nombres exponentiels et nombres de Bernoulli,
Canad. J.
Math., 8 (1956), 305-320.
G. Kreweras and Y. Poupard, Sur les partitions en paires
d'un ensemble
fini totalement ordonne, Publications de l'Institut de
Statistique
de l'Universit\'{e} de Paris, 23 (1978), 57-74.
Maple: f:=proc(n) option remember; if n<=1 then n else
(2*n+1)*f(n-1)+f(n-2); fi; end;
Keywords: nonn,easy,huge,nice
Offset: 0
Author(s): njas
<水の流れ:コメント>16日記入 これで、現段階では、解決したことになりますね。
今まで、ありがとうございました。勉強になります。
<自宅>
mizuryu@aqua.ocn.ne.jp最初のページへもどる