简单的数学运算如何改变算法

简单的数学运算如何影响事物

当你坐在无人驾驶汽车上行驶时,突然发现前面有一个问题。一个亚马逊快递司机将他们的货车开到了一辆双停的UPS卡车旁边,然后才意识到无法通过。现在他们卡住了,你也卡住了。

街道太窄,无法实现U型转弯,所以你的AI增强汽车开始进行一个三点转弯。首先,汽车沿着一侧的曲线路径前进。

一旦到达那里,它会向另一侧转向,然后向相对侧的人行道后退。然后它再次将方向盘转向第一侧的曲线路径,向前驶离障碍物。

这种通过中间转向的简单几何算法可以帮助你在狭窄的情况下绕过障碍物。 如果你曾经并排停车,你就知道这种前后摆动可以帮助你。

这里有一个关于车辆绕过的空间有多大的有趣数学问题,数学家们已经研究了一个理想化的版本超过100年。

这始于1917年,当时日本数学家柿谷宗一提出了一个听起来有点像我们的交通堵塞的问题。假设你有一根长度为1的无限细的针。

你可以将针旋转180度并将其返回到原始位置的最小区域是多大?这就是柿谷的针问题,数学家们仍然在研究它的各种变体。

让我们看看使柿谷的针问题如此有趣和令人惊讶的简单几何学。

像许多数学问题一样,这个问题涉及到一些简化的假设,使问题不那么现实,但更容易管理。

例如,车辆的长度和宽度在驾驶时很重要,但我们将假定我们的针的长度为1,宽度为零。

这意味着针本身的面积为零,这在解决问题中扮演了重要角色。此外,我们将假设针可以围绕其前端、后端或中间的任何一点旋转,不像车辆一样。

目标是找到允许针旋转180度的最小区域。找到满足一定条件的最小的东西可能会有一定的挑战,但开始的好方法是寻找任何满足这些条件的东西,看看你可以在途中学到什么。

例如,一个简单的答案是只需将针围绕其端点旋转180度,然后将其向上滑动。这将针恢复到其原始位置,但现在它指向相反的方向,正如柿谷的针问题要求的那样。

所需转弯的区域是半圆,半径为1,其面积是

因此,我们找到了一个可行的区域。

通过充分利用我们神奇的数学针绕其任何点旋转的能力,我们可以做得更好。与其围绕其端点旋转,不如围绕其中点旋转。

我们可以从我们的无人驾驶汽车困境中获得灵感,考虑使用类似于针的三点转弯。这实际上非常有效。

使用这种技术扫掠的针产生的区域称为三叶线,它也满足柿谷的要求。

计算它的面积需要更多比我们在这里讨论的基础几何学了解参数曲线的知识有所帮助),但事实证明,这个特定的三叶线的面积——由长度为1的线段扫出的三叶线——恰好是π的1/8。

现在我们找到了一个更小的区域,可以让柿谷的针绕过,你可能会原谅我认为这就是我们所能做到的最好的。

但是当俄罗斯数学家阿布拉姆·贝西科维奇发现你可以无限制地做得更好时,这个针问题发生了巨大的变化。他提出了一种方法,可以消除区域的不必要部分,直到它足够小。

这个过程是复杂的,但基于贝西科维奇的想法的一个策略依赖于两个简单的思想。首先,考虑下面的直角三角形,高度为1,底边为2。

现在,我们暂时忘记完全将针旋转一周,只关注一个简单的事实:如果我们将长度为1的针放在顶点上,这个三角形足够大,可以让针从一侧旋转90度到另一侧。

现在,这里是第一个重要的思想:

我们可以减小区域的面积,同时保持90度的旋转。策略很简单:我们将三角形切成两半,然后将两半推在一起。

这个新图形的面积必须小于原来的,因为三角形的一部分现在重叠在一起。事实上,计算这个图形的面积很容易:它只是边长为1的正方形的四分之三,所以面积是 A = 3/4,这小于我们开始的三角形的面积。

