#一道有趣的题,为什么可以降维打击?思考问题是维度越高越好吗?代价是什么?我们可以一直追求效率而不管公平吗?

编程入门 行业动态 更新时间:2024-10-05 15:24:44

#一道有趣的题,为什么可以降维打击?思考问题是<a href=https://www.elefans.com/category/jswz/34/1767143.html style=维度越高越好吗?代价是什么?我们可以一直追求效率而不管公平吗?"/>

#一道有趣的题,为什么可以降维打击?思考问题是维度越高越好吗?代价是什么?我们可以一直追求效率而不管公平吗?

国王有一百桶酒,比自己的生命还重要。结果有一天其中一桶被投了慢性毒药,喝了以后半个小时就会死掉。国王大怒,命令玩忽职守的侍卫去试毒。酒不能被混合,一个侍卫可以喝多桶酒,一桶酒也可以由多个侍卫喝。

请问:怎么样才能用最少的侍卫、在半小时内知道哪桶是毒酒?

一、一维法

找99个人,每人分别试喝一桶酒,半小时过后观察谁死掉那就是哪一桶酒被投了毒;如果没有人死掉那就是剩下的一桶酒被投了毒。

  • 此种方法的代价是调动99人,最多毒死1人。

二、二维法

将这100桶酒排成10*10的矩阵并编号,如下图:

然后安排18个人,将他们如下安排:

阿拉伯数字(1、2、3……)的人喝每一行桶里的酒,汉字数字(一、二、三……)的人喝每一竖列的酒,这样30分钟后,如果是阿拉伯数字6和汉字三的人死掉了,那么就可以推断是红点对应编号的位置酒有毒;如果没有人死掉,那么是右下角的位置酒有毒。(在二维坐标中可以使用b(x,y)确定一个点)

  • 此种方法的代价是调动20人,最多毒死2人。

三、三维法

此方法和二维法相似,只是将这100桶酒放在 5 *5 *4 的立体柜中,如下图:

  • 此种方法的待机是调动11人,最多会死掉3人。三维坐标中需要x、y、z三个值确定一个点。

通过上面的分析我们发现随着纬度的增加,我们需要的人数越来越少(99–>18–>11),但“代价”也越来越高(1–>2–>3),除了上面的方法之外还有其他更高效的方法吗?答案是肯定的!


先割一下

任何事物都是两面的,效率成本是对立统一的。

一块玉可以由好的工匠打磨也可以由一般的工匠打磨,好的工匠将这玉加工成手镯不仅用时短而且雕刻的花纹好,可以创造100块钱的价值,一般的工匠花时长而且只能创造50块钱的价值,如果单纯由市场决定肯定是好的工匠机会越来越多、赚的也越来越多,因为好的工匠效率高,久而久之好的工匠就形成了垄断,一般的工匠逐渐没有了工作。

一块玉要想实现它的最大价值,当然是把它送到最好的工匠那边打磨。但为了公平,还是会分一些玉给一般的工匠加工。

之前我们一穷二白,为了抢占市场,追求效率第一,但经过几十年的发展我们已经有了一定的资本,也是时候考虑一下公平了。毕竟不可能将“先富带动后富”一直当口号喊下去!


四、二进制

在现实中我们一般使用十进制,逢十进一,但在计算机中却都是使用二进制,逢二进一,任何数字都是有0和1组成。计算机中为什么用二进制的呢?因为二进制简单,计算速度快!在此题中我们能不能也用二进制的思想解决呢?

我们先将这100桶酒用二进制编号,每个标号一共7位,不足7位的前面用0补足。

1号桶编号:0000001
2号桶编号:0000010
3号桶编号:0000011
4号桶编号:0000100
……
100号桶编号:1100100

然后找7个人,从左到右排列,编号从“一”到“七”,每人对应一个位数,负责第一位的人“一”,只要这100桶酒中,二进制编号的该位数的数字是1,则喝一口此桶里的酒。

依次类推,每个人喝掉对应位数上数字为1的酒。

半小时后将这7个人,死掉的置为1,活着的置为0,那么得到的7为编号就为毒酒的编号。

这样的解法是需要调用7人。


为了简化题目,我们假如是10桶酒中有一瓶是毒酒:

酒十进制编号酒二进制编号左边补0
110001
2100010
3110011
41000100
51010101
61100110
71110111
810001000
910011001
1010101010

四个人从左到右依次排列,一、二、三、四,然后这四个人对应的酒的二进制编号如下表格:

桶10001
桶20010
桶30011
桶40100
桶50101
桶60110
桶70111
桶81000
桶91001
桶101010

根据规则,对应的位数上数字是1那么这个人就喝此桶酒,则:

要喝的酒的桶编号
8、9、10
4、5、6、7
2、3、6、7、10
1、3、5、7、9

死掉的置为1,活着的置为0,根据这个我们现在来验证:

假如1号桶有毒:

一:0
二:0
三:0
四:1
=====>二进制编号为0001,0001对应的十进制是1,1号桶酒有毒   正确  此时死1人

假如9号桶有毒:

一:1
二:0
三:0
四:1
=====>二进制编号为1001,1001对应十进制是9,9号桶酒有毒   正确  此时死2人

欢迎扫码,一起进步!

更多推荐

#一道有趣的题,为什么可以降维打击?思考问题是维度越高越好吗?代价是什么?我们可以一直追求效率而不管公平吗?

本文发布于:2024-03-11 17:50:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729534.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:维度   我们可以   问题是   越好   越高

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!