・計算結果の信憑性                        GAI 氏

 どなたか「数字の1から18までを一つずつ使って、9個の1より小さい既約分数を作ること
が出来る組合せが何通り出来るか」を調べてくれませんか?

 計算で求まるのか?コンピュータでプログラム的に処理できるのか?どちらでも構いませ
んのでお願いします。


 らすかるさんからのコメントです。(令和6年4月14日付け)

 「A009679」で正しければ、59616通りだと思います。計算で出すのは難しいと思います。

# n=2,4,6,…,18に対する組合せ数をプログラムで調べ、結果の数列を検索したら一致する
 ものがありました。


 GAI さんからのコメントです。(令和6年4月14日付け)

 私は一週間ぐらい試行錯誤を繰り返し、プログラムを色々書き直しやっと全部で58320通り
を求めたと思っていたんですが、どこかに見落としがあるのかな〜。自分でも何度も見直した
んですが、それが分からないのです。

(考え方) 全部が規約な分数であるため、分子と分母は奇数、偶数での組合わせとなるので

 A=[2,4,6,8,10,12,14,16,18] 、B=[1,3,5,7,9,11,13,15,17]

の2組に分け、AとBを組合わせてできる1より小さい既約分数は、次の69個で

M=[1/2, 2/3, 2/5, 2/7, 2/9, 2/11, 2/13, 2/15, 2/17,1/4, 3/4, 4/5, 4/7, 4/9, 4/11, 4/13, 4/15,
 4/17,1/6, 5/6, 6/7, 6/11, 6/13, 6/17,1/8, 3/8, 5/8, 7/8, 8/9, 8/11, 8/13, 8/15, 8/17,1/10,
 3/10, 7/10, 9/10, 10/11, 10/13, 10/17,1/12, 5/12, 7/12, 11/12, 12/13, 12/17,1/14, 3/14,
 5/14, 9/14, 11/14, 13/14, 14/15, 14/17,1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16, 15/16,
 16/17,1/18, 5/18, 7/18, 11/18, 13/18, 17/18]

 これから組合わせて調べるのは、対象が多すぎるので手分けしていく。

(1) 1/2を使うとすれば残りは、1、2 の数字をふくまない物から構成するので

Q1=[ 3/4, 4/5, 4/7, 4/9, 4/11, 4/13, 4/15, 4/17]
Q2=[5/6, 6/7, 6/11, 6/13, 6/17]
Q3=[ 3/8, 5/8, 7/8, 8/9, 8/11, 8/13, 8/15, 8/17]
Q4=[3/10, 7/10, 9/10, 10/11, 10/13, 10/17]
Q5=[5/12, 7/12, 11/12, 12/13, 12/17]
Q6=[ 3/14, 5/14, 9/14, 11/14, 13/14, 14/15, 14/17]
Q7=[3/16, 5/16, 7/16, 9/16, 11/16, 13/16, 15/16, 16/17]
Q8=[5/18, 7/18, 11/18, 13/18, 17/18]

に分けて置き、

for(n1=1,8,Q1[n1])
for(n2=1,5,Q2[n2])
for(n3=1,8,Q3[n3])
for(n4=1,6,Q4[n4])
for(n5=1,5,Q5[n5])
for(n6=1,7,Q6[n6])
for(n7=1,8,Q7[n7])
for(n8=1,5,Q8[n8])

でそれぞれのグループから既約分数を組合わせていく。

 その組合わせが異なる16個の異なる数字から作られていればカウントして集計する。

 こうして求まった集計が、s1=4788 と得られた。同様な考え方で

(2) 2/3を使うとすれば残りは、2、3 を含まない物から組み合わせていくので、Q1〜Q8をそれ
に合わせて選び直し、条件を満たすものをカウントしていくと、s2=9144

 以下同様で

(3) 2/5を使う場合、s3=5328

(4) 2/7を使う場合、s4=5184

(5) 2/9を使う場合、s5=9144

(6) 2/11を使う場合、s6=4788

(7) 2/13を使う場合、s7=4788

(8) 2/15を使う場合、s8=10368

(9) 2/17を使う場合、s9=4788

 以上から求める総数は、4788*4+5184+5328+9144*2+10368=58320通り なのです。

 これが正解と思われる59616通りなので、1296通りは何処へ行ったのか?


 らすかるさんからのコメントです。(令和6年4月14日付け)

 (8) 2/15を使う場合の値は10368でなく11664です。その他はすべて合っていました。


 GAI さんからのコメントです。(令和6年4月14日付け)

 2/15のチェックをしたら、