而且,我们仍然可以将针指向以前的所有方向。只有一个问题:原始角度被分成了两部分,所以这些方向现在分成了两个独立的区域。

如果针在新区域的左侧,我们可以将其旋转45度,位于南和东南之间,如果在右侧,我们可以将其旋转45度,位于南和西南之间,但由于两个部分被分开,似乎无法像以前那样旋转90度。

这就是第二个重要的想法。有一种狡猾的方法可以让针从一侧移动到另一侧,而不需要太多的区域。在国际象棋中,你可能知道骑士以L形移动。好吧,我们的针将以N形移动。

这是它的操作方式。首先,针沿着N的一侧滑动。然后,它旋转以指向对角线,然后滑下。然后它再次旋转,完成其行程,滑到N的另一侧。

乍一看,这种N形状的移动可能看起来不起眼,但它确实有很有用的功能。它允许针“跳跃”从一条平行线到另一条线,这将有助于我们将针从一个区域移到另一个区域。

更重要的是,它在不需要太多区域的情况下完成。事实上,你可以根据需要将其要求的面积减小到很小。原因如下。

请记住,我们的针宽度为零。因此,针向前或向后移动的任何线都将具有零面积。这意味着将针沿着N形状向上、向下或沿对角线移动所需的区域将由零面积的部分组成。

这只留下了N形状的拐角处的旋转。

这些移动确实需要区域。你可以看到每个角落有一个小扇形。但这里的狡猾之处在于:你可以通过拉长N来缩小这些区域。

扇形区域的面积公式是 A = θ/360 πr2,其中 θ 是扇形角的度数。

无论N有多高,扇形的半径始终为1:这是针的长度。但随着N的增高,角度会缩小,从而减小扇形区域的面积。

因此,你可以通过拉伸N来使附加的区域面积尽可能小。

请记住,我们能够通过将三角形分成两部分并使它们重叠来减小三角形区域的面积。问题在于,这将90度角分成了两个独立的部分,阻止我们将针旋转90度。

现在,我们可以通过附加适当的N形状来解决这个问题,以确保针可以从一侧到另一侧。

在这个更新后的区域中,针仍然可以像以前一样旋转90度,只是现在分两个阶段进行。首先,针旋转45度并与左侧的垂直边对齐。

接下来,它沿着N的形状移动,以到达另一侧。一旦到达那里,它就可以自由地旋转另外的45度。

这使得针可以旋转90度,并为保持旋转,只需添加区域的旋转副本。

通过添加适当的N形状,针可以从一个三角半岛跳到下一个,一点一点地旋转,就像汽车执行三点转弯一样。

这些细节中还有更多的数学问题,但这两个想法——我们可以不断减小原始区域的面积,通过切割和移动确保我们可以使用任意小的N形状从一个部分到另一个部分

——帮助我们将针在一个不断缩小的区域中移动,最终可以变得很小。

建立这种区域的更标准的方法是从等边三角形开始,使用“Needle树”,这是一种巧妙的方法,可以切割三角形并将碎片拉长和滑动在一起。

结果非常令人惊叹。

最近,数学家在这个古老问题的新变种中取得了进展,这些问题设置在更高维度,并采用不同的大小概念。

我们可能永远不会看到一辆AI驱动的汽车在执行柿谷针对点转弯,但我们仍然可以欣赏它几乎不存在的美和简单。

练习1. 作为柿谷针对点集的最小等边三角形的面积是多少?

查看答案1:

高度为1的等边三角形有足够的空间,可以让位于一个顶点的针从一侧摆动到另一侧。一旦在一侧,它可以滑到另一个顶点,旋转,然后继续旅程,直到回到起始位置,指向相反的方向。

边长为s的等边三角形的面积是。您可以使用三角法或毕达哥拉斯定理来确定高度为1的等边三角形的边长。因此,面积为

