今天的趣题来自 UyHiP 今年十月的趣题。
许多快递公司都依据物件的长、宽、高三边之和来收费,一些航空公司也要求托运行李的三边长相加不能超过某个限制。那么是否有人想过,有没有可能把一个三边之和较大的盒子装进一个三边之和较小的盒子里,从而骗取更低的费用呢?有人会说,恐怕不行吧,长宽高之和更大的盒子体积不也应该更大一些吗?不见得。比方说,盒子 A 的长宽高分别是 10 、 10 、 10 ,盒子 B 的长宽高分别是 9 、 9 、 12.1 。盒子 B 的三边长之和显然比盒子 A 要大,但体积只有 980.1 ,比前者要小近 20 个单位。那么,为什么就不能把盒子 B 沿斜线方向塞进盒子 A 呢?有人会敏锐地发现,在上面的例子中,盒子 A 的体对角线长为 17.3205 ,但盒子B的对角线长度达到 17.5616 ,显然无法完全放进盒子 A 里。不过且慢,我也能举出这样的例子,三边和更大的盒子其体积和对角线都比小的盒子的要小。盒子 A 的长宽高分别为 10 、 10 、 20 ,盒子 B 的长宽高分别为 7.1 、 16.5 、 16.5 。盒子 B 的长宽高之和比盒子 A 大,体积为 1932.98 ,对角线长度比前者小大约 0.1 。看来,为了解决这个问题,我们还需要从一些更巧妙的方面入手。
其实我偷了一个懒。这个 Blog 之前就曾经介绍过这个有趣的数学问题,上面的文字直接取自那篇文章。不过,当时我们给出的解法来自 Peter Winkler ,是一个虽然巧妙但却并不那么美观的方法。 UyHiP 给出了一个基于线性代数的解答。这个解答不但更加漂亮,而且直接适用于任意维度的情况。下面我们来证明,在任意维度中,我们都无法把 n 边长之和更大的盒子放进 n 边长之和更小的盒子。
令 d 是一个 n 维向量,向量中的 n 个正实数依次表示小盒子 n 个维度上的长度。假设我们现在要把它以一个很诡异的角度放进大盒子里。让我们用一个 n × n 的矩阵 A 来表示小盒子的放置角度,矩阵的每一行都是一个单位向量,依次表示小盒子各个维度上的边在大盒子中的方向。
n 维盒子共有 2n 个顶点,每个顶点都有一个与之完全相对的顶点,因而整个小盒子中一共有 2n 条体对角线向量。这些体对角线向量是很容易求出来的,它们就是小盒子各个维度上的边的向量和,也就是 ± d1A1 ± d2A2 … ± dnAn 。如果考虑所有 2n 条体对角线向量,我们也就会取遍上式中所有可能的 2n 种正负号组合。大盒子第 i 个维度上的长度,必须大于等于所有可能的体对角线在第 i 个维度上的分量的最大值,也就是 d1 · |A1i| + d2 · |A2i| … + dn · |Ani| 。因此,大盒子所有维度上的长度之和,至少也就有
d1 · |A11| + d2 · |A21| … + dn · |An1|
+ d1 · |A12| + d2 · |A22| … + dn · |An2|
+ d1 · |A13| + d2 · |A23| … + dn · |An3|
+ … …
+ d1 · |A1n| + d2 · |A2n| … + dn · |Ann|
换一种方式累加起来,也就是 d1 · ∑i |A1i| + d2 · ∑i |A2i| … + dn · ∑i |Ani| 。下面我们将证明,对于任意 r 都有 ∑i |Ari| ≥ 1 ,从而完成全部证明。
注意到矩阵 A 是一个正交矩阵,它的每一行数的平方和都等于 1 。由于正交矩阵的转置仍然是正交矩阵,因此矩阵 A 的每一列数的平方和也都等于 1 。也就是说, ∑i Ari2 = 1 。然而 ( ∑i |Ari| )2 = ∑i Ari2 + ∑i≠j ( |Ari| · |Arj| ) ≥ ∑i Ari2 = 1 ,也就说明 ∑i |Ari| 是大于等于 1 的。
线性代数挺好玩…
咦,感觉前面已经有了这篇文章呀
一天刷一百次都没抢到沙发
没怎么懂那段证明,能不能举个例子。(7.1 16.5 16.5)能不能以诡异的方式装进 (10 10 20) 很难判断。既然你证明了n维的,那能不能举个2维的实例来看看。
抢~~~
又是趣题啊。。
先留名 再看
前排
看不懂啊.67大哥强人!
呵呵
http://www.matrix67.com/blog/archives/2374
。。。
一到3维的我就没有想象力了,更别提n维的了
很漂亮的证明
好牛啊。但是实际运用不是那么大。。
不是想象力的问题。。是知识的问题
没想到这问题在三维空间也能解决……
呵呵 不错哦 谢谢 博主的分享哦 博主 辛苦了 希望博主事事顺心
∑i≠j ( |Ari| · |Arj| )=0的时候,是成立的,只不过这个时候,矩阵A是单位矩阵。放置大箱子的方式要求大箱子的每边都小于小箱子对应的边,但这显然与大箱子的定义矛盾了,所以∑i≠j ( |Ari| · |Arj| )>0。无论是否是转述,证明都应该严格啊,不要学佩雷尔曼啊。
= =真暴力
想学习mathematics,下了软件,没有注册码,能否提供啊?谢了,呵呵。欢迎关注我的博客,嘿嘿。
喂喂喂……没人吐槽后边证明里所有的“大”和“小”都反了么?……要把大盒子放到小盒子里啊……
原来线代还能这样用!
放置大箱子的方式要求大箱子的每边都小于小箱子对应的边,但这显然与大箱子的定义矛盾了,所以∑i≠j ( |Ari| · |Arj| )>0。
以对待上帝一样谦卑的态度去对待你身边的人。