最近、日本のIT企業「株式会社音圧爆上げくん」が数学の未解決問題である「コラッツ予想」の解決に対して、賞金1億2000万円を懸けたというニュースが話題になりました(詳細のPDFファイルはこちら)。今回はこのコラッツ予想について紹介したいと思います。
コラッツ予想とは?
コラッツ予想そのものは小学生でも理解できる簡単なものです。
コラッツ予想
どんな正の整数
-
が偶数の場合、 を で割る が奇数の場合、 に をかけて を足す
という操作を繰り返すと、いずれ必ず
具体的に考えてみましょう。例えば
という数列が得られます。
実はこの「コラッツ予想」、ドイツの数学者ローター・コラッツが問題を提示したのは1937年と今から80年以上も前なのですが、現在でも完全には証明できていない「未解決問題」なのです。「コラッツ予想」は「コラッツ問題」とも呼ばれ、このような数列の作り方から「3n+1問題」と呼ばれることもあります。
※今回は深く立ち入りませんが、「3n+1」の部分を改変して「3n-1」や「3n+3」、「n+1」などにしても面白い考察ができます。
※この問題に取り組んだ研究者の名を冠して「角谷問題」と呼ばれることもあります。
この操作によって得られる数列は「コラッツ数列」と呼ばれ、盛んに研究されています。因みに、現在は
コラッツ数列を求める
・2→1 (2項)
・3→10→5→16→8→4→2→1 (8項)
・4→2→1 (3項)
・5→16→8→4→2→1 (6項)
・6→3→10→5→16→8→4→2→1 (9項)
・7→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1 (17項)
・8→4→2→1 (4項)
・9→28→14→7→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1 (20項)
・10→5→16→8→4→2→1 (7項)
・11→34→17→52→26→13→40→20→10→5→16→8→4→2→1 (15項)
・12→6→3→10→5→16→8→4→2→1 (10項)
・13→40→20→10→5→16→8→4→2→1 (10項)
・14→7→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1 (18項)
・15→46→23→70→35→106→53→160→80→40→20→10→5→16→8→4→2→1 (18項)
・16→8→4→2→1 (5項)
・17→52→26→13→40→20→10→5→16→8→4→2→1 (13項)
・18→9→28→14→7→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1 (21項)
・19→58→29→88→44→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1 (21項)
・20→10→5→16→8→4→2→1 (8項)
どの整数
原理的には手計算で求めることができますが、それなりに骨が折れます。ここから先はコンピュータ君にお任せしてしまいましょう。
「n=1000までのコラッツ数列一覧」
(※データ量が大きいので読み込みに時間が掛かるかもしれません)
» コード例
def Collatz(n): length = 1; numlist = [] while n != 1: # 1になるまで繰り返す numlist.append(n) if n & 1: # ビット積 n = 3 * n + 1 else: n = n // 2 length += 1 numlist.append(n) return length, numlist maxnum = 101 length_list = [] for i in range(2, maxnum): length, numlist = Collatz(i) print(length, numlist)
» 閉じる
コラッツ数列の長さと最大値
ここでコラッツ数列の長さ(数列の項数)に注目し、何か規則性がないか探ってみます。以下に
図1.コラッツ数列の長さ(100まで)
何となく2層に分かれているような印象を受けますね。
図2.コラッツ数列の長さ(1000まで)
よりはっきりと層に分かれていることは分かりますが、綺麗に色分けできていません。残念ながらこれはヒントにならなさそうです。
もう少し先まで調べてみましょう。
図3.コラッツ数列の長さ(10000まで)
続いてコラッツ数列の最大値について調べてみます。以下に
図4.コラッツ数列の最大値(100まで)
点列が完全に2層に分かれていますね。多くの
この傾向は
図5.コラッツ数列の最大値(100000まで)
これは
縦軸の範囲を狭めると、もう少し綺麗なプロットになります。以下は
図6.コラッツ数列の最大値(10000まで)
直線が浮かび上がって見えます。例えば、横軸に平行な最も濃い直線は高さ
» コード例
import matplotlib.pyplot as plt maxnum = 10001 num_list = [i for i in range(2,maxnum)] maxval_list = [] for i in range(2, maxnum): length, tmp_list = Collatz(i) maxval_list.append(max(tmp_list)) ax = plt.figure(figsize=(4,4), dpi=100).add_subplot(111) ax.scatter(num_list, maxval_list, c="b", s=5.0, alpha=0.2) plt.ylim(0, 10**5) # 縦軸の上限を指定 plt.show()
» 閉じる
こうしたグラフが得られるのはコラッツ数列の特徴ですが、これらから具体的な規則性を導くのは難しそうです。
コラッツ数列のグラフ
ある一つの
図7.コラッツ数列の推移
(
これは
図8.コラッツ数列の推移
(
図9.コラッツ数列の推移
(
コラッツ数列の最大値が
図10.コラッツ数列の推移
(
ついでに
図11.コラッツ数列の推移
(
» コード例
※下のコードで “maxnum” を10000以上にするとグラフの描画にそこそこ時間が掛かります。
from matplotlib import pyplot as plt from matplotlib import colors from matplotlib.cm import ScalarMappable def Collatz(n): length = 1; numlist = [] while n != 1: # 1になるまで繰り返す numlist.append(n) if n & 1: # ビット積 n = 3 * n + 1 else: n = n // 2 length += 1 numlist.append(n) return length, numlist maxnum = 101 fig = plt.figure(figsize=(4,4), dpi=100) ax = fig.add_subplot(111) cn = colors.Normalize(0, maxnum) # 色調の規格化 for i in range(2,maxnum): length, numlist = Collatz(i) num_list = [i for i in range(0,length)] ax.plot(num_list, numlist, linewidth=0.3, alpha=1, color=plt.cm.viridis(cn(i))) mappable = ScalarMappable(cmap='viridis', norm=cn) #カラーバー用 fig.colorbar(mappable) plt.show()
» 閉じる
入試にも登場するコラッツ予想
コラッツ予想は未解決問題ですが、実は入試に時々登場しています。例えば、2011年度のセンター試験数学Ⅱ・B第6問では題材としてコラッツ予想が扱われています。当時の受験生はまさか未解決問題が背景にあるとは思わなかったでしょう(勿論、問題自体は解答可能です)。(1)までの問題文を抜粋します。
(出典:2011年度センター試験数学Ⅱ・B第6問)
数列を求める操作自体は簡単なので、ここまで読み進めて来た方にとっては簡単だと思います。数列はそれぞれ
6→3→10→5→16→8→4→2→1
11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
となるので、答えは順に8, 14です。
因みに、鳥取大学の2005年医学部の数学でコラッツ予想に類似した数字の操作を題材とした出題があります。こちらは『奇数なら
コラッツ問題は設定が分かりやすいため、高校入試でも盛んに取り上げられています。最近だと、愛知県の公立高校入試(2020年,全日制課程B)、都立西高校(2020年, 自校作成問題)などで出題例があります。
(出典:2020年 愛知県公立高校 全日制B)
» 答え合わせ
7回の計算で1となる自然数は3, 20, 21, 128の4個です。1から逆に辿っていくと答えが絞り込めます。
因みに、
2回:4
3回:8
4回:16
5回:5, 32
6回:10, 64
7回:3, 20, 21, 128
8回:6, 40, 42, 256
9回:12, 13, 80, 84, 85, 512
10回:24, 26, 160, 168, 170, 1024
11回:48, 52, 53, 320, 336, 340, 341, 2048
12回:17, 96, 104, 106, 113, 640, 672, 680, 682, 4096
13回:34, 35, 192, 208, 212, 213, 226, 227, 1280, 1344, 1360, 1364, 1365, 8192
14回:11, 68, 69, 70, 75, 384, 416, 424, 426, 452, 453, 454, 2560, 2688, 2720, 2728, 2730, 16384
15回:22, 23, 136, 138, 140, 141, 150, 151, 768, 832, 848, 852, 853, 904, 906, 908, 909, 5120, 5376, 5440, 5456, 5460, 5461, 32768
16回:7, 44, 45, 46, 272, 276, 277, 280, 282, 300, 301, 302, 1536, 1664, 1696, 1704, 1706, 1808, 1812, 1813, 1816, 1818, 10240, 10752, 10880, 10912, 10920, 10922, 65536
17回:14, 15, 88, 90, 92, 93, 544, 552, 554, 560, 564, 565, 600, 602, 604, 605, 3072, 3328, 3392, 3408, 3412, 3413, 3616, 3624, 3626, 3632, 3636, 3637, 20480, 21504, 21760, 21824, 21840, 21844, 21845, 131072
18回:28, 29, 30, 176, 180, 181, 184, 186, 201, 1088, 1104, 1108, 1109, 1120, 1128, 1130, 1137, 1200, 1204, 1205, 1208, 1210, 6144, 6656, 6784, 6816, 6824, 6826, 7232, 7248, 7252, 7253, 7264, 7272, 7274, 7281, 40960, 43008, 43520, 43648, 43680, 43688, 43690, 262144
19回:9, 56, 58, 60, 61, 352, 360, 362, 368, 369, 372, 373, 401, 402, 403, 2176, 2208, 2216, 2218, 2240, 2256, 2260, 2261, 2274, 2275, 2400, 2408, 2410, 2416, 2417, 2420, 2421, 12288, 13312, 13568, 13632, 13648, 13652, 13653, 14464, 14496, 14504, 14506, 14528, 14544, 14548, 14549, 14562, 14563, 81920, 86016, 87040, 87296, 87360, 87376, 87380, 87381, 524288
20回:18, 19, 112, 116, 117, 120, 122, 704, 720, 724, 725, 736, 738, 739, 744, 746, 753, 802, 803, 804, 805, 806, 4352, 4416, 4432, 4436, 4437, 4480, 4512, 4520, 4522, 4548, 4549, 4550, 4800, 4816, 4820, 4821, 4832, 4834, 4835, 4840, 4842, 4849, 24576, 26624, 27136, 27264, 27296, 27304, 27306, 28928, 28992, 29008, 29012, 29013, 29056, 29088, 29096, 29098, 29124, 29125, 29126, 163840, 172032, 174080, 174592, 174720, 174752, 174760, 174762, 1048576
» 閉じる
(出典:2020年 都立西高校)
» 答え合わせ
問1は
» 閉じる
他にも出題多数なのでトピックとして押さえておくと、いざという時に慌てずに済むかもしれません。中学受験でも時折登場することがあり、今年(2021年)の慶應義塾中等部の試験では「12回の操作で
ここまで、コラッツ予想について色々と眺めてきましたが、その奥深さはこの程度ではありません。是非、自由研究として取り組んでみて下さい。入試問題として扱いやすい題材であるためか、大学・高校・中学と幅広い層の入試で頻繁に出題されているトピックでもあります。「コラッツ予想」を知らなかったという人はこれを機に覚えておきましょう。
数学の中でも特に数論分野には、内容が分かりやすくてしかも思索に没頭できる良い題材が沢山あります。コラッツ予想もその一つです。「答えを如何に速く導けるか」に重きが置かれる時代にこういった問題にじっくり取り組む(まではいかなくても、少し寄り道する)のは価値のあることだと思います。それが「数学って面白い!」という気付きに変わるともっと良いなあと思います。