微信号:bigdatalab

介绍:宽客俱乐部旗下美国大数据实验室,大数据研究应用.

3 · n + 1 问题

2016-05-10 08:40 大数据实验室

Collatz 猜想也叫做 3 · n + 1 问题。这可能是数学中最为世人所知的未解之谜。它是如此初等,连小学生都能听懂它的内容;但解决它却如此之难,以至于 Paul Erdős 曾说:“或许现在的数学还没准备好去解决这样的问题。”这究竟是一个什么样的问题呢?让我们来看一下 Collatz 猜想的叙述:


任意取一个正整数 n 。如果 n 是奇数,则把 n 变为 3 · n + 1 ;如果 n 是偶数,则把 n 变为 n/2 。不断重复操作,则最终一定会得到 1 。


举个例子,如果 n = 26 ,那么经过下面 10 步之后,它最终变为了 1 :


26 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1


随便取一个其他的自然数,对它进行这一系列的变换,或迟或早,你总会掉到4→2→1这个循环中,或者说,你总会得到1。已经有人对所有小于100*2^50=112589990684262400的自然数进行验算,无一例外。Collatz 猜想说的就是,这个规律对于所有正整数 n 均是如此。


这个问题大约是在二十世纪五十年代被提出来的。在西方它常被称为西拉古斯(Syracuse)猜想,因为据说这个问题首先是在美国的西拉古斯大学被研究的;而在东方,这个问题由将它带到日本的日本数学家角谷静夫的名字命名,被称作角谷猜想。


这个问题看起来是如此简单,以至于无数的数学家都掉进了这个坑里。光从这个问题的众多别名,便能看出这个问题害人不浅: Collatz 猜想又叫做 Ulam 猜想、 Kakutani 问题、 Thwaites 猜想、 Hasse 算法、 Syracuse 问题……研究这个问题的人很多,解决这个问题的人却一个没有。后来,人们干脆把它叫做 3 · n + 1 问题,让哪个数学家也不沾光。


角谷静夫在谈到这个猜想的历史时讲:"一个月里,耶鲁大学的所有人都着力于解决这个问题,毫无结果。同样的事情好象也在芝加哥大学发生了。有人猜想,这个问题是苏联克格勃的阴谋,目的是要阻碍美国数学的发展。"不过我对克格勃有如此远大的数学眼光表示怀疑。这种形式如此简单,解决起来却又如此困难的问题,实在是可遇而不可求。


数学家们已经发表了不少篇严肃的关于3 · n + 1 问题的数论论文,对这个问题进行了各方面的探讨,可是这个问题的本身始终没有被解决,我们还是不知道,"到底是不是总会得到1?"


要是真的有这么一个自然数,对它反复作上面所说的变换,而我们永远也得不到1,那只可能有两种情况:


1)它掉到另一个有别于4→2→1的循环中去了。我们在后面可以看到,要是真存在这种情况,这样一个循环中的数字,和这个循环的长度,都会是非常巨大的;


2)不存在循环。也就是说,每次变换的结果都和以前所得到的所有结果不同。这样我们得到的结果就会越来越大(当然其中也有可能有暂时减小的现象,但是总趋势是所得的结果趋向无穷大)。



图片源自豆瓣


这个问题有多难呢?我们可以从下面的这个例子中略见一斑。虽然从 26 出发只消 10 步就能变成 1 ,但若换一个数,比如 27 ,情况就大不一样了:


27 → 82 → 41 → 124 → 62 → 31 → 94 → 47 → 142 → 71 → 214 → 107 → 322 → 161 → 484 → 242 → 121 → 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


可见,当 n 的值不同时,从 n 变到 1 的路子是很没规律的。


有趣的是,如果我们把 Collatz 猜想中的乘以 3 改为乘以任意一个 3x (其中 x 的值可由你自由选择),那么 Collatz 猜想就是正确的了。下面我们就来证明这一点。


首先我们证明一个引理:任何一个正整数都可以表示成下面这样:


2a1 × 3b1 + 2a2 × 3b2 + 2a3 × 3b3 + … + 2an × 3bn


其中 0 ≤ a1 < a2 < a3 < … < an ,并且 b1 > b2 > b3 > … > bn ≥ 0 。举个例子, 213 = 34 + 22 × 32 + 25 × 3 就是一种合法的表示法。


反证,假设有的数不能用这种方法来表示,那么一定存在一个最小的不能用这种方法来表示的数,不妨把它叫做 y 。显然 y 不能是偶数,否则把 y/2 的表示法中的每一项都再乘以一个 2 ,就能得到 y 的一种合法表示了。如果 y 是奇数呢?无妨假设 3i ≤ y < 3i+1 ,其中 i 是某个适当的正整数。于是, y′ = y – 3i 就是一个偶数,并且 y′/2 < 3i 。把 y′/2 的表示法中的每一项都再乘以一个 2 ,再在最前面加上一个 3i ,就能得到 y 的一种合法表示了。

