《啊哈,灵机一动》---思维的乐趣

我唯一知道的事就是我一无所知 ----苏格拉底

本书是数学大师马丁.伽德纳所著,源自于一本科教杂志,为什么这样的集高学术水平和高施教水平的老师不能出现在中国?大多数中国人还是和以前一样,抱着所谓的国学成天研究,喜欢研究人与人之间的关系,对于自然科学的探索,对于大自然的好奇心,这正是我们国人所缺乏的,在如今的现代化社会中,科技的发展主要来自于自然科学,而科技已经是一个国家发展壮大的最主要的推动力,中国社会需要那种对于科学的热爱,那种求真的态度

组合数学

推测一件事情发生的概率,有三种方法
古典概率模型:基本空间由有限个元素或基本事件组成,其个数记为n,每个基本事件发生的可能性是相同的。若事件A包含m个基本事件,则定义事件A发生的概率为p(A)=m/n
几何概率模型:随机试验中的基本事件有无穷多个,且每个基本事件发生是等可能的,这时就不能使用古典概率,于是产生了几何概率。几何概率的基本思想是把事件与几何区域对应,利用几何区域的度量来计算事件发生的概率,布丰投针问题是应用几何概率的一个典型例子

“组合数学 + 古典概率模型"
为求概率提供了相当不错的思路

巧妙的借用

这个方法最早是从老头分马那儿看到的:一个富翁,留下17匹马,分给3个儿子,大儿子分1/2,二儿子分1/3,三儿子分1/9。聪明的老头牵了一头马来,分完后,又牵了回去,大家各得其所

分马问题虽然巧妙,给人一种思维启发,但是不具有普遍性,高中学数学的时候,多项式的因式分解就经常通过先加一个数,然后减去同一个数来达到目的,这才是借用的普遍用法,这种方法改变了的条件的状态,使之利于求解

本书中有这样一个有意思的问题:有一次n人参加的一对一的淘汰赛,估计出比赛轮空的总人数。这种问题当然可以在纸上通过一步一步的演算得出结果,但是如果n比较大,那会是相当耗时,书上有一个很妙的解法,先找到一个最小的m
,使得m + n = A(A是2的x次方),把n和m看成是二进制,m中1的个数,就是最终的解

为什么这样解可以呢?

首先,我们通过巧妙的借用m来使得出现了A这样一个数,因为A是2的x次方,所以A场比赛就可以无人轮空的完整进行下去,现在我们就可以把A看成两个小组,第一组有n个人,第二组有m个人,m组每轮比赛可能会多出一个人,也可能刚刚好,如果是多出一个人,那么把这个人和第一组轮空的那个人进行比赛,这样就能使无人轮空的进行完所有比赛,这样m中多出的人数就是第一组n人中轮空的人数,即二进制表示的m中1的个数

这个巧妙的借用没有改变问题的形态,只是从问题的反面进行了求解

有时候我们单独对于一个解无从下手,只能通过巧妙的借用,达到一个有利于求解的状态,根据这个“借用”和“状态”来求所解

奇偶消除

在《编程之美》上有这么一道题:假如已知一个数在数组中出现的次数超过数组个数的一半,用最快的速度找出这个数。书中给出的解法就是建立两个空间,A和B,有两个属性,一是记录存放的是哪个元素,一个是记录存放该元素的个数,初始值都为0,代表为空,遍历一遍数组,如果A或B为空则把数组元素放入其中一个,并计A或B的值为1,如果出现重复的元素,则在相应的A或B上加1,当A和B都不为空时,A和B同时减一,这样遍历一遍数组,最后留在A或B中的元素就是所求解,这里虽然没有用到奇偶消除,但是把放在A和B中不同元素想象成正负离子,也算是异曲同工

这里用了一种巧妙的方法简化问题的规模,同时,不改变问题的性质,这与本书中的“铺砖理论”如出一辙,在一个地板砖上,有偶数个小方块,每次铺砖必须覆盖到四邻域内的连续两个小方块,怎样快速判断是否能完整铺完

书中给出的解法:
在四邻域内依次标记小方块为红色和白色的,由于每次铺砖必须覆盖到四邻域内的连续两个小方块,这样同色的方块就可以看成具有相同的奇偶性,每次覆盖必须是一对具有相反的奇偶性才行,这样如果最初红色和白色的个数不一样(如19,21),所以不能进行奇偶配对,最后留下会两个同色的方块,则肯定无法按要求铺完,这样就能把问题规模最后规约到判断最后一对方块的奇偶性

运用奇偶性理论可以做两件事
消除问题规模:铺砖问题
判断问题状态是否发生改变:奇偶校验;反过来想,利用某些我们指定的操作,保持问题的状态不变(翻硬币问题,如果每次必须翻一对,那么正面和反面的奇偶性将是保持不变)

数的表示

古罗马人对于数的表示很呆板,简单的用和来表示一个数,聪明的印度人创造了十进制,数的表示清晰易懂,后来计算机的出现,由于硬件的限制,又带来二进制,其实在生活中,有很多事情也可以用二进制来表示,其中的1和0就代表是与非

最经典的一个问题就是1000瓶药,有一瓶毒药,有十只老鼠,药效发作是一天,需要在这一天里面来判断哪瓶药是毒药
小老鼠吃不吃药就是一个1和0的问题,这样可以有2的10次方中表达,每种表达就能对应某一瓶药