练习2. 您可以通过使用“Reuleaux三角形”来比练习1的等边三角形好一点,它是由三个重叠的圆形扇区组成的区域。

最小Reuleaux三角形的面积是多少?

查看答案2:取三个半径为1,角度为60度的圆形扇区,并排列它们,以便它们都与边长为1的等边三角形重叠。

这个区域允许长度为1的针完全旋转。

三个圆形扇区的面积之和计算了三角形重叠的面积三次,因此总面积是三个圆形扇区的面积之和减去两次三角形重叠:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/106698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CCF CSP认证 历年题目自练Day32

题目一 试题编号: 202209-1 试题名称: 如此编码 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景 某次测验后,顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字,小…

C# Convert和BitConverter类学习

前言: C# Convert是一个比较好用的强制转换,相比我们之前用的(int)或者是类型.Parse(),Convert给我们提供了很多的选项,特别是对于有字节要求的变量,Convert简直就是C#编程的福音,BitConvert对于byte数组转…

linux下文件存储系统(inode/目录项/硬链接)

概念: 关键点: (1)inode 也叫做文件属性管理结构体 (2)目录项里面存两个东西 文件名和 inode号。通过inode号可以找到磁盘上的文件。 (3)给文件创建硬链接的时候,两个…

中国矿业大学-JAVA期末备考

JAVA里面,“”和“equals"的区别是什么呢? 1.""操作符用于比较两个对象的引用是否相等。也就是说,它会检查两个对象是否指向内存中的同一个地址。如果两个对象的引用完全相同,则""返回true;否…

uniapp 小程序实现图片宽度100%、高度自适应的效果

因为image组件默认是有宽度跟高度的&#xff0c;所以这个高度不怎么好写 通过load事件来控制图片的高度 话不多说&#xff0c;直接上代码&#xff0c; <image class"img" src"/static/image.png" :style"{ height: imgHeight px }"mode&q…

CentOS 7 服务器上创建新用户及设置用户密码有效期

一、创建用户 1、以 root 用户身份登录到 CentOS 服务器 2、运行以下命令以创建新用户&#xff1a; useradd -m -s /bin/bash username其中&#xff0c;username 是您要创建的新用户的用户名。该命令将创建一个新用户并为其分配一个主目录。3、运行以下命令以设置新用户的密码…

Frame Buffer设备驱动 (ili9488 3.5寸tft屏)

Frame Buffer设备驱动 Frame Buffer设备ili9488介绍驱动编写代码编写ili9488.c设备树修改测试ili9488代码分析 LCD资料下载 Frame Buffer设备 在早期的输出显示设备中&#xff0c;大部分为CRT显示器&#xff0c;随着技术的不断发展&#xff0c;现在大部分使用的是液晶显示器。这…

MySQL视图、用户管理和C语言链接

文章目录 1. 视图1.1 基本使用 2. 用户管理2.1 用户信息2.2 创建用户2.3 修改用户密码2.4 删除用户 3. 数据库的权限3.1 给用户授权3.2 回收权限 4. mysql connect4.1 Connector/C 使用4.2 mysql接口介绍 1. 视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一…

百度SEO优化的特点(方式及排名诀窍详解)

百度SEO优化的特点介绍&#xff1a; 百度SEO优化是指对网站进行优化&#xff0c;使其在百度搜索引擎中获得更好的排名&#xff0c;进而获取更多的流量和用户。百度SEO优化的特点是综合性强、效果持久、成本低廉、投资回报高。百度的搜索算法不断更新&#xff0c;所以长期稳定的…

开源任务调度框架

本文主要介绍一下任务调度框架Flowjob的整体结构&#xff0c;以及整体的心路历程。 功能介绍 flowjob主要用于搭建统一的任务调度平台&#xff0c;方便各个业务方进行接入使用。 项目在设计的时候&#xff0c;考虑了扩展性、稳定性、伸缩性等相关问题&#xff0c;可以作为公司…

