数学思维——小白鼠之殇

问题描述

有1000个一模一样的瓶子,其中有999瓶是普通的水,有一瓶是有毒的,喝下毒药的小白鼠会在24小时内死亡,问在24小时内,需要最少多少只小白鼠才能找到有毒的那瓶水?

起初看到这道题的时候,一脸懵,简短的思考后,觉得应该是999只小白鼠吧,毕竟有时间的限定,但心里也在想有没有其他更好的答案呢,毕竟这个答案太过直接。
(实际上999并不是正确的答案!如果你是第一次看到这道题,不妨花费1分钟想一下自己的答案)

解题思路

正确答案是10只,在此基础上,还可以扩展出以下问题:最少会死几只小白鼠,每只小白鼠平均喝几瓶水,当最后一瓶水里有毒时,死了哪几只小白鼠等等。面对这些看似复杂的问题,具体应该怎么解答呢?

看到10只这个答案后,我的感觉首先是惊讶,竟然能用这么少的小白鼠就能从1000瓶水中检测出有毒的那一瓶,这与自己想到的答案相去甚远,如果真要用了自己的笨办法,得浪费多少资源……再来想“用10只小白鼠从1000瓶水中找到唯一有毒的那瓶水”究竟是怎么做到的?经过几分钟的思考,自己还是没想明白为什么会是10只。在经过老师的讲解后,自己理解了这道题的思考方式——计算机思维!

将1000个瓶子编码为0到999,转换为二进制表示的形式则需要10位二进制数,为0000000000 ~ 1111100111,然后将其中每一位对应相应编号的小白鼠,为0表示对应小白鼠不喝这瓶水,为1表示这只小白鼠喝这瓶水,24小时后,通过观察死亡小白鼠的个数与编号,则可推断出具体是哪一个编号的水有毒。这样只需要10只小白鼠就可以得出结果了!而且,在这个编号系统的基础上,对扩展出来的问题也可以举一反三。

理解

可以看到,上面问题的思考思路实际就是利用了计算机最本质的功能——编解码技术,通过编码对要解决问题抽象,将一个十进制世界里的问题转换成二进制的问题,通过将一个线性的问题,增加维度,扩展为一个多维问题的表现方式,升维思考,变为一个数值范围覆盖的问题。

以上的解题思路,抽象成一个数学建模的公式,实际是下面这个式子:
N = log2x
就是有了这个简单的公式,可以解决看似极其复杂的一个问题,这就是数学的魅力。抽象于生活,又回到生活问题中去。

小结

学习内容、方法

  1. 经过对这道题的理解,让我重新学习了编解码的知识,对编解码的应用有了更深刻的认识
  2. 看似困难的问题,换一个角度、换一个思考的方式,变得异常简单。升维思考、降维拆解(提炼编解码的思考方式,将原来一个线性的问题分解为十个维度的问题)
  3. 学习是一个不断总结、反复的过程,遇到一个概念、一个知识点,需要思维上移,提炼总结,同时也要关联到我们身边的真真切切的案例(将概念变换为一个等效的图形、图像等),举一反三。

反思

对于之前自己的学习、知识,感觉离自己都有一定的距离,并不能深刻领会,最近终于找到了症结:不能将所学内容转换角度为自己主观领悟、联系到自己身边的具体事物的问题。学习,实际上是一个及其主观、极富个性化的事情,所学的内容多么抽象,总能映射到我们已有的知识体系,这样有实际案例与之关联,学习就变得容易、简单了,自然也就能学好,相信我们的学习效率能提高十倍、百倍!

发布了159 篇原创文章 · 获赞 225 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/lyg673770712/article/details/88904326