1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

在什么时候你真正感觉到数学是有用的?

本帖由 漂亮的石头2020-11-13 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    [​IMG] 数学建模andMATLAB,微信公众号:数学建模andMATLAB,纯粹地学习数学建模,专注数学建模应用 阅读原文

    现在,穿着运动鞋的朋友们可以低头看一眼自己脚上的鞋,没有穿的朋友们可以翻出几双平时常穿的运动鞋,然后仔细观察一下鞋带的系法(并不是打结方法)。

    你的运动鞋鞋带是否和数模君一样,是最常见最经典的交叉系法?还是完全没有交叉的平行式系法?又或者你的系法更加讲究更加精致,是英军推荐的鞋店式系法?还是你在系鞋带这件事上格外有创意,用鞋带画出了一个神秘的六芒星

    [​IMG]
    (从左到右分别是交叉式系法、平行式系法、鞋店式系法和六角形系法)

    大家可能都没有注意过系鞋带的方式,只知道平时最常见的交叉式系法。事实上,很多鞋店都会使用一些有创意地系鞋带方式去吸引顾客,有些追求独特的人在买新鞋后会将鞋带全部解开并重新系一个有趣的样式。于是,系鞋带的新样式层出不穷,引领了一波又一波的时尚。只要上网搜一下如「鞋带系法」一样的关键词,可以搜到几十、甚至几百种不同的系法。

    这几百种的系法的区别仅仅是美观上的不同吗?大多数人都从未想过鞋带系法中的玄妙之处,鞋带一直保持着从店里买回家时的交叉式系法。这种经典的系法究竟有什么优点,使它从千万种不同的鞋带系法中脱颖而出呢?除此之外,还有哪些鞋带系法有这些优点?数模君来为你一一解答这些问题,从数学的角度去分析不同的鞋带系法。

    1. 系鞋带的数学模型

    首先,我们需要先了解一下鞋带孔的排布通常是怎样的。以普通的匡威高帮帆布鞋为例,鞋面上一共有 2 列鞋带孔,每列有 7 个。于是,我们可以用无向图 G(V,E)来描述系鞋带问题, v 为图中节点,表示鞋带孔; e 为图中的边,表示连接两个孔的鞋带。在无向图 G 中一共有 14 个点,这些点被分成了 2 列,每列有 7 个,这 7 排的间距是一样的,每个点表示一个鞋带孔。

    [​IMG]

    在现实生活中,运动鞋的鞋面并不是一个平面;而且对于不同的鞋子,鞋带孔的排数各不相同,间距也各不相同。但是为了方便建模,这些因素我们暂时忽略。鞋带由一根带子组成,且这根带子需要保证穿过每个鞋带孔正正好好一次。然后,鞋带的两端会被并在一起,打一个结。所以,我们可以将鞋带表示为一条经过 14 个点(每个点各经过一次)的闭路。

    不同的系鞋带方法体现在鞋带连接鞋带空的顺序不同,即鞋带孔之间是否被连接,因此我们可以用邻接矩阵 W 表述不同的系鞋带方式。

    [​IMG]

    上文所提到的交叉系法,邻接矩阵表示为:

    [​IMG]

    在生活中,我们常见的不仅是鞋店里常见的交叉系法,还有一些我们并不常见但是很潮的系法。

    [​IMG]
    (图中左一左二分别是交叉系法,Z 型系)

    我们不会在鞋店中遇到图中右二那样的系法,因为看着实在太杂乱了,没有任何美感。我们也不会遇到图中右一那样的系法,原因则恰恰相反:这种系法实在太简单了,简单得起不到任何栓紧鞋子的作用。

    因此,我们需要给鞋带的系法进行进一步的定义,像图中右一这样不能起到鞋带作用的系法不能被称为鞋带的一种系法。只有闭路中与任意一个点相连的两条线段中,有至少一条线段其两个端点所属的列不同(一端在左列,一端在右列),才能被称为一种系鞋带法。

    如果闭路中所有的线段的两个端点属于不同列,也就是说没有一条线段连接同一列上的点,那么鞋带就系得更加牢固有效。我们将这种系鞋带的方法定义为「紧系法」

    2. 鞋带总共有多少种系法?

    现在我们已经了解了系鞋带模型,并且知道并不是所有连接鞋带孔的闭路都可以被称为「系鞋带法」。那么,符合要求的、可以被归为系鞋带法的闭路一共有多少种呢?在模型中,我们已经规定了鞋面上有 14 个鞋带孔。经过计算,这时竟一共有 3800 多万种鞋带系法,而其中又有 180 多万种是紧系法。当鞋带孔的数量增加时,鞋带的系法数量也会相应地随之大幅增加。我们可以使用下列公式计算鞋带系法数量(公式来源:https://www.nature.com/articles/420476a),[​IMG]

    其中, n 是鞋带孔有几对(也就是有几排)。当 n 是奇数时,m=(n-1)/2 。当 n 是偶数时,m=n/2 。

    紧系法的数量也可以被对应的公式表达,就当是留给大家的课后作业啦。

    3. 哪种系鞋带的方法最好?

    如果说上面的这些只是数学家无聊时做的一些计算,那么下面的内容就和大家的日常生活息息相关了。接下来我们将会在这几千万种不同的系法中,评出最「好」的系鞋带法。

    首先,我们需要去定义在系鞋带中,「好」究竟代表着什么。从常识上来讲,一种「好」是用的鞋带长度最短,也就是闭路的长度最短。另一种「好」是鞋带的系法最牢固

    我们来看一下,哪种系鞋带方式所用的鞋带长度最短?

    解决最优化问题的一般步骤就是先确定目标函数,毫无疑问,这里的目标函数就是鞋带长度,将鞋带孔连接边权重定义为孔之间的距离,目标函数转化为,所有连接孔之间的边权重之和最小。

    我们将鞋带孔左边一列从上到下定义为 [​IMG],右边一列从上到下分别为 [​IMG]。每行鞋带孔之间距离为 1 个单位,两列鞋带孔之间距离为 2 个单位。由此,鞋带孔之间的距离矩阵可表示为:

    [​IMG]

    由此可以将表示鞋带系法的邻接矩阵与距离矩阵对应元素相乘,即可得出鞋带总长度:

    [​IMG]

    基于上式可得,对于交叉系法,鞋带的长度为 [​IMG]。在所有的系鞋带法所用鞋带最短的就是下图中的「蝴蝶结系法」。它之所以被成为蝴蝶结系法,是因为横着看就像是一个蝴蝶结一样。

    [​IMG]

    其实,熟悉数学建模的同学应该已经发现系鞋带问题,在这里已经转化为旅行商(TSP)问题,只是在鞋带问题中,为了栓鞋带的牢固程度,额外添加了一些限制。大家可能知道,在旅行商问题中,作为最短路径整个路线是没有任何交叉的。在考虑鞋带系法时,也需要尽量地减少鞋带交叉的次数。

    我们也可以进一步缩小范围,在「紧系法」中寻找鞋带长度最短的方法,这样就可以同时保证鞋带的牢固和简洁。在所有「紧系法」中,长度最短的系法可能并不出乎大家意料,正是之前提到过的交叉系法,难怪这是目前最最最常见的一种系法了。

    [​IMG]

    现在,出于好奇我们将问题反过来,鞋带长度最长的系法是怎么样的呢?下面这张图展示的是最耗鞋带的系法,其中鞋带多次交叉,且尽量对角相连增加长度。

    [​IMG]

    想象一下,如果鞋店老板都把卖给你的鞋子,鞋带绑成这样,是不是很有画面感?

    [​IMG]

    关于怎样系鞋带最紧这个问题,数学家们也有一些解答。在鞋带模型中,每个鞋带孔就像一个滑轮一样,两边的鞋带上的拉力是一样的。所以理论上来说,鞋带上处处的拉力都是一样的。这一拉力越大,鞋带也就系的最紧。

    目前普遍认为,当鞋带孔靠的比较紧时(每排之间的间距较小时),交叉系法是最牢固的方法。当鞋带孔之间的间距逐渐增加至某个临界点,Z 型系法就变得和交叉系法一样牢固;如果继续增加鞋带孔之间的间距,Z 型系法的牢固性就会超过交叉系法。我们平时穿的鞋的鞋带孔间距通常是比较小的,所以通常来说交叉系法是最紧的。

    神奇的交叉系法既是最短的「紧系法」,又是最牢固的系法,也不知道当初店家在设计出交叉系法的鞋带时有没有考虑到这么多。但是,如果你想改造自己的鞋子,给生活多一些乐趣,也可以多多尝试其他的方法。

    最后,上文说了这么多系鞋带的方法,你学废了吗?

    [​IMG]
    阅读原文
     
正在加载...