コラッツ予想と3n+1の未解決世界
偶数は半分、奇数は3倍+1。世界中の大数学者を悩ませ続ける魔の数列
- 1
- 正の整数 n に対し、偶数なら n/2、奇数なら 3n+1 を繰り返す写像をコラッツ操作と呼ぶ。
- 2
- 初期値がどれほど小さくても(例: 27)、途中で最大 9,232 まで大爆発したあと、111ステップかけて必ず 1 に到達する。
- 3
- 現在 以上の膨大な範囲で検証されているが、反例(無限大に発散するか、1以外の閉ループに陥る数)は1つも見つかっていない。
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
1937年にローター・コラッツが提示した「どんな正の整数から始めても必ず1に到達する」という予想。ルールは小学生でも理解できるほど極めて単純でありながら、現代のスーパーコンピュータと世界的数学者たち(ポール・エルデシュいわく「現代の数学はまだこの問題に立ち向かう準備ができていない」)をもっても現在まで未解決の最高峰の数学ロマンです。
身につく武器・思考力
単純な規則から予測不能な複雑性(決定論的カオス)が生まれる現象を直感し、計算機科学における「停止性問題」やアルゴリズムのループ検出センスを養えます。
実社会・ITでの活躍現場
- •カオス力学系や非線形ダイナミクスの軌道安定性シミュレーション
- •プログラムの停止性検証(Halting Problem)と最悪計算量評価
- •暗号論的擬似乱数生成(PRNG)の非線形性検証
Layer 1 — 直感・シミュレーター
好きな自然数を入力するか、プリセットボタン(7、27、97など)を押してください。グラフがジェットコースターのように乱高下しながら、最終的に重力に引かれるように「4 → 2 → 1」のループに吸い込まれる様子を対数スケールで観察できます。
奇数は 3倍+1、偶数は 2で割る。どんな正の整数も必ず「1」へ落ちるのか?
初期値「5」からコラッツ操作を始めたとき、1に到達するまでの数列の推移として正しいものはどれでしょうか?
Layer 2 — 定義・受験・証明
定義
自然数 に対して定義される関数 に対し、任意の について反復合成 となる自然数 が必ず存在するという予想を**コラッツ予想(Collatz Conjecture)**と呼びます。
公式・数理モデル
証明・導出
現在も未解決です。2019年に数学のノーベル賞と称されるフィールズ賞受賞者テレンス・タオ(Terence Tao)教授が、「ほとんどすべてのコラッツ軌道は、任意の関数で指定される極めて小さな値まで下がる」ことを偏微分方程式と確率論の手法を駆使して準証明(弱コラッツ予想の金字塔)を打ち立てましたが、完全な証明には依然として至っていません。
押さえておきたいポイント
- 操作のルールは「偶数なら半分、奇数なら3倍+1」のみ
- 初期値 27 は最大 9232 まで跳ね上がり 111 ステップ要する有名例
- 1 に到達すると 1 → 4 → 2 → 1 のサイクルに永久固定される
- テレンス・タオによる対数密度に関する部分的解決が現代の最先端
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
コラッツ数列ジェネレーターとステップ数ベンチマーク
指定した数値から1に到達するまでの軌道を追跡し、最大ピーク値とステップ数を計測するTypeScriptコードです。巨大数(BigInt)にも対応可能です。
1export function generateCollatzSequence(start: number): {2 sequence: number[];3 steps: number;4 maxValue: number;5} {6 const sequence: number[] = [start];7 let current = start;89 while (current !== 1) {10 if (current % 2 === 0) {11 current = current / 2;12 } else {13 current = 3 * current + 1;14 }15 sequence.push(current);16 }1718 return {19 sequence,20 steps: sequence.length - 1,21 maxValue: Math.max(...sequence),22 };23}2425// 実行例:26// const res = generateCollatzSequence(27);27// console.log(`ステップ数: ${res.steps}, 最大値: ${res.maxValue}`);28// // 出力: ステップ数: 111, 最大値: 9232
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元