当推理不需要逻辑能力,也兼 学习离散数学或数字电路有什么用处

1.智力测验,逻辑题,鸡兔同笼,一元二次方程

有一类智力测验题,会问到"甲说丙说的是假话,乙说甲在瞎说"什么的;还有类似这样的,"凯特是你的秘书,问是不是办公室里至少有一个人长发及腰"。得分高的,就被评为智商高,或者逻辑能力强。

这种题目所涵盖的智商 (如果能够有所涵盖的话)是非常狭窄的,不包括音乐、美术、语言等很多方面。所以,我认为这种题目啥也不代表。而且,我曾经吹过牛,说这种题目与逻辑推理能力无关。有人不信,今天我证明给你看。

我们先明确一个边界,什么能够算作智力。作为人类,区别于动物的最重要的特性是,我们会使用 (或制造,如刘典同学所强调的)工具。又,按萨特的说法,你是一个什么样的人,完全取决于你的外在,而与你内心所想无法--即,如果你终生表现得勇敢,即使每一次你都吓得心中不住地发抖,按你的表现,你仍是一个的勇敢的人。

就像函数,我们只关心它的输入与输出,或者更严格地说,我们只关心它的输入与输出间的对应关系。至于函数如何实现的,是用C语言,用电子线路,用机械,用人脑,我们并不关心。

就像中文屋子 (请GOOGLE)。

就像我拿个计算机或打开EXCEL,而你练了十年珠脑速算,我 (计算器是我的一部分) 的开方、求对数、三角函数的速度可能比你还要快。

就像你在小学是个非常聪明的学生,解鸡兔同笼问题简直不假思索,本能一样。到了初中,你还是会发现,把鸡兔同笼问题设为 二元一次方程,只有这一步需要一些思考 (需要设鸡数为x,兔数为y),然后就是机械解题了。机械解题这一步,毫无智商可言。

自从有了火器,开枪杀敌,就跟体力关系不大了。工具,是人类肢体和头脑的延伸。

幸运的是,连逻辑推理,至少智力题这种程度上的,也可以用工具解决。你,加上工具,所表现出的智商,就显得很高。

当然,有一点需要点严谨。"凯特是你的秘书,问是不是办公室里至少有一个人长发及腰",这样的题目,你需要意识到 凯特 这一命名,并不意味着秘书的性别,也不 (而不是 更不) 意味头发的长度。甚至连这点严谨,如果你能使用接下来我要说的数学工具的话,也不太需要,因为当你把凯特抽象 (形式化) 为x的时候,你不能"显然"地找到性别的依据,只好认定条件不足。

2. 两道智力题的数理逻辑解法 示范

光说理论和类比,估计你也不信。下面演示两道题目。

2.1 谁是罪犯

这道题目就是从网上随便找来的。

A 说   不是我
B 说是 D
C 说是 B
D 说   B在诬陷他

假设他们其中有一个人说的是真话,那么谁是真的罪犯?

