平成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)

30

240

36

864

13824

329

39480

1263360

3655

2631600

168422400

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

 最初のページへもどる