コラッツ予想(3n+1)がなぜ収束するのかについて
・2進法で考えるコラッツ予想
こちらは某ユーチューバーの鈴木先生がおっしゃっていたのですが、「コラッツ予想は2進法で表記すると直感的になにが起こっているのか分かりやすい」ということで、まずは2進法でコラッツ予想をとらえるところから解説したいと思います。
知っているという方は読み飛ばして差支えないです。
まずは、適当な数字を二進法で表記すると、以下のような形になります。
110100
この表記のすばらしい点は、どんな数字に対しても「2^kの約数がひと目で分かる」点です。
110100
↑太線で示したところが、この数の2^kの約数となります。
この例で言えば、下数桁を見れば、この数はM×2^2の形でくくれるのが一目で分かる、ということです。
本題に戻って、そもそもコラッツ予想の操作は
という単純なものですが、2進数で表記すれば「2で何回割れるのか?」が一目瞭然、ということです。
110100
2で割ると
11010
2で割ると
1101
になります。2で2回割れます。
さらに、「3倍して1を足す」という操作も2進数なら直感的に分かりやすくなります。
3=2+1なので、ある数を3倍するという操作を2進法で表記すると、「位が1つあがった数をもとの数に足しこむ」という単純な動作になります。どういうことかと言うと
1101
+11010
=100111
が3倍の操作です。コラッツ予想ではこれに1を足すわけですから、
100111
+ 1
101000
となり、またこの数を構成する最小の2^kから何回2で割るかが一目瞭然、というわけです。
これが2進法で表記する利点です。
・2で割るのをやめると何が見えてくるか?
いよいよこのブログの本題です。
この操作を何度かやっていて、「2で割る動作をやめてもコラッツ予想は成立するのではないか?」という風に思いついたので、成立するようにやってみました。
つまり、ある数を以下のように2進数で表記します
K(a)2^a + K(b)2^b + K(c)2^c + …. + K(z)2^z
(K(a)~K(z)=0,1)
2で割りきれるまで割るということは、この中から最小となる2^kで全体を割るのと同じことです。
それをやめつつ、コラッツ予想と矛盾することなく操作を続けるにはどうするか。
以下のような変形コラッツ予想を考えました。
つまり、Xを2^kで割ってから、3倍して1を足す(x/2^k)×3+1のですから、Xを3倍して2^kを足してやって、あとで2^kで割っても同じじゃないか{(x)×3+2^k}/2^kということです。
もっというと2進数で表記すれば「別に割らなくても分かる」じゃないか、ということです。
・本当に2の乗数(100…000)に収束するのか?
変形コラッツ予想をしばらく動かしていると、「+ 2^k」の操作のあと、次の「+ 2^k'」は絶対に前の値より大きくなるはずです。
当然といえば当然です。「+ 2^k」する相手が「2^k」を最小の構成要素として持っているので、足して出来る数は2^(k+1)以下の構成要素を持たないからです。
その後、3倍するという操作でも、「+ 2^k'」するという操作でも、2^(k+1)以下の数にはまったく影響をあたえません。
また前回、3X+1のかわりに、1X+1ならコラッツ予想が成立することを証明しましたが、これにも同様の変形操作をためしてみたところ、当然ながら最終的に2の累乗に収束していました。
二進法で変化をよく見ると、1X+1なので、掛け算のパートでは数はまったく変化しません。
ですが、「+ 2^k」するたびに一番下の位からどんどん1が0になってゆく変化のみ起きます。もはやどんな数でも自明に100…000に収束すると言って差し支えないでしょう。
これから考えると、3X+1でなくとも、1と0の割合によって収束するかどうかを判別できる可能性があります。
いままで私は、この0をズバッとぜんぶ削除して、完全に2で割って何かを論じようとしていました。
けれど、この0を残してみると、もっと根本的な問題があるような気がします。
「2の乗数(100…000)に収束する」ということは、言い換えると「この計算を繰り返していくと、2進数表記の1がどんどん減って、最終的にただ1個に収束する」ということです。
つまり、変形コラッツ予想の操作を繰り返しながら、0と1の割合をじっと観察していれば、どんどん1が減って0が増えていくはずです。
かいつまんで言うと、
「何回も3倍する=3の累乗にそもそも0が増えて1が減る傾向があるのが原因じゃないのか?」
というところまで分かったよ、という話です。
(6月5日追記:3の累乗は(2+1)^nの形になるので、因数分解すると2^n+Cb2^(n-1)+・・・+Cz2+1・・・①の形になり、nが無限に大きくなるとどんどん2^nに近づいていきます。
さらに、2進法にしたときの構成要素である最低数の2^k(k=0含む)を加えるため、①は式の右の方からどんどん消えていくことになります。たぶんこれが原理ですが、それが全部だとすると5も2^2k+1なので2の累乗に収束しそうな気がします。実は5X+1は別記しますが別の収束点があります。どうしてなのか? を今後考えていきたいです)
ただ、その詳細なメカニズムがまだ分かっていないです。
以下は、自分の所感ですが、いちおう書いておきます。
ある2進数を0と1の数字の塊として考えます。
1を0で分割されるまでの連続回数でとらえると、
1が単独である場合、3倍すると
1
+1
=11
となり、1の数が1個増える。
しかし、1が連続である場合、3倍すると
111・・・111
+111・・・111
=10111・・1101
となり、1の数は同じだが、0の数が2個増える。
また、「1が連続である場合、その直下の位から1が繰り上がってきたとき、1の連続回数ぶん0が増え、1が減る」。
111・・・1111
+ 1
=1000・・・0000
1.3倍して1が増えるのは、0に挟まれた単独の1がある場合のみ。そのとき連続の1になる。
2.しかし、連続した1がある場合は1の数は増えず、0が2個増える。
3.おまけに連続した1は下からの繰り上がりがあると、いきなり1個に減り、そのぶんだけ0は爆発的に増える。
これらの要素があわさって、2進法表記の3の累乗は0の割合が増え、1の割合が減るのだと思われます。
実際に、プログラムを組んでやってみたのですが、(Excellだと10進数→2進数変換関数が数桁ぶんしか対応していないので、いちからVBAで作らないといけなくてちょっとしんどい)
だいたい3の11乗くらいが1のピークで
1対0=13:5(個)
と圧倒的優位だったのが、3の12乗で
1対0=10:10(個)
以降は1が優勢になる場面はみられず、25乗で
1対0=10:30(個)
になっていました。
(Excelでは30乗でオーバーフローした)
・結論と今後の課題
今回分かったことはここまでです。あとはネットの海に投げて、個人的に楽しもうと思います。
原理的には、コラッツ予想とは1を足す操作(繰り上がり)によって、2進法の最小の位の1が常に繰り上がり続けているため、n倍する操作によって1の集合が減る傾向にあるか、あるいは数がまったく変化しないような場合に、どんどん上の位へと圧縮される、というのが収束の原理になると思います。
ところで、『5X+1は13に収束するループがあります』。
この収束ループがなんで生まれるのか、3の累乗の0対1の割合はどこまで増加するのか、今後はこういった事を調べていきたいと思います。
ここまでお付き合いいただいて、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?