コラッツ予想
予想自体の説明は省くが2進数で考えればいいんじゃないかと思った。
そこでまず予想が成り立つなら
最終変化は16->8->4->2->1のルートにのることになる
この問題は演算結果が2のN乗(Nは自然数)になることと同じことである
次に2進数で考える
偶数なら2で割るので一桁小さくなる
下4ビットの以下の変化を考える
/2までを1セットとする
奇数であれば1が連続するパターンは
01
011
0111
1111
これだけ
01->10
011->101->1000
0111->1011->10001->11010->10100
わかりやすく上のけたをつけると
101->100
1001->1110
それぞれ
1および111
となり下のビット0をすべて右シフトすれば結果もとの数より小さくなる
同様に
1011->1001
10011->11101->101100
結果1011
0111,1111で同じで
下位の連続する1のビットは1セットごとに1つずつ少なくなっていく
n個の連続する下位ビットと、その上位に0の桁があるとすると
一回ごとに少なくとも1けたずつ連続する1が短くなっていく
またその上の0は連続する桁と1桁とを繰り返す
(0がなくなることはない)
数字が小さくなり続け、下位の連続する1が短くなり続けるため最終的には1になる
数学家ではないので完全証明はかけないが、2進数でのビットの動きを追えば解決に至る気がする。
追記:
1の連続が消えるまでは数字は膨らむがそのふくらみは1操作で1.5倍、連続が消滅するときには下2ビットが*0となって1/2になる。そのため0と1の出現率が同じなら値は元の数より小さくなるときが現れる。10001のように0が続くとその分*0が発生し、0の連続は2つずつ減っていく。
(このあたりはパターンを調べれば解決すると思うが数学屋でないので説明はできないが)
本編の説明は下位一ブロック分ですが、これを順次行なう。
連続ビットが0になった後、次の上位の連続ビットが0になるまで、同じことを繰り返す。そうすれば最上位ビットが1つになるまで、つまり結果が2のN乗になるまでに集約される