iCollatzの提案 #3.9 本シリーズの趣旨「コラッツ予想の完全証明」

プログラミング
スポンサーリンク
スポンサーリンク

本シリーズの趣旨は「コラッツ予想の完全証明」です。
iCollatzを利用して得た知見から、それを解説するものです。
詳細を解説する前に今後の概要をざっくりと公開してしまいます。

都合により、本件に割ける時間が少なくなる予定なので投稿ペースが落ちると思います。
既に公開している式や数列の例とツールから読み取ることが可能と考えているので、概要をざっくりと公開しちゃいます。

iCollatzの式

詳細は、「iCollatzの式」を参照ください。

今後予定の概要

下記に今後予定している投稿内容の概要を示します。
言い回しなどは変更となる場合があります。

iCollatzの提案 #4 判明していることその2

「すべての数列が1に到達するk=rの世界線」

iCollatzの式で、k=r つまり、「r=2,k=2」、「r=3,k=3」、「r=10,k=10」(数列の例は各リンク先で確認ください)などの世界線の話です。

要は、MNZ(r=2のとき奇数)の式 f(n)=h+m の h=kn は n のすべての桁を k(=r)倍 するわけですが、その増加が小さく、r進数で見た時 +m による桁上がりが発生、またそれが連鎖することにより、MNZの式を無限に繰り返すとrのべき乗に収束すると言う話です。

結果的に、MZR(r=2のとき偶数)の式 f(n)=n/r で、rのべき乗の下位の桁の’0’が削られてn=1に到達すると言うものです。

iCollatzの式およびコラッツ予想(iCollatzでr=2,k=3のとき)の式は、開始時nの桁位置を固定することでn(n’)に着目すると、MNZ(r=2のときは奇数)の式の無限ループになることをiCollatz[矯正:Correct]の式およびコラッツ予想[KAI]の提案で示しました。

しかしながら、「無限」と言う言葉を便利に使っていたことは、否めません。

コラッツ予想のからくりのまとめ」にて次を記述しています。

  • n/2が2進数では右に1ビットシフトとなる。
  • 3n+1を無限に繰り返すと2のべき乗に収束する。
  • この2つの組み合わせで結果的にn=1に到達する。

「3n+1を無限に繰り返すと、’3n’の方が先に無限に到達して、’+1’の部分の方が後で無限に到達するのでは?」と考えた方もいたと思います。
しかし、n=9…9(9を1000桁)で開始しても’1’に到達する例を出されると、反論するだけのエビデンスも無く、ご指摘いただけなかったのではないかと思います。

この説明不足だった部分をプログラミングのテクニックを応用しながら解説する予定です。
単に説明不足だった部分を補足するだけで、上記の3行が変わるわけではありません。

なお、本投稿シリーズのカテゴリーが「プログラミング」となっているのは、「プログラミングのテクニックを応用する」ことと「ツールの公開」が理由の1つです。

(2023/07/05 16:55追記)
r=2,k=2」、「r=3,k=3」、「r=10,k=10」のr=2は発端が「コラッツ予想の式」だからですが、r=3やr=10を採用したのは、rは「奇数」である3進数でも構わない、10進数は私たちが日ごろ利用しているものですし「素数」である必要もないことを示すためです。
ちなみに、r=1000とかでも可能ですが、1000進数と言われても逆に解らなくなるので例として扱っていません。

iCollatzの提案 #5 判明していることその3

「すべての数列が増大傾向になるk=r2の世界線」

iCollatzの式で、k=r2 つまり、「r=2,k=4」、「r=3,k=9」、「r=10,k=100」(数列の例は各リンク先で確認ください)などの世界線の話です。

要は、MNZ(r=2のとき奇数)の式 f(n)=h+m で h=kn は n のすべての桁を k(=r2)倍 しますが、その増加が大きく、r進数で見た時 +m による桁上がりが発生しないことによりMZR(r=2のとき偶数)の式 f(n)=n/r での縮小が少なく、無限に繰り返すと数列が無限に増大すると言う話です。

この説明不足だった部分を#4と同様にプログラミングのテクニックを応用しながら解説する予定です。

#4と合わせて、iCollatzの式のkに、「k>r かつ k<r2」の条件が付いているのはこのためです。

ただし、検証不足もあり、「r=3,k=6」や「r=10,k=15」などの世界線で「k>3 かつ k<9」や「k>10 かつ k<100」などの範囲内でありなが、増大傾向になるものがあります。