如果一系列东西中某些东西只允许出现一次(即可以出现,或者不能出现),用二进制表示是最恰当的,比如说用一系列数字表达0~14,每个数字最多只能出现一次,那么最简洁的表达方式就是 1 2 4 8

图形

切蛋糕

对于一个平面的蛋糕,切n刀,最多能切出多少块?
因为第k刀与之前的每一刀最多只有一个交点,所以第k+1刀最多和已存在的k刀有k个交点,再加上边缘的两个交点,共k+2个交点,这样就会产生k+1条线,每条线把之前的切块一分为二,那么就会产生k + 1个新块

切第一刀,会有两块
如果切了n刀后的,切出的块数位m,那么n+1刀切出后的块数就应该是 m + (n + 1 + 1)

所以f(n)表示切n刀后的块数
f(n) = 1, n == 1
f(n) = f(n -1) + n + 1 , n > 1

又是一个归纳法!!!

逻辑推理

集体智慧推理

基于逻辑推理的归纳法

在多人参与的一个事件中,有一种推理,是基于参与这个事件的所有人有着和计算机一样的准确思维

例1,有三个人,头上可能会是红色帽子或者蓝色帽子,如果某人看到了谁戴了红色帽子,就举手,如果你是其中一位,看见了其余两人举手了(自己也举手说看到了红帽),当过了片刻还没有人说自己头上是什么帽子,要求猜出头上的帽子

有三个人的时候,分别为A,B,C,可以一步一步的进行简单的推理,如果我是A,我如果头上是蓝帽子,那么其余两个人就会看到一个是蓝色一个是红色,B看到C也举手了,说明他看到了红色,这样他就会知道自己头上戴的是红色,但是他不知道,所以我头上的是红色

这种情况可以推论到n个人,即有n个人,头上可能会是红色帽子或者蓝色帽子,如果某人看到了谁戴了红色帽子,就举手,如果你是其中一位,看到所有人都举手了(自己也举手说看到了红帽),当过了片刻还没有人说自己头上是什么帽子,要求猜出头上的帽子

这里就要用到归纳法,如果要用到归纳法,一般是首先确定f(n)代表的是什么,然后确定f(n +1)与f(n)的关系,在这里,是一种很特别的归纳法,f(n)并不能直接表示某个具体的解,而是表示一个事实:f(n)表示的是共有n +1个人,其中一个人看到了n顶红帽(自己也举手说看到了红帽),但是大家都不暂时知道自己的帽子,那么他自己戴的肯定是红帽

当有n个人时,一个人看到了其余的全是红帽(自己也举手说看到了红帽),但是过了片刻还没有人说自己头上是什么帽子,这说明自己的问题可以简化为当自己的帽子为蓝色时,求f(n - 1),这样一直就可以简化成f(2)即最开头的那样,这样就得出了解

例2,即有n个人,头上可能会是红色帽子或者蓝色帽子(肯定有一顶是蓝色的),每一轮主持人都会问偷偷问每个人,他知不知道自己头上帽子的颜色,如果有人发现了,则主持人宣布游戏介绍,问如果有m只蓝帽子(m < n)时,这个游戏能进行多少轮?

如果只有一顶蓝帽子,那么第一天就会被人发现,游戏结束
设如果有n顶蓝帽子,那么在第n天会被人发现,游戏结束

这时如果有n+1顶蓝帽子,即当一个人A看到了n顶蓝帽子,过去了n天都没人说自己发现了头顶的颜色,这时A在第n+1天肯定会知道自己头上的颜色,游戏结束

所以最终答案是进行m轮

上面两个题都是以每个人十分聪明和理性,即按照自己设想的来,大家达到一种共识,因为一个人第一题看到有k只蓝帽子,他需要进行判断的是自己也是蓝帽子,如果没有之前的共识,即“如果有n顶蓝帽子,那么在第n天发现”,他是不可能猜到自己的帽子的
,这类问题只有理论价值

操作设计

能量消耗

许多问题是问最少多少次能够完成,这就可以用能量消耗法来考虑,不考虑具体的操作,先确定总任务量为A,每次操作能减少任务量为B,这样A/B就为最少的次数

例1,举办一个淘汰赛,总参加人数为n,为最少多少场比赛能够决出第一名

首先不考虑怎么安排比赛,最后留一个人,总任务量为n - 1,因为每场比赛会淘汰一个人,每次操作能减少任务量为1,这样结果就为 (n - 1)/1 就为最少的次数

例2,考牛排问题,一个烤架只能放n块牛排,现有m块牛排(m > n),牛排两面都需要烤熟,牛排从生到熟需要k分钟,问所有牛排烤熟至少需要多少分钟

总任务量为 m * 2, 每次减少的任务量为n,所有所需时间为 k * ( (m * 2) / n )(如果不是整除,那么还得加1)
;

例3,有n个医生,m个病人,每个医生都会给每个病人看一种传染病(医生和护士都可能得病),看病的时候手套内侧和医生接触,手套外侧和病人接触,问要使病人之间不传染,医生之间不传染,至少需要多少副手套

这个题如果一个个推的话就很麻烦,其实每个人分配一副手套的一侧,这样需要的手套数就为 (m + n)/ 2

上面三个问题其实都需要一个前提,就是证明 “每次操作能减少任务量B,不多不少,就是B,同样,某次减少任务量后,面对的情况(即问题模型)和减少前是一样的”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容