试想一下,如果你的裤子破了好几个洞,每个洞形状各异,但是宽度都不超过1厘米。
该如何设计一个通用的补丁,能够把所有的洞都补上呢?

一个退休程序员让百年数学难题逼近理论极限
这个问题在数学上叫做:万有覆盖问题(universal covering problem)。
已经让数学家思考了一百年。
乍一听上去,这像是一个很简单的问题。
但是稍微想一想,似乎又不那么简单。
比如一个边长为1的等腰三角形,和一个直径为1 的圆形,两者的直径都为 1。
但是,这个三角形就不能被圆形覆盖。

一个退休程序员让百年数学难题逼近理论极限
而最近,一个退休程序员,用高中方法取得了最新进展。
为什么这么难?
这个难题的的提出者,法国著名数学家:勒贝格(Henri Léon Lebesgue)。

一个退休程序员让百年数学难题逼近理论极限
△Henri Léon Lebesgue
他提出了勒贝格积分,拓宽了积分学的研究范围。
在1914时,他给好朋友Julius Pál(也是数学家)写信时提了一个问题:
在一个平面上,找一个最小区域,让它可以覆盖直径不超过1个单位的面积?
直径不超过1个单位的任意形状,就是一个封闭曲线的边缘上,最远两点的距离不超过1个单位。
这个问题最难的部分是:
无法穷举所有直径为1的形状到底长什么样子。
直径为1的形状千千万,到底用哪种万能补丁才能全部覆盖它们呢?

一个退休程序员让百年数学难题逼近理论极限
万有覆盖“通用”方法
但是这个问题并不难上手,只要你有高中数学基础,就可以试一下。
接下来,让我们一起看看数学家们目前解决这个问题的方法。
从直径为1的需要覆盖的区域R入手。
虽然不知道R长什么样子,能够确定的一点是:它绝对不会超过1个单位的宽度。
那么就先假设它有2个点——A和B,距离为1个单位。

一个退休程序员让百年数学难题逼近理论极限
现在,我们假设除了A和B之外,在R区域内还存在一个点C。
那么C可能在哪里呢?
它不可能大于A的1个单位,这意味着它必须在以A为圆心且半径为1的圆中。
但另外一个问题是,C和B的距离也不能超过1个单位。
所以C也必须在以B为圆心且半径为1的圆中。

一个退休程序员让百年数学难题逼近理论极限
所以,C的位置就确定在了两个圆形的交集位置。

一个退休程序员让百年数学难题逼近理论极限
到A和B的距离不能超过1,这一条件不仅仅适用于点C,还适用于区域R中的每个点。
所以R中的每一个点都必须位于这两个圆的交集区域中。
换句话说,这个区域可以覆盖直径为1的所有可能的R集,是一个万有覆盖区域。

一个退休程序员让百年数学难题逼近理论极限
但是这个区域不是最小面积,需要对它进行一下修剪。
注意,圆的相交点形成两个等边三角形,顶点分别是是A、B,以及距离AB中点垂直距离为√3/2的上下两个点。

一个退休程序员让百年数学难题逼近理论极限
因为√3/2大于1/2,我们可以画两条平行线,与AB平行,距离AB 1/2个单位。

一个退休程序员让百年数学难题逼近理论极限
现在,考虑下图中红色的区域。

一个退休程序员让百年数学难题逼近理论极限
因为两个平行线之间的距离为1个单位,所以直径为1的集合不可能同时出现在两个红色区域。就可以去掉一个。

一个退休程序员让百年数学难题逼近理论极限
这样万有覆盖面积从原来的(2π/3)-(√3/2)≈1.228,减少到(π/2)-1/2≈1.071
从一个基本的万有覆盖开始,可以通过去掉一个无关紧要的部分,来缩小它的面积。
这就是数学家们得到最小万有覆盖的方法。
优化方法:Pál六边形
通过更先进的技术,我们还能找到一些其他的简单形状。
Pál利用定宽曲线的特性表明:
即使直径为1的一组曲线,可能会从直径1的圆中“伸”出来,它也总是可以通过移动或旋转,以适应围成这个圆的六边形。

一个退休程序员让百年数学难题逼近理论极限
下图就展示了Pál提出的,可以覆盖各种形状(直径为1)的六边形。

一个退休程序员让百年数学难题逼近理论极限
上图中间的形状是一个勒洛三角形(Reuleaux triangle),这是一个与我们上一小节提到的万有覆盖密切相关的定宽曲线。
勒洛三角形是一个弧三角形,通过三个相同的圆可以获得。

