YoutubeでTEDを観ていたときに再生している動画の下に表示されるおすすめ(?)に表示されていた、”3x+1”というサムネイル画像が気になって再生してみると面白かったので少し調べてみた。(元々観ていたTim Urbanの話もとても面白いので別途投稿)
Collatz Conjecture(コラッツ予想)
Lothar Collatz(ローター・コラッツ、1910-1990)さんというドイツの数学者が提起した未解決問題の一つ。小学生でも出来る様な簡単な計算ながら証明困難な問題らしく、Paul Erdős(ポール・エルデシュ、1913-1996)というコラッツ予想を研究してた数学者は「数学はまだこの種の問題に対する用意ができていない」と発言したとか。
どんな予想かというと;
任意の正の数に対して以下のルールに沿って計算を繰り返すとき、どんな値から始めても最終的に必ず1になる(1→4→2→1→...の繰り返しになる)、という予想。
- 奇数ならば3倍して1を足す (3x + 1)
- 偶数ならば2で割る (x / 2)
The Simplest Math Problem No One Can Solve - Collatz Conjecture
動画を観たりWebサイトを読んだりして何となく内容は掴めたつもりになれたものの、いまいち凄さが伝わってこなかった。折角なので、Pythonを使って実際に計算したりグラフ化したりしてみる。Raspberry Pi以外でPythonを久しぶりに使うので、Plotの使い方なども調べなおしながら進めた。
作成したプログラム: 指定した初期値から1になるまで繰り返し計算を実行し、計算毎に値をリスト化するとともに計算回数をカウント。
出力:
[1001, 3004, 1502, 751, 2254, 1127, 3382, 1691, 5074, 2537, 7612, 3806, 1903, 5710, 2855, 8566, 4283, 12850, 6425, 19276, 9638, 4819, 14458, 7229, 21688, 10844, 5422, 2711, 8134, 4067, 12202, 6101, 18304, 9152, 4576, 2288, 1144, 572, 286, 143, 430, 215, 646, 323, 970, 485, 1456, 728, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
Number of calc: 142