“任何数字最后都会变成1”是真的吗?——玩转考拉兹猜想
大家好!我是kenji。
很突然,但当你听到“无论什么数字最终都会变成1的规则”时, 是不是觉得有点不可思议?
例如19,或者87,甚至1000000也是如此。 只要按照特定的规则去处理数字,不知为何最后都会收敛于“1”。
像做梦一样的故事,就是 考拉兹猜想(Collatz Conjecture) 。
首先,什么是考拉兹猜想?
首先介绍一下规则。
起点:选择任意一个 正整数
操作:
- 如果是偶数 → 则减半(n → n / 2)
- 如果是奇数 → 则乘以3再加1(n → 3n + 1)
一直重复这个过程, 任何数字最终都会到达1 ,这就是这个猜想的内容。
例如,从 6 开始的话:
| |
确实变成了“1”。欢迎回来!
用代码试试看:Python中的考拉兹
好了,这种时候用代码来测试是最快的! 让我们用Python输出一下“考拉兹数列”。
| |
运行结果:
| |
完美地到达了1。 虽然绕了不少弯路,但最后还是稳稳地冲过了终点!
顺便说一下,即使从 27 开始,也会以同样的方式到达1。
| |
运行结果:
| |
竟然花去了111个步骤!
而且,中间还有膨胀到9000以上的阶段。 真是绕了一个超级大的圈子才到达终点的情况啊。
那么,这到底有什么了不起的呢?
这个猜想之所以令人惊叹,是因为:
虽然还没有被证明,但似乎无论用什么数字,最后都会变成1
就是这一点。
诶?那1万亿、1京(兆的上一级)呢……?
能想到这点的人很敏锐。 实际上,人们已经使用计算机验证到了大约“2的68次方”, 全部都到达了1 。真是难以置信……
但是, “全部都会如此”并没有在理论上被证明 。 这就是数学世界中所说的“未解决问题”。
为什么会变成“1”?来自概率论的方法(数学背景)
任何数字最终都会变成1,这听起来像魔法一样,但从 概率的角度 来看,确实存在“嗯,好像是会那样”的合理理由。
对奇数 $n$ 执行 3n + 1,结果一定会是 偶数 。
因此,在下一个步骤中,它必定会被除以2,实际上就变成了 $\frac{3n + 1}{2} \approx 1.5n$。
然后,这个数字再次成为偶数的概率是 $\frac{1}{2}$。 如果是偶数,它会再次被除以2,变成 $0.75n$,比原来的数还要小。
虽然在数学上并不严谨,但从奇数跳到下一个奇数时,其“倍率”的几何平均已知 大约是 $\frac{3}{4}$ 倍 (启发式概率模型)。 也就是说, 平均而言,数值呈现出缩小的趋势 ,因此最终会被吸入并落到1。
稍微改变一下规则会怎样?(与其他猜想的比较)
“那要是改成乘以5而不是乘以3呢?”大家可能会这么想。 实际上,这被称为 $5n + 1$ 问题 ,在这种情况下,并不是所有的数都会收敛于1。
在 $5n + 1$ 的情况下,已经确认存在多个不同的循环(loop),并且也有人指出可能存在无限变大(发散)的数。 此外,在 $3n - 1$ 问题 的情况下,除了“$1 \to 2 \to 1$”的循环之外,还存在像“$5 \to 14 \to 7 \to 20 \to 10 \to 5$”这样的其他循环。
由此可见,考拉兹猜想中“全部收敛于1(即 $4 \to 2 \to 1$ 的循环)”的性质,是建立在多么精妙的平衡之上的。
人类的到达点①:计算机穷举的极限
目前,世界各地的数学家和计算机科学爱好者们,正在利用分布式计算(汇集全球个人电脑计算能力的项目)和GPU,不断地计算考拉兹猜想。
截至2020年,计算机已经确认,对于高达 $2^{68}$(约29京5000兆) 以下的所有初始值,考拉兹猜想都是正确的(最终变为1)。
然而,在数学的世界里,不能说“因为已经确认到29京,所以全部都是正确的”。因为面对无限延伸的数字之海,$2^{68}$ 也只不过是“最初的一滴水”而已。
人类的到达点②:不可判定性与陶哲轩的突破
面对“为什么谁也无法证明?”的疑问,英国天才数学家约翰·康威(John Conway)于1972年证明了,稍微扩展一下考拉兹猜想的问题是 “不可判定的(Turing complete)” 。 这是一个涉及计算机科学根本的恐怖事实:根据某些规则,“原理上不存在能够判定是否会到达1的算法”。考拉兹猜想本身,甚至有可能是现代数学框架内无法证明的命题。
然而,在2019年,终于出现了重大突破。 现代最顶尖的天才数学家之一 **陶哲轩(Terence Tao) ** ,运用偏微分方程和概率论的方法,证明了“(虽然不能严格说是全部)对于几乎所有的初始值,考拉兹数列最终都会到达一个比原数小得多的值 ”。
虽然这不是“全部都会变成1”的完整证明,但作为 人类最接近考拉兹猜想真理的历史性到达点 ,在世界数学界引起了轰动。
考拉兹先生是谁?
读到这里,你可能会想“所以考拉兹到底是谁?”。 让我来好好介绍一下!
- 姓名: 洛塔尔·考拉兹(Lothar Collatz)
- 国籍:德国
- 生卒年:1910年〜1990年
- 头衔:数学家(活跃于泛函分析和数论领域)
他在1937年提出了这个猜想, 在那之后的80多年里, 谁也没能证明,也没能反证 。
顺便说一句,这个问题虽然极其简单但却非常深奥, 据说连保罗·埃尔德什(Paul Erdős,超级著名的数学家)都曾这样说过:
“数学还没有成熟到可以解决考拉兹猜想的地步。”
也就是说,人类的数学还没能追上这个谜团的假说……
不需要“复杂的公式”
考拉兹猜想的优点在于, 任何人都可以玩 。
只要有纸和笔就能算。 用Python写段代码,就能自动测试。 尽管如此, 最前沿的数学家们却在认真地挑战它 。
这难道不让人感到兴奋吗?
附赠:一次性测试的代码
我也附上了一次性测试各种数字的代码哦。
| |
这可以一口气输出“1~20”的考拉兹数列。
结论:这个世界,果然不可思议
综上所述,这就是考拉兹猜想。
- 明明超级简单
- 却谁也无法证明
- 在数学界是个大难题
它就像是一个不可思议的集合体。
即使是编程初学者也能尝试,所以请大家务必玩玩看哦〜!
推荐链接(面向感兴趣的人)
- 维基百科:考拉兹猜想
- Terence Tao 论文(英文)
- 试着做一个Python的可视化版本也很有趣哦!(如果大家有需求我就做一个)
如果大家还想了解更多这类“不可思议系数学×编程”的题材, 请随时向我提出“还想知道更多”的请求。 之后,我还会介绍黎曼猜想、素数的故事等各种各样的内容!
📮结束!