一个退休程序员让百年数学难题逼近理论极限
这个六边形的面积是√3/2≈0.866,比我们上小节所得到的面积还要小。
但Pál也表示,并不需要整个六边形。
他通过巧妙的旋转,去掉了一些无关部分。
首先,将两个Pál六边形堆叠在一起。

一个退休程序员让百年数学难题逼近理论极限
其中一个六边形绕中心旋转30度。

一个退休程序员让百年数学难题逼近理论极限
出现了6个红色小三角形。

一个退休程序员让百年数学难题逼近理论极限
每个红色小三角形,都处在未旋转六边形的外部,以及旋转六边形的内部。
由于每个六边形平行对边的距离是1个单位,所以对着的两个红色小三角形中的点距离肯定大于1个单位。
也就是说,一组直径为1的形状不可能同时出现在两个相对的红色小三角形中。
按照上一小节的思路,可能会觉得应该能从6个小三角形去掉3个小三角形,但实际上是不行的。
因为一个六边形旋转60度,或者对称翻转一下,都不会发生形状的改变。
所以从相对的一对中选择一个红色三角形只有两种不同的方法:
3个三角形可以是连续的,也可以是交替的。

一个退休程序员让百年数学难题逼近理论极限
但是,我们可以去掉2个这样的小三角形。Pál就是这么做的。

一个退休程序员让百年数学难题逼近理论极限
他从他的六边形上切下两个三角形,得到一个保证能覆盖所有直径为1的区域的新形状。
这种新的万有覆盖的面积是2-2/√3≈0.8453,比六边形面积略小一些。
但是Pál六边形并不是最优解。
在此基础上,数学家和数学爱好者们继续修修剪剪。
在1992年,数学家Roland Sprague和HC Hansen在Pál六边形上减去了三个小细条。
使面积缩小为0.844137708416。

一个退休程序员让百年数学难题逼近理论极限
Sprague减少了0.001单位面积,Hansen减少了0.00000000004单位面积。
退休程序员用高中几何,两次逼近极限
然后二十年过去了,这个问题毫无进展。
直到2014年,一位叫做Philip Gibbs的退休软件工程师尝试解决这个数学问题。
他利用自己的编程背景优势,尝试用电脑解来解决。

一个退休程序员让百年数学难题逼近理论极限
△Philip Gibbs
Gibbs首先对200个随机生成的直径为1的形状进行了计算机模拟。
这些模拟结果表明,他或许能够修剪一个最小万有覆盖空间顶部角落的一些区域。
随后,他证明了新的覆盖对所有可能的直径为1的形状都适用。
2015年2月,Gibbs和两位共同研究者将论文发表在了网上。

一个退休程序员让百年数学难题逼近理论极限
△论文地址:https://arxiv.org/abs/1502.01251
他们把最小万有覆盖面从0.8441377减少到0.8441153单位面积。

一个退休程序员让百年数学难题逼近理论极限
他的策略是将所有直径为1的形状移到他早些年发现的万有覆盖的某一角。
然后把对角部分剩下的任何区域都去掉;然而从节省面积测量的角度来说,却是非常精确的。
虽然此次减小的单位面积只有0.0000224,但这却几乎是汉森在1992年减少的面积的100万倍!
然而,这并未阻止他进一步的“裁剪”。
2018年10月,Gibbs独自又发布了一篇文章,再次将最小万有覆盖面积缩小。

一个退休程序员让百年数学难题逼近理论极限
△论文地址:https://arxiv.org/abs/1810.10089
要知道,在Gibbs的基础上再缩小覆盖面积实属不易。正如来自加州大学河滨分校的数学家约翰·贝兹所说:
你不可能真的把这些碎片画出来,因为他们都是原子大小的。

一个退休程序员让百年数学难题逼近理论极限
而Gibbs却再次突破了极限,堪称原子剪刀。
这一次他的着手点是上图中的点A和点E。

一个退休程序员让百年数学难题逼近理论极限
一个退休程序员让百年数学难题逼近理论极限
最终,通过这次研究,得到的最小面积就是0.8440935944。
值得一提的是,实验方法基本都属于高中几何知识。
正如贝兹所评价:
从数学角度来说,这只是高中几何难度,但是它几乎让人为之疯狂。
极限挑战,仍将继续
问题虽然还没有最终解决,但是在2005年的时候,有数学家计算出了这个问题的理论下限,万有覆盖范围不能小于0.832单位面积。
抵达终点最后一步步依旧等待人来跨越,困难之处依旧在于,直径唯一的形状千变万化,最后给出的范围需要涵盖所有可能性。
如果你做到了,名字就将载入数学史。