下面我们就来证明,不断地执行 n → 3x · n + 1 (当 n 为奇数时)以及 n → n/2 (当 n 为偶数时)的变换,任何一个正整数最终都能变为 1 。还是以 27 为例。问题改版后,把 27 变成 1 的步骤数能大大减少:


(((((27 × 32 + 1) / 22 × 3 + 1) / 23 × 32 + 1) / 24 × 3 + 1) / 23 × 3 + 1) / 24 = 1


在这个过程中,我们一共除以了 16 个 2 。也就是说,上式中所有 2 头上的指数之和是 16 。想一想,如果等式两边同时乘以 216 ,结果会怎样?结果是,等式左边就不再有除法了:


27 × 37 + 35 + 22 × 34 + 25 × 32 + 29 × 3 + 212 = 216


其中,等式左边的 35 + … + 212 ,正好是 216 – 27 × 37 的一个合法的表示法!


所以,为了证明某个正整数 n 最终能变为 1 ,我们只需要证明,存在适当的 a 和 b ,使得 2a – n · 3b 有一个合法的表示法,并且表示法第一项里 3 的指数小于 b 。


由于 log32 为无理数,因而很容易看出,对于任意的正整数 n ,我们总能找到一个 b ,使得 [n · 3b, (n + 1) · 3b) 区间内包含某个 2 的整数次幂。把这个 2 的整数次幂记作 2a 。既然每一个正整数都有一个合法的表示法,那么 2a – n · 3b 也有一个合法的表示法。而 2a – n · 3b < 3b ,因而它的表示法第一项里 3 的指数一定小于 b 。


本文最后,让我们再对上一段中第一句话的结论作出一些额外的解释。设想有一个总长为 1 的圆形轨道,轨道上有一个周长为 r 的轮子,其中 r 为某个大于 0 的无理数。在轮子上的某个位置涂一个墨点。让轮子从圆形轨道上的某一位置出发,沿着轨道往前滚动。每次墨点接触轨道时,都会在轨道上留下一个记号(轮子上的墨点不会干掉,滚过已有的记号时也不会反过来沾上墨点)。我们可以证明一个结论:轮子沿着轨道一圈一圈地滚动下去之后,轨道上的各个地方都会稠密地分布着记号。


首先,任意两个记号的位置都不会重合,否则某个整数倍的 r 就会等于某个整数,这与 r 的无理性相矛盾。因此,轮子转了无穷多圈之后,轨道上也会留下无穷多个记号。取任意大的正整数 N ,把轨道平均分成 N 份,每份的长度都是 1/N 。根据鸽笼原理,一定有两个记号落入了同一份里。这两个记号之间的距离 d 小于 1/N 。不妨假设轮子从先产生的那个记号出发,转了 k 圈之后来到了后产生的那个记号;那么,从此处出发再转上 k, 2k, 3k, …圈,就会继续得到一系列间隔为 d 的记号。如果正整数 N 足够大,间隔 d 就会足够小,由此产生的记号也就会足够密地分布在整个轨道上了。




为什么对于任意的正整数 n ,我们总能找到一个 b ,使得 [n · 3b, (n + 1) · 3b) 区间内包

含某个 2 的整数次幂呢?


在对数尺度下,这就化为了刚才讨论的问题。 [n × 30, n × 31), [n × 31, n × 32), [n × 32, n × 33), … 成为了一个个等长的区间,区间的长度都是 log(3) 。而 20, 21, 22, … 也就成了一系列的等距点,相邻两个点之间的距离是 log(2) 。如果把 log(3) 的长度看作 1 个单位,那么 log(2) 的长度就是 log(2) / log(3) = log32 个单位,这是一个无理数。这就完全相当于周长为 log32 的轮子沿着总长为 1 的圆形轨道滚动。根据刚才的结论,由此得到的标记将会稠密地分布在这些等长区间内的各种位置,当然也就会有不少标记落进了形如 [n · 3b, (n + 1) · 3b) 的区间里。


来源:Matrix67,百度百科





陆晨 博士


名师主讲金融建模课程——以MATLAB为工具


2016年5月27—29日    上海



数据获取、数据清洗、金融数据爬虫、Matlab 金融工具的使用、主成份分析(PCA)和因子分析、 回测计算,建立一个自己的交易策略、神经网络和机器学习。。。



咨询电话/微信:13061694649


 
大数据实验室 更多文章 用户画像数据建模方法 李光斗:警方是如何利用大数据抓到王全安的 降楼价,新加坡居然靠的是无人驾驶! 小数法则和经验主义 什么性格的人适合 Quant 这个职位?能否描述一下 Quant 一天的生活是怎样的?
猜您喜欢 海量的超赞 Linux 软件 mnv*框架时代 陌上花开蝴蝶飞 JavaScript 设计模式——代理模式 Kubernetes容器集群中的日志系统集成实践