Q4=[[1, 10], [3, 10], [7, 10], [9, 10], [10, 11], [10, 13], [10, 17]]

に対する for(n4=1,7,Q4[n4])でのチェックであるべき所を for(n4=1,6,Q4[n4]) と間違って処
理していたことが原因であることが判明しました。

 間違えない様に慎重に進んでいた調査も、終盤に近くなった頃にタイプミスを発生させてし
まっていた。

 再度for(n4=1,7,Q4[n4])での確認では、s7=11664で一致出来ました。

 間違えたのに気付くためには、間違ったことを確認した後でしか見えてこないので厄介です。


 らすかるさんからのコメントです。(令和6年4月14日付け)

 Q1,Q2,…をプログラムで生成し、その個数を(プログラムで自動的に)ループカウントにす
れば間違えることはなくなると思います。


 GAI さんからのコメントです。(令和6年4月15日付け)

 人がプログラムを作っているのを参考にしていたら、あんなに何日も考えてやっと手に入れ
た数値が

gp > matpermanent(matrix(9,9,i,j,gcd(2*i,2*j-1)==1))
%192 = 59616通り

の一発で行けるという。

 従って、1〜32の数字をそれぞれ一度しか使用できなく、16個の1より小さい既約分数を
(4×4行列を作れる)作れる組合せの総数は、

gp > matpermanent(matrix(16,16,i,j,gcd(2*i,2*j-1)==1))
%193 = 768372168960通り

から、とてもまともには求めることが難しい大きさでも、いとも簡単にわかるという!!

 ほんとに数学の力(中にある数学的構造の不思議さ)を感じます。


 DD++ さんからのコメントです。(令和6年4月17日付け)

 計算で一般的に出すのは難しいとしても、今回の数値設定に限るなら、さほど難しくないで
すよ。

 とりあえず 2 と 3 で約分できないように分数を作る方法は、

 6 の倍数を使う 3 組、3 の倍数と 2 の倍数を使う 3 組、残り 3 組の順に考えて、

 6P3 * 6P3 * 3! = 86400 通り

この中で、

 5/10 ができてしまう組が、5P3 * 5P3 * 2! = 7200 通り

 10/15 ができてしまう組が、6P3 * 5P2 * 3! = 14400 通り

 7/14 ができてしまう組が、5P3 * 5P3 * 2! = 7200 通り

 5/10 と 7/14 がともにできてしまう組が、4P3 * 4P3 * 1! = 576 通り

 10/15 と 7/14 がともにできてしまう組が、5P3 * 4P2 * 2! = 1440 通り

よって、いずれも既約分数になる組は、86400-7200-14400-7200+576+1440 = 59616 通り


 GAI さんからのコメントです。(令和6年4月18日付け)

 すみません、DD++さん。説明文とそれを示す式が私の頭では何をどう考えたら成り立つの
か全く見えてきません。

 例えば、6 の倍数を使う 3 組、3 の倍数と 2 の倍数を使う 3 組、残り 3 組の順に考えて、

 6P3 * 6P3 * 3! = 86400 通り

 はて?6P3の「6」は何を指した6なのか?3!は何をもって3!にするのか?

 以下後の方の説明文と式の意味が全く読み取れなくいます。

 計算とそれから導かれる結果は正しいのだから、それぞれには導く理由を持つ根拠がある
事は理解できるんですが、全体を通した構想のあらすじが見えていない事なんだと思います。

 もう少し解説を入れて説明願えませんか?


 DD++ さんからのコメントです。(令和6年4月18日付け)

 18 までの中には偶数が 9 個あるので、2 で約分できないためには全て偶数と奇数で対に
して分数を作る必要があります。

 そして、3 でも約分できないように対にするには、

・6 の倍数(3 つある)には 3 で割り切れない奇数(6 つある)の中から 3 つ選んで割り当てる

・3 の倍数である奇数(3 つある)には、3 で割り切れない偶数(6 つある)の中から 3 つ選ん
 で割り当てる

・残った 3 つずつは、適当に偶数と奇数のペアを 3 組作る

ことになります。

 だから 6P3 * 6P3 * 3! = 86400 通り となります。

 それ以後も、指定の分数を最初に作ってしまうことにすると、何個から何個選ぶかが変わ
りますが、考え方は同じです。



  以下、工事中!



              投稿一覧に戻る