原文:https://www.thepaper.cn/newsDetail_forward_5492932最后,小编想说:我是一名python开发工程师
加Q裙937963151自取Python学习资料和学习视频,还有大神在线指导哦

一个退休程序员让百年数学难题逼近理论极限相关推荐

  1. 一个退休程序员,用高中几何方法,让百年数学难题逼近理论极限

    十三 赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 试想一下,如果你的裤子破了好几个洞,每个洞形状各异,但是宽度都不超过1厘米. 该如何设计一个通用的补丁,能够把所有的洞都补上呢? 这个 ...

  2. 一个退休程序员,用高中几何方法,让百年数学难题逼近极限

    前言 对于特定宽度的几何形状,我们是否可以找到一个面积最小的能覆盖所有可能形状的特定形状?这个名为「万有覆叠」问题的答案还不为人所知.但通过高中几何,我们可以离它更近一步. 「嘿,我的牛仔裤破洞了.你 ...

  3. 一个合格程序员的标准

    一个合格程序员的标准 2009年02月21日 星期六 01:37 A.M. 假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作 ...

  4. 一个合格程序员的标准(转)

    假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志成为职业程序员的人有所帮助,并借此机会感谢原昆明工学院计算 ...

  5. 一个中年程序员学习中国近代史的小结

    一个中年程序员学习中国近代史的小结 前言 程序员应该要认真学习历史 一些有意思的说法 哲学论 偏见 程序员学习历史的原因 学习历史首推中国近代史 什么是历史 历史有哪些分类 修史 中国近代史的重要意义 ...

  6. 一个老程序员的心里话(转载)

    1.希特勒地堡与cih病毒 99年4月,我来到北京参加研究生复试.复试完了之后就不回去了,我拿着一张光盘,里面刻着我用vb和authorware3.5编的一个cool 3d的教学软件,到处参加招聘会, ...

  7. Java黄金五年——1~5年一个Java程序员从入行到大牛的晋升之路

    在程序界流行着一种默认的说法叫"黄金5年",也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向,如何走好这5年,彻底从一个刚入行的菜鸟蜕 ...

  8. 一个老程序员的30年生涯回顾(译文)

    前几天,我读到一篇文章[1],一个60多岁老程序员回顾自己的人生. 读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感.下面就是这篇文章的翻译. 一个老程序员的30年生涯回顾(译文) 原文网 ...

  9. 一个平庸程序员的自白

    文 / zhuoqun Jacob Kaplan-Moss是著名 Python 框架 Django 的 Co-Creater 和核心开发者,在 Heroku 担任安全部门的 Director, 他常年 ...

最新文章

  1. centOS上docker 的简单使用
  2. Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
  3. 前端学习(1336):从数据库查询文档
  4. 解决 -- java 调用webservice 服务端收到参数为null
  5. 手机海报模板,收藏就对了!
  6. Java中string中hashcode_为什么String中的Java hashCode()使用31作为乘数?
  7. 2014年的六级考试即将来临,你们准备好了吗?
  8. bzoj:2141: 排队
  9. web前端的兼容性问题总结
  10. python 修改文件名 修改日期_python实现批量修改文件名
  11. 雷塞控制器SMC304简单介绍
  12. php元换成万元,数字单位换算(元换算成万元换算器)
  13. Linux安装iptables防火墙
  14. php代码实现微信代扣,PHP是如何实现微信H5支付的?
  15. C# 使用ZXing.net生成一维码(带数字与不带数字)、二维码(带logo与不带logo)
  16. 3dmax和python做3d动画_maya三维动画师和程序员(python)哪个前景好一些?
  17. “守法规知礼让、安全文明出行”背后需要良好的交通环境支撑 | 聚焦守法知礼...
  18. win10无线信号强度测试软件,如何在Win10 1909上确定Wi-Fi信号强度
  19. 高性能裸金属服务器应用场景
  20. leangoo大讲堂—北京站

热门文章

  1. 定向士官计算机网络技术在部队干什么,定向士官、直招士官、义务兵入伍详细对比分析!一文看懂区别!...
  2. task03 字符识别模型
  3. Java——MVC框架
  4. Matlab 2018a中文版下载方法
  5. html css精灵,CSS spirit /css精灵
  6. python中使用什么命令安装组件_在离线环境下安装python组件
  7. 堪比培训机构的MySQL系列博客
  8. java中gettext()_java getText()
  9. JAVA中如何创建一个文件
  10. 洛谷p2655 2038年问题 普及/提高- 模拟