YOLOv5网络结构图

网络结构图&#xff08;简易版和详细版&#xff09; 网络框架介绍 前言&#xff1a; YOLOv5是一种基于轻量级卷积神经网络&#xff08;CNN&#xff09;的目标检测算法&#xff0c;整体可以分为三个部分&#xff0c; backbone&#xff0c;neck&#xff0c;head。 如上图所示…

【排序算法】详解直接插入排序和希尔排序原理及其性能分析

文章目录 插入排序算法原理细节分析代码实现复杂度分析:稳定性分析:与冒泡排序的对比 希尔排序算法原理细节分析代码实现复杂度分析稳定性分析 总结对比 插入排序 算法原理 插入排序又或者说直接插入排序,是一种和冒泡排序类似的并且比较简单的排序方法&#xff0c; 基本思想…

3、Linux下安装

以下操作仅限于rh系列:支持rpm/yum安装方式&#xff0c;不支持deb/apt安装方式。 以下操作仅限于rh系列&#xff1a;支持rpm/yum安装方式&#xff0c;不支持 deb/apt安装方式。 1、在线下载安装包&#xff1a; wget https://downloads.mysql.com/archives/get/p/23/file/ m…

打造个人专属形象!工业级人物写真生成工具FaceChain开源

简介 FaceChain 是一个可以用来打造个人数字形象的深度学习模型工具。用户仅需要提供最低一张照片即可获得独属于自己的个人形象数字替身。FaceChain 支持在 gradio 的界面中使用模型训练和推理能力&#xff0c;也支持资深开发者使用 python 脚本进行训练推理。 Github链接&…

长短期记忆网络(LSTM)

一. 什么是LSTM Long Short Term Memory&#xff08;LSTM&#xff0c;长短期记忆&#xff09;是一种特殊的递归神经网络。这种网络与一般的前馈神经网络不同&#xff0c;LSTM可以利用时间序列对输入进行分析。 简而言之&#xff0c;当使用前馈神经网络时&#xff0c;神经网络会…

Linux 中如何安全地抹去磁盘数据?

哈喽大家好&#xff0c;我是咸鱼 离过职的小伙伴都知道&#xff0c;离职的时候需要上交公司电脑&#xff0c;但是电脑里面有许多我们的个人信息&#xff08;聊天记录、浏览记录等等&#xff09; 所以我们就需要先把这些信息都删除&#xff0c;确保无法恢复之后才上交 即有些…

MongoDB 索引和常用命令

一、基本常用命令 1.1 案例需求 存放文章评论的数据存放到 MongoDB 中&#xff0c;数据结构参考如下&#xff0c;其中数据库为 articledb&#xff0c; 专栏文章评论 comment 字段名称 字段含义 字段类型 备注 _id ID ObjectId或String Mongo的主键的字段 articlei…

怎么团队合作,协作开发

一、代码托管平台 我是在大一下的一个竞赛中接触到的代码托管平台 那个时候我也算是什么都不会的&#xff0c;不过不得不说这个确实比较重要&#xff0c;对我造成了一些冲击 在我看来&#xff0c;代码托管平台的作用就是在一个中转站&#xff08;仓库&#xff09;上存储我们写…

自己在家给电脑重装系统Win10教程

自己在家怎么给电脑重装系统Win10&#xff1f;Win10电脑系统如果操作时间特别长了&#xff0c;就可能出现卡顿、蓝屏等系统问题&#xff0c;这时候用户就想给电脑重装系统&#xff0c;却不知道重装具体的操作步骤&#xff0c;下面小编给大家详细介绍自己在家给电脑重装Win10系统…

k8s-13 存储之secret

Secret 对象类型用来保存敏感信息&#xff0c;例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活 。 Pod 可以用两种方式使用 secret:作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里 当 kubelet 为 pod 拉…