しかしながら、本投稿シリーズの趣旨が「コラッツ予想の完全証明」であるため、r=2の世界線は「k>2 かつ k<4」で有効な正の整数は「k=3」であり、つまり「コラッツ予想(r=2,k=3)」の世界線のみに注力して検証すれば良く、上記の範囲内で増大傾向となる世界線の検証は保留としています。

「コラッツ予想」の検証が最優先で、「iCollatz」の完成度は後回しとしているため、iCollatzの式の初公開時に Version 0.5 とした最大の理由です。

iCollatzの提案 #6 判明していることその4

「1を含まないループ」について

iCollatzの式で、「r=2,k=5」、「r=3,k=4」、「r=10,k=11」(数列の例は各リンク先で確認ください)などの世界線では、「1を含まないループ」の数列が発生します。

これら「1を含まないループ」は、n=1~100程度の早い段階で発生しています。
MNZ(r=2のとき奇数)の式 f(n)=h+m で、h=kn は n のすべての桁を k倍 するため、ループには間接的にしか影響しないと言うこと、+m が下位の桁から作用し、上位の桁には桁上がりでしか作用しないこと、m=1~r までの値(m=0のときはMZRの式)であるため、ループの直接的要因の多くは +m の部分にあることが分かっており、これが n=1~100 程度の早い段階で発生する根拠だと考えています。

この「1を含まないループ」について、プログラミングのテクニックを応用しながら解説する予定です。

iCollatzの提案 #7 判明していることその5

以上#4,#5,#6のiCollatzから得た知見を元に、コラッツ予想(iCollatzのr=2,k=3の世界線)を検証し、完全証明できた(と私は思っている)ことを解説する予定です。

iCollatzの提案 #8 演算ツールiCCBEのソースコードの解説

  • 前回ツールは、「手続き型プログラミング」方式で記述しましたが、今回のツールiCCBEは「OOP(Object Oriented Programming:オブジェクト指向プログラミング)」方式で記述しました。
    細かい機能には違いがありますが、大筋で同じプログラムを用いることで「手続き型プログラミング」方式と「OOP」方式の違いを解説する予定です。
  • Javascriptはシングルスレッド実行です。
    このため、前回ツールで9…9(9の1,000桁)を実行すると15分以上フリーズしたように見えましたが、今回それをどう解決したのかを解説する予定です。
    前回ツールでは、スパコンで確認されている10進数約20桁より遥かに大きい9…9(9の100桁)を実行しても15秒ぐらいで終わるので、改修することなくリリースしました。
  • 同様に、前回ツールで9…9(9の1,000桁)を実行するとFirefoxは完走するのに、MS Edgeは「Out of Memory」のメモリ不足(PCには32GB積んであるがプロセスの利用量が1GBを超えたあたりでエラーとなる)となっていました。
    これをどう解決したのかを解説する予定です。
  • iCCBEでは9…9(9の1,000桁)などを問題なく実行できるツールです。
    それを多くの人が使っているWebブラウザ上で動作させることが可能です。
    このような非常に大きい値は、フォールトアタック(力技による総当たりチェック)は意味がありません(時間的に無理)。
    つまり「コラッツ予想」の証明には知識とそれを組み合わせた知恵が必要なことを示すのが隠されたメッセージでした。
    非常に大きい数値での検証は、知識と知恵で考えた論理の延長線上にあることが確認できればそれで良いのです。
    フォールトアタックできたとしても、それは「確認」しただけで、「証明」したことにはなりません。
    今できる最良で最高の方法を突き詰める「究極のプログラミング」、つまり「プログラミングの深淵を求めて」の一例がiCCBEです。(2023/07/05 16:20 「究極のプログラミング」を追記)

最後に

コラッツ予想の式」の特徴の要をよく理解しているからこそ「iCollatzの式」を作れたのだと思っています。
しかし、その特徴の要を今までうまく解説することが出来てなかったと思います。

本投稿シリーズにて、それがうまく解説できていれば(できれば)良いのですが・・・

関連投稿

ご意見、ご要望、不具合などのご連絡

ご意見、ご要望、不具合などのご連絡は次からお願いします。

  • コメント
    本投稿へ下部の コメントを書き込む からご連絡ください。
    コメントは承認方式となっており、当方が承認しないと公開表示されません。
    公開表示を希望されない方はその旨コメントに記述ください。
  • Twitter
    ご連絡は @dratech2020 https://twitter.com/dratech2020 の該当ツイートに返信するか、ハッシュタグ「#プログラミングの深淵を求めて」を付けてツイートしてください。 (すぐに気が付かない場合がありますので、ご了承ください)

コメント

タイトルとURLをコピーしました