编程逻辑入门必备:演绎推理

Posted 沛沛老爹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程逻辑入门必备:演绎推理相关的知识,希望对你有一定的参考价值。

前言

某日,老师在课堂上想考考学生们的智商,就问一个男孩: “树上有十只鸟,开枪打死一只,还剩几只?”

男孩反问:“是无声的那种枪吗?”

“不是.”

“枪声有多大?”

“80~100 分贝.”

“那就是说会震的耳朵疼?”

“是.”

“在这个城市里打鸟违法吗?”

‘不违法.”
“您确定那只鸟真的被打死啦?”

“确定.”老师已经不耐烦了,”拜托,你告诉我还剩几只就行了,OK?”

“OK.鸟里有没有聋子?”

“没有.”
“有没有鸟智力有问题,呆傻到听到枪响不知道飞的?”

“没有,智商都在 200 以上!”

“有没有关在笼子里的?”

“没有.”

“边上还有没有其他的树,树上还有没有其他鸟?”

“没有.” “方圆十里呢?” “就这么一棵树!”

“有没有残疾或饿的飞不动的鸟?”

“没有,都身体倍棒.”

“算不算怀孕肚子里的小鸟?”

“都是公的.”

“都不可能怀孕?”

“………,决不可能.”

“打鸟的人眼里有没有花?保证是十只?”

“没有花,就十只.” 老师脑门上的汗已经流下来了,

下课铃响起,但男孩仍继续问:“有没有傻的不怕死的?”

“都怕死.”

“有没有因为情侣被打中,自己留下来的?”

“笨蛋,之前不是说都是公的嘛!”

“**可不可以啊!”

“………….,取向都很正常!”

“会不会一枪打死两只?”

“不会.”

“一枪打死三只呢?”

“不会.”

“四只呢?”

“更不会!”

“五只呢?”

“绝对不会!!!”

“那六只总有可能吧?”

“除非是猪生的才有可能!一枪只能打死一只!”

“…好吧,那么所有的鸟都可以自由活动么?”

“完全可以.”

“它们受到惊吓起飞时会不会惊慌失措而互相撞上?”

“不会,每只鸟都装有卫星导航系统,而且可以自动飞行.”

“恩,如果您的回答没有骗人,”学生满怀信心的回答,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩.”

演绎推理初探

所谓演绎推理,就是从一般性的前提出发,通过推导即“演绎”,得出具体陈述或个别结论的过程。

演绎推理是一种必然性推理。

演绎推理的主要作用

  1. 检验假设和理论:演绎法对假说做出推论,同时利用观察和实验来检验假设。
    这个就不作过多的讨论了,高中学到的很多的数学证明题就是基于这个。

  2. 逻辑论证的工具:为科学知识的合理性提供逻辑证明。
    在物理和数学界很多的知识都是基于演绎推理来的。例如天体物理方面。

  3. 作出科学预见的手段:把一个原理运用到具体场合,作出正确推理。
    很多大数据的预判都是基于演绎推理的一种展示形式。例如谷歌作出的新冠疫情的一个人数增长的判断。它为后面的医疗预防作出了很大的贡献。

常见的演绎推理形式

三段论

what:什么是三段论

三段论它是以一个一般性的原则(大前提)以及一个附属于一般性的原则的特殊化陈述(小前提),由此引申出一个符合一般性原则的特殊化陈述(结论)的过程。

简单点来讲,就是包含三个项:

  1. 大前提:已知的一般性原则。
  2. 小前提:特殊化陈述(情况)。
  3. 结论:根据一般性原则,对特殊的情况作出的判断结果。

why:为什么要认识三段论

  1. 三段论是演绎推理中的一种简单判断推理。
  2. 三段论是人们进行数学证明、办案、科学研究等思维时,能够得到正确结论,的科学性思维方法之一。
  3. 三段论是演绎推理中的一种正确思维的形式。

how:怎么用好三段论

用好三段论的前提,是你需要了解三段论的一般推理规则。在使用的时候不要脱离低级趣味(规则)就可以了,否则就有可能陷入了白马非马的境地了。
1.** 规则1:一个正确的三段论,有并且只有三个不同的项。**

