十三 赖可 发自 凹非寺
量子位 报道 | 公众号 QbitAI

试想一下,如果你的裤子破了好几个洞,每个洞形状各异,但是宽度都不超过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单位面积。

抵达终点最后一步步依旧等待人来跨越,困难之处依旧在于,直径唯一的形状千变万化,最后给出的范围需要涵盖所有可能性。

如果你做到了,名字就将载入数学史。

传送门

QuantaMagazine博客:
https://www.quantamagazine.org/how-simple-math-can-cover-even-the-most-complex-holes-20200108/
https://www.quantamagazine.org/amateur-mathematician-finds-smallest-universal-cover-20181115/

GitHub项目地址:
https://github.com/guadaran/lebesgue-universal-covering-problem

作者系网易新闻·网易号“各有态度”签约作者

AI内参|把握AI发展新机遇

拓展优质人脉,获取最新AI资讯&论文教程,欢迎加入AI内参社群一起学习~

跟大咖交流 | 进入AI社群

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

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

  1. 一个退休程序员让百年数学难题逼近理论极限

    试想一下,如果你的裤子破了好几个洞,每个洞形状各异,但是宽度都不超过1厘米. 该如何设计一个通用的补丁,能够把所有的洞都补上呢? 一个退休程序员让百年数学难题逼近理论极限 这个问题在数学上叫做:万有覆 ...

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

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

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

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

  4. 是非人生——一个菜鸟程序员的5年人生路

    注意:!!!!!!!!!!!! 文章可能还在连载.请关注: http://topic.csdn.net/u/20080318/10/e4543fc2-d726-465c-bc95-fea14b92db ...

  5. 一个女程序员职场自述:彻骨的孤独

    点击上方关注"Java后端技术栈" 回复"面试"获取最新资料 美国<赫芬顿邮报>(The Huffington Post)网站刚刚登载了一名女程序员 ...

  6. 一个java程序员的真实经历

    半路出家的老java程序员的一点感悟 我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业.回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作 ...

  7. 转载-一个老程序员的30年生涯回顾

    本文转自阮一峰的博客网站<一个老程序员的30年生涯回顾(译文)> 一个老程序员的30年生涯回顾(译文) 作者: 阮一峰 日期: 2019年12月19日 前几天,我读到一篇文章,一个60多岁 ...

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

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

  9. 一个初级程序员学习新技术的策略

    一个初级程序员学习新技术的策略 我是一名初级程序员,工作一年多.还记得刚毕业,踏入社会的时候,面临着很多工作上尴尬和困惑.首当其冲的便是在学校学的知识并不够用,甚至并不管用.于是学习新技术成了重点解决 ...

最新文章

  1. 北汽蓝谷和北汽新能源
  2. SQL Server 2016新特性:列存储索引新特性
  3. 用神经网络模拟分子:数据精确性检测
  4. poi插入图片浮于文字上方_Word插入手写签名
  5. PMCAFF“音乐+社交”产品马拉松大赛圆满结束,10支队伍大放异彩
  6. php多进程mysql更新不了_php MYSQL 数据更新修改不了
  7. Loj#2460-「POI2010」桥Bridges【网络流,欧拉回路】
  8. hibernate jpa_JPA /Hibernate刷新策略初学者指南
  9. Linux 火狐浏览器安装Flash插件
  10. C++中相对路径与绝对路径以及斜杠与反斜杠的区别 及 处理代码
  11. 1.android体系结构介绍
  12. python读取多个文件夹_如何从python中的文件夹中读取多个NetCDF文件
  13. 华为方舟编译器 PK 微软苹果谷歌编译器,到底谁胜出?
  14. 网络配置辅导:多路由器如何使用多条ADSL线路
  15. 大一c语言期末课程总结,大一下学期期末自我总结
  16. 关于IDM下载器免费注册这件事
  17. 游戏王抽卡模拟器(概率计算器)
  18. linux ftp命令大全,linux 操作 ftp 常用命令
  19. Mac显示隐藏文件夹的命令
  20. redis基于Lettuce客户端实现读写分离

热门文章

  1. ESXi主机遗忘密码重置密码
  2. 多级NUMA:AMD EPYC互连速率、位宽与功耗的关系
  3. dom4j的xpath查找xml的指定节点
  4. Python生产环境部署(fastcgi,uwsgi)
  5. ubuntu 修改root密码
  6. (操作系统)实验二 作业调度
  7. 国外程序员收集整理的PHP资源大全
  8. python元类的概念_Python中的元类编程 | 学步园
  9. html圆点虚线,html的a标签点击后出现虚线框问题
  10. php 防止按住f5不松,WordPress如何防御(频繁F5刷新)的解决方法