[http://zuoye.baidu.com/question/299842b63d6092288532e871ab55857c.html]

答案是: A是罪犯

有位答题的同学说,"一个一个假设为真,其余为假.只有D说的情况可以符合."

这种题目,通常有个非常漫长的解题过程: 假设A如何,然后一顿推导;假设B如何,然后又一顿推导。

下面的方法,来自从数学家 布尔 开始的方法,据说罗素和他的学生维特根斯坦在《数学原理》或《数学的原理》中首先提出了数理逻辑的这种推导手段。现在,这种方法广泛地记载在《离散数学》和《数字电路》的数理逻辑一章中。这些前辈证明了,逻辑推导与数学计算是等价的。

为了清晰,我们分3步走。

第1步,我们做个表格,横行代表每个人所说的,纵列代表假设某个人说的是真话,交叉的单元格代表在 这一假设 (某人说的是真的)下横行对应的那个人说的话是真的还是假的。

1|       a=1 b=1 c=1 d=1
2| A !a  ?   ?   ?   ?
3| B d   ?   ?   ?   ?
4| C b   ?   ?   ?   ?
5| D !d  ?   ?   ?   ?

大写 代表发言的人,小写 代表假设 (或观点中) 此人是罪犯。如,a=1 代表(假设) a是罪犯,!a 代表 (A的观点),a不是罪犯。

其中

第2行,"! a"代表 "A 说 不是我";

第3行,"d  "代表 "B 说是 D";

第4行,"b  "代表 "C 说是 B";

第5行,"!d "代表 "D 说   B在诬陷他",即 对B的观点 (d)取非。

a=1,并非严格的表述,它的含义是,a是罪犯,并且其他三个人都不是罪犯,所以,严格的表述是: a=1 & b|c|d = 0。本文为节省空间,"并非罪犯"在表头中从略,但是"推导"中仍然需要这一条件。

第2步,我们填充表格中的单元格,设为1为真 (某人是罪犯,这一命题属实) ,0为假。

1|       a=1 b=1 c=1 d=1
2| A !a  0   1   1   1
3| B d   0   0   0   1
4| C b   0   1   0   0
5| D !d  1   1   1   0

这是这么填上的,我举一个例子,如第2行的 "a=1" 这一列。

当 a = 1 时, 这一行 "!a" 的值为 ! 1,即0。

再举个例子,第5行"b=1"这一行。

当 b = 1 (并且 a|c|d=0,也即a、c、d都为0) 时,这一行 "! d"值为 ! 0,即1,

这一步里,有时我用到了一些数理逻辑 (布尔代数,完全不是逻辑推导)的小技巧。比如"a|c|d=0,也即a、c、d都为0",这是析取 (或)的特性;下面的题目里,还对蕴含作了化简,为了计算的时候更方便。值得指出的是,即使完全不使用这些技巧,也并不不会令解题难度增加多少。甚至,你只要能查到这个表达式对应的真值表,完全不会布尔代数也能解出来。因为题量小,速度也并不慢。上面这道题,填充表格,一共解了16个单一变量的表达式,都是可以秒出结果的。

第3步,查数。

我们可以注意到,第1步是把智力题 (的众人说的话这一条件) 转换为布尔代数,第2步是在布尔代数的领域中求值,第3步,把智力题的另一条件 ("假设他们其中有一个人说的是真话")用上。此处推荐 波利亚 《怎样解题》,他老人家说,只要到了卡住的地方,把所有已知条件 (及问题)都再捋一遍。

"假设他们其中有一个人说的是真话",就是把上面填充完的表格,纵向查一下,哪一列 只有一个1,其余的都是0。上面我提到过了,1代表属实。只有"a=1"符合这一要求。

意思就是,"a=1"就是答案,即a是罪犯。

回顾。

你可能会说,我这方法求了16个表达式,而如何使用"聪明"的逻辑推理,可能表达式 (或推理过程) 根本不需要这么多个。这就跟传说中的故事一样,据说P&G的博士生想了一堆办法,才解决了盒子里到底有没有装上肥皂,而民企的农民工架上台电风扇就解决了。博士的优势在于,他的知识结构和办法*总能*解决问题,而农民工及其办法下一次就不一定好使了。

你也可能会说,我这办法也不是智力 (或能力)啊,而是知识,只要你会,人人都能解决。这正是科学技术与巫术的区别。凡是人类,都能学会;学会以后,都能应用;应用以后,人人都变聪明了。注:这种聪明,不是时下中国人太多的那种聪明。

2.1 再来一道题,谁偷吃的

A说:是B偷吃的,

B说:是D偷吃的,

C说;我没有偷吃,

D说:B在撒谎!

其中有一人说了真话,谁偷吃了蛋糕?

[http://tgyd2006.iteye.com/blog/748679]

求得的表格是这样的:

     a=1 b=1 c=1 d=1
A b  0   1   0   0
B d  0   0   0   1
C !c 1   1   0   1
D !d 1   1   1   0

注: a=1意思是 a=1 & b|c|d=0。其余三列同。

因为只有1个人说了真话,所以查数,找到只有1个1的列,即"c=1"。

结论,C偷吃了。推论,D说了真话。

作为对比,给出某位网友的推理过程:

----引文开始

假设A说的是真话那么蛋糕就是B吃的,但是C说的是假话“我没吃”就是“我吃了”所以蛋糕是C吃的,有此看来A说的是真话不成立!

假设B说的是真话那么蛋糕是D吃的,但是D说的是假话“B在说谎”就是“B没说谎”,C同样说了假话“我没吃”就是“我吃了”所以B说的是真话也不成立!

假设C说的是真话那么B说的是假话“是D吃的”就是“不是D吃的”,D说的假话承认了是自己吃的,因为矛盾,所以C说的真话不成立!

假设D说的是真话A,B都说的假话,所以排除B,D吃蛋糕的嫌疑,因为C说的也是

假话,就是“我吃了”所以蛋糕就是被C给吃的,而真正说真话的人是D!

----引文结束

对比自然语言的推导,你可能已经感觉到,布尔代数的方法,是不需要智力 (和逻辑推导能力) ,甚至不需要注意力,也不需要注意力持久的。

工具,正具有这样的特性,让每一个平凡人成为更强的人。

3.知识的力量

上述用布尔代数解智力题,不需要逻辑能力;不过,这种方法确实需要你 知道这种方法 的存在。

这对很多人是个障碍: 我用现在的手段,已经能 (很好地)解决这个问题了,为什么我还要学新的技术呢?我生活在田园牧歌似的岁月 (和村庄)里,不是很浪漫么。

如果在田园中,你发现了一种植物,你沾到它,甚至靠近它,在特定的月份,就会皮肤发痒。你几乎确定这种植物以前根本不存在,你几乎断定它就是你过敏的感恩,你几乎确定它就是传闻中的入侵物种--但是,你不知道它的名字。

怎么办?

根据植物的照片,GOOGLE目前还不能告诉你那是什么植物,更不能告诉你如何消除。就像有同学在网上放出照片,养的花蔫得快死了。有网友说,你都把花养成这样了,还有脸放上来呐?楼主说,就是这样了,我才想放出来请教它叫什么名字,这样,才能查一下如何照料啊。

不知道,就是无知。无知而期待解决问题,就是把前人发明过的痛苦过的,再来一次。如果想利用前人的经验,你至少需要知道,前人把它叫做什么。

你必须先具备基础知识 (领域) ,然后才能检索。你需要知道如何把叶子、花的形状用文字描述出来,还有叶子间的关系、花之间的关系。像这样:总状花序、掌状叶裂...有位同学贴过照片,问蓝色的很漂亮的花是什么。蓝色、漂亮、花,对于判断物种都没有用,我根据叶序和花序查,是百合。另一次。我们带着一盆多肉植物去同学聚会,小杨同学的爱人老赵,看了一眼就说,"景天"。景天是一个科,很多多肉都属于这一科。这就是领域知识所带来的专业技能,他甚至连查表都不需要。他接着问,"什么是多肉?"

另外的知识的力量的故事。

包师弟极其睿智,到什么程度呢。他曾经看着函数的图像,通过研究函数的周期,起伏的程度,仅根据几组给定自变量的函数的形状写出了函数的公式:

cos(α+β)-cos(α-β)

这么复杂的式子,我当时的感觉就是,你还要不要人活了。在牛人面前,大抵是这种感觉。

我能记住这个故事的一个原因是,在此时,我表现出了"知识的力量"。知识附身,智力有加成。我把包师弟的公式化简了,化简的方法,其实我们初中都学过,就是和差化积。

-2sinαsinβ

然后我就可以说,函数的公式怎么会那么复杂呢~~

知道 和差化积,拉近了我和包师弟的智商。

另一次是包师弟在解决一个问题时,使用了非常繁复的方法,实现这个方法写了一个挺长的程序,花费了不少时间。后来某一次他详细描述这个方法的时候,我突然说,"线性外插"。关同学也说,对啊,这就是线性外插。线性外插,等价于那么长的代码和解释,而且,方法更加稳妥确定,因为有数学证明。后来,我们又发现,这种问题不应该使用线性外插,而是 拟合。

知道 线性外插、拟合,拉近了我和包师弟的智商。

所有这些知识,植物分类、和差化积、线性外插、拟合,还有可以替代逻辑推理的布尔代数 (数理逻辑,用计算代替推理),作为工具武装我们,使我们成为更强的人类,因此更加自由。

所以,怎么可以说,什么什么知识,不会不知道又如何呢。不会不知道,就是无知,因此无助,因此囚禁于牢笼之中而不得自由。钥匙,前人曾经使用过有效的,就在你的面前,只要你一伸手就可以拿到,而你,打算赤手空拳伏虎屠龙吗,打算喊叫别人帮忙带你自由,打算继续忍受?

知识,就是解放我们的那把钥匙。

-------

此博客会手工同步到以下地址:

//[http://zhuanlan.zhihu.com/younggift]

[http://zhuanlan.zhihu.com/wujun]

[http://giftdotyoung.blogspot.com]

[http://blog.csdn.net/younggift]

时间: 2024-10-03 06:02:13

当推理不需要逻辑能力,也兼 学习离散数学或数字电路有什么用处的相关文章

数学思维和逻辑能力

在无数个辗转反侧.难以入寐的夜晚,我用力地思考着一个问题:到底要不要走上编程这一条道路?想要成为一个合格的编程人员,深谙编程之道,这条路并不好走.或枯燥无味,或心力憔悴,但亦能寻到其中乐趣,发现常人难以发现的背后之美.所以,痛定思痛,决定搭上这辆于我而言的编程末班车. 接触编程,很多人第一个想法就是选择一门什么程序设计语言,我也为之苦恼了很久.找寻一圈,最后回到起点,发现了一个更加重要的东西:编程本身的思想.就此,我打一个简单的比方:学习程序设计就好比学习射击,编程语言就好比我们手里紧紧握住的枪

每天一个JS 小demo之原生数组splice方法书写。主要知识点:锻炼思维逻辑能力,对于数组方法的理解和各种情况的考量

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head> <body><script>/** splice(start, deleteCount, data1, data2, data3...)* */ var arr = ['a', 'b'

Linux逻辑卷管理LVM学习总结

LVM(Logical Volume Manager),它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,可以弹性的增加或减小分区的大小,使得磁盘分区管理更具灵活性.LVM的实现示意图: 创建LVM实例: 1.首先创建3个准备组成卷组VG的物理分区,并且把分区格式改为8e.以/dev/sdb1./dev/sdb2./dev/sdb3为例: #在/dev/sdb磁盘上创建分区/dev/sdb1./dev/sdb2./dev/sdb3,大小分别为3G.4G.

项目群的交付能力和经验学习

项目群将交付的能力是在蓝图中定义的.项目群会提供一个贴合组织的能力可以放到运营中应用,根据时间表,交付最大化的能力提升且做到影响最小. 项目范围和产出需要仔细规划:需要严格的识别和管理项目之间的依赖,明确理解项目群与项目的责任.一些项目的范围和质量的偏离据合到一起就会使项目群级别的所谓的"一致性"的缺失. 项目群需要关注更宏观的事情,且不应该接管项目管理的职责.然而,项目应被赋予清晰地方向应,且定期审查其是否与项目群蓝图和计划保持一致. 这确保了一起都可以做到,即从项目的产出平滑过渡到

Linux逻辑卷管理LVM学习总结备忘

LVM(Logical Volume Manager),它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,可以弹性的增加或减小分区的大小,使得磁盘分区管理更具灵活性.LVM的实现示意图: 创建LVM实例: 1.首先创建3个准备组成卷组VG的物理分区,并且把分区格式改为8e.以/dev/sdb1./dev/sdb2./dev/sdb3为例: #在/dev/sdb磁盘上创建分区/dev/sdb1./dev/sdb2./dev/sdb3,大小分别为3G.4G.

性能测试工程师的能力要求以及学习路线

很多学员都会问:1.如何才能成为NB的性能测试工程师?2.成为性能测试工程师都学习什么啊?3.loadrunner我需要学习到什么程度啊?............ 如何才能找到答案呢,我们根据岗位要求去完善和构建整个性能测试工程师的能力要求体系. 首先:分析性能测试工程师的岗位要求其次:根据岗位要求分析出能力要求然后:根据能力要求分析出知识要求最后:根据知识要求梳理学习体系 根据思路我收集整理了现有的市面上招聘所有的性能测试工程师的岗位需求(招聘网站)所有的性能测试工程师的岗位要求,根据这些岗位

java感想

Java学起来很有趣,通过学习Java可以提高自己的逻辑能力.在学习Java期间我们做了一些程序,我们班的同学也都积极准备,完成的还不错!在做程序时,我遇到了一些难题,有时也会出现错误,时间长了弄得我心烦意乱,但是我知道只有坚持下去才会成功.     因为Java是一种面向对象的编程语言,刚接触Java的人可能会感觉比较抽象,不过没关系不用着急,上课的时候认真听老师讲解,一些概念知识慢慢去理解,课后多做练习,熟能生巧,哪怕是你的记性再好,课后不去强化练习也没用,只有多练了,当你在做项目时你才能很

论逻辑思维和理解能力对程序员的重要性

我带开发团队,喜欢把手底下成员分为4种类型. 1.逻辑思维厉害且理解能力好的人 2.逻辑思维厉害但理解能力差的人 3.逻辑思维一般但理解能力好的人 4.逻辑思维一般且理解能力差的人 这样分有助于更好的分配任务和控制风险,比如: 第一种逻辑思维厉害且理解能力好的人,这种一般都是高级程序员了,团队的骨干,那么一般会把核心的复杂的模块安排给他完成,过程中的设计.编码都无需操太多心,只需最后检查一下完成成果即可,给他更多的自主空间. 第二种逻辑思维厉害但理解能力差的人,这种一般都是刚毕业不久,工作经验不

机遇只青睐有准备的人(成为学习型动物,培养选择的能力:不断思考哪些人、事、物对我最重要,拥抱不确定性)

那天在IT职业咨询QQ群里聊天,提到腾讯.阿里,我说跟着这两家公司从小到大的朋友,都获得了不菲的回报,成了富翁或者财务自由了. 有群友感叹说:“是啊,我们错过了那么多机会.” 看到这句话,我心里一动,是啊,我们是错过了不少机会,可是,眼下还有很多机会,我们怎么样知道它是机会并且抓住它呢? 什么是机会 马云经历两次创业失败后,第三次凑了50万在马云家里创业,最多时一个房间坐35个人:马化腾曾经想要60万卖掉QQ却找不到买家……如果把我们放在那样一个时刻和情境下,你会选择跟着双马走下去吗? 恐怕大多