三段论的实质就是借助中项作为媒介,使大小项发生逻辑关系,从而导出结论的。

如果一个三段论只有两个词项或四个词项,那么大小项就找不到一个联系的共同项,因而无从确定大小项之间的关系。因此,一个正确的三段论仅允许有三个不同的词项。

简单点来讲就是一定有三项,否则,就变成了大眼瞪小眼,白瞎了。
  1. 规则2:三段论的中项至少要周延一次。

    中项是联系大小前提的媒介。如果中项在前提中一次也没有周延,那么,中项在大、小前提中将会出现部分外延与大项相联系,并且部分外延与小项相联系,这样大、小项的关系就无法确定。

    一个正确的三段论(只要两个前提不都是否定的),它的中项至少应周延一次。

    周延是指判断本身直接或间接地对其主项(或谓项)的全部外延作了表述的,就称这个判断的主项(或谓项)是周延的,反之不周延。
    比如:凡奇数都是整数。
    这个判断对它的主项“奇数”的全部外延(即所有的对象)作了判断(“凡”即“所有”之意),那么它的主项“奇数”是周延的。而这个判断对它的谓项“整数”的全部外延没有做出判定,既没有说“整数”的全部是什么,也没有说“整数”的全部不是什么,我们就说它的谓项“整数”是不周延的。
    来源百度百科

  2. 规则3:在前提中不周延的词项,在结论中不得周延。

    如果前提中的大项或小项是不周延的,那么它们的大项或小项的外延就没有被全部断定,所以在结论部分就不能判定当前是结论是否准确。

    能够偶然推出真实结论的推理形式并非是有效的,凡是有效推理的逻辑形式,代入任何推理内容,只要前提真实,就一定能够推出真实的结论。

  3. 规则4: 两个否定前提,则中项同大小项发生排斥推不出结论

    如果两个前提都是否定的,那么中项同大小项发生排斥。这样,中项就无法起到联结大小前提的作用,小项同大项的关系也就无法确定,因而推不出结论。

    例如,阿三不是美国人,张三不是阿三,所以张三不是美国人。(这个形式是无效的)。

    注:在古代的各种诡辩明场面里面,你会发现各个大神都喜欢用这种偷换概念的方式来作弊。

假言推理

what:什么是假言推理

假言推理是根据假言命题的逻辑性质进行的推理。假言推理可分为充分条件假言推理、必要条件假言推理和充分必要条件假言推理等3种。

1.充分条件假言推理

充分条件假言推理是根据充分条件假言命题的逻辑性质进行的推理。

充分条件假言推理有两条规则:

规则1:肯定前件,就要肯定后件;否定前件,不能否定后件。

规则2:否定后件,就要否定前件;肯定后件,不能肯定前件。

在充分条件假言推理中,由前件可以推出后件,但并不能由后件推出前件。

2. 必要条件假言推理
必要条件假言推理是根据必要条件假言命题的逻辑性质进行的推理。

必要条件假言推理有两条规则:

规则1:否定前件,就要否定后件;肯定前件,不能肯定后件。

规则2:肯定后件,就要肯定前件;否定后件,不能否定前件。

3.充分必要条件假言推理

充分必要条件假言推理是根据充分必要条件假言命题的逻辑性质进行的推理。

充分必要条件假言推理有两条规则:

规则1:肯定前件,就要肯定后件;肯定后件,就要肯定前件。

规则2:否定前件,就要否定后件;否定后件,就要否定前件。

why:为什么要学习假言推理

假言推理可以让你在考虑程序的实现的时候,可以考虑到各个方面之间的条件,帮助你在写代码的时候,可以更加充分的考虑各种条件(即程序中所说的特定场景),避免出现鲁棒性不够,导致在特定的环境下异常。

how:怎么用好假言推理

1、平时多锻炼,这个少不了,不要想着自己是天选之子,风来了自己就可以飞上天。
2、拿到任务的时候,多动动笔,不要只靠着脑子(脑子有的时候会欺骗人的)。公司给你发的笔和本子,不应该只用在会议上来画圈圈的。
3、多读书。

选言推理

what: 什么是选言推理

选言推理是指传统逻辑里一类有两个前提的演绎推理,其中一个前提是选言命题,另一个是该选言命题的支命题的负命题。

选言命题
命题中包含两个(或两个以上)的选择,则称之为选言命题。即可选命题。

选言命题分为相容和不相容之分。

  1. 相容选言:指两个选言是相容的,可以多选。
  2. 不相容选言:指两个选言是不相容的,只能单选。

1. 相容选言推理

相容选言推理的基本原则是:大前提是一个相容的选言判断,小前提否定了其中一个(或一部分)选言支,结论就要肯定剩下的一个(或一部分)选言分支。

相容选言两条规则:

规则1:否定一部分选言分支,就要肯定另一部分选言分支。

规则2:肯定一部分选言分支,不能否定另一部分选言分支。

想想switch…case 实现的方式

2.不相容选言推理

由于不相容选言中的选言支是不相容的,因此,否定一部分选言支,就会肯定另一部分选言支;并且,肯定一部分选言支,就要否定另一部分选言支。

不相容选言两条规则:::

规则1:否定一部分选言支,就要肯定另一部分选言支。

规则2:肯定一部分选言支,就要否定另一部分选言支。

想想if…else 实现的方式

why:为什么要学选言推理

我们看下程序的组成。
程序 = 算法 + 数据。
算法 = 逻辑 + 流程(控制)。

在逻辑中,我们不可避免的会遇到各种各样的判断条件。判断条件中使用到的逻辑思维大部分用到了选言推理。

例如:
if…else:不相容选言思维。

switch…case:相容选言思维。

掌握了选言推理,可以让程序更健壮。

how:怎么用好选言推理

在使用选言推理的时候,根据实际情况去判定当前是相容还是不相容,然后使用对应的思维去实现程序。

关系推理

what:什么是关系推理

所谓关系推理,是指前提至少有一个是关系判断,并按其关系的逻辑性质而进行推演的演绎推理。

关系推理分直接关系推理和间接关系推理。

直接关系推理

例如:如果A>B 则 B<A。

间接关系推理

例如:如果A>B, B>C 则 A>C。

混合关系推理

前提中既有关系判断又有性质判断,结论是关系判断的推理。

例如:所有甲班同学都比乙班同学高,所有A组同学都是乙班同学,所以,所有甲班同学都比A组同学高。

why:为什么要关系推理

关系推理是一种延展性。可以帮助我们更好的理解事务(类)的特征等。

例如程序中的继承就用到了关系推理的思维。

how:怎么用好关系推理

  1. 程序设计中的时候,在使用继承特性的时候,多考虑考虑关系推理,在设计类的时候,关系就比较清晰明了。

  2. 自己再想想哪里能用得到关系推理。

演绎推理总结

所谓推理,是指由一个或几个已知的判断(前提),推导出一个未知结论的思维过程。推理的作用是从已知的知识得到未知的知识,特别是可以得到不可能通过感觉、经验掌握的未知知识。

演绎推理从一般规律出发,运用逻辑证明或数学运算,得出特殊事实应遵循的规律。

演绎推理是前提和结论之间具有必然联系的推理,是前提与结论之间具有充分条件或充分必要条件联系的必然性推理。

演绎推理的逻辑形式对于理性的重要意义在于,它对人的思维保持严密性、一贯性有着不可替代的校正作用。这是因为演绎推理保证推理有效的根据并不在于它的内容,而在于它的形式。

演绎推理最典型、最重要的应用**,**通常存在于逻辑和数学证明中。

以上是关于编程逻辑入门必备:演绎推理的主要内容,如果未能解决你的问题,请参考以下文章

演绎推理之三段论

编程逻辑入门必备2:归纳推理

编程逻辑入门必备2:归纳推理

数理逻辑命题逻辑的等值演算与推理演算 ( 命题逻辑 | 等值演算 | 主合取 ( 析取 ) 范式 | 推理演算 ) ★★

关于软件验证中的单元测试

数理逻辑