解决逻辑推理问题的关键是,根据题目中给出的各种已知条件,提炼出正确的逻辑关系,并将其转换为用Python语言描述的逻辑表达式。Python语言提供基本的关系运算符和逻辑运算符,可以用来构建各种逻辑表达式。在解决逻辑推理问题时,一般使用枚举法,也就是使用循环结构将各种方案列举出来,再逐一判断根据题目建立的逻辑表达式是否成立,最终找到符合题意的答案。
逻辑推理的种类按推理过程的思维方向划分:一类是从特殊到一般的推理,推理形式主要有归纳、类比;另一类是从一般到特殊的推理,推理形式主要有演绎。
(1)归纳推理是由特殊的前提推出普遍性结论的推理,主要有完全归纳法、不完全归纳法、简单枚举法、科学归纳法等类型。
(2)类比推理是从特殊性前提推出特殊性结论的一种推理,也就是说,从一个对象的属性推出另一对象也可能具有这个属性,这种思维形式在创造学中称为“相似思维”。
(3)演绎推理是由普遍性的前提推出特殊性结论的推理,有三段论、假言推理和选言推理等形式。
逻辑推理与因果关系的区别主要有以下几点:
(1)两者最根本的区别是逻辑推理不考虑时间因素,而因果关系却必须考虑时间因素。
(2)逻辑推理的条件是有限的,而在任何一个因果关系中,“条件”实际上是无限的。在逻辑推理中,有时一个条件即可推出一个结论,有时多个条件才能推出一个结论。但即使多个条件推出一个结论,这些条件的个数也都是有限的。但现实中的因果关系却大不相同,与结果现象有关的条件实际上是无限(多)的,无法把它们穷举出来。
(3)逻辑推理中(主要指演绎推理),条件必然蕴涵结论。但在因果关系中,原因并不必然蕴涵结论,而只有在“条件”都已经具备的情况下,原因的出现才会引起结果的发生。
(4)因果关系是“现实”关系,只有在原因现象和结果现象已经发生之后,我们才说原因A和结果B之间存在“因果关系”。而“逻辑推理”是一种“理论”推导,它不需要任何现实性做支撑,条件就必然蕴涵结论。
逻辑推理解决离散数学问题是非常有用的方法,下面通过两个例子演示使用Python实现命题逻辑等值演算应用。
【例3-5】 陈教授是哪里人。
解析: 在某次研讨会的中间休息时间,3名参会者根据王教授的口音对他是哪个省(区、市)的人判断如下:
A:陈教授不是四川人,是广东人。
B:陈教授不是广东人,是四川人。
C:陈教授既不是广东人,也不是重庆人。
听完这3人的判断后,陈教授笑着说,你们3人中有一人说得全对,有一人说对了一半,另一人说得全不对。下面分析陈教授到底是哪里人。
运行程序,输出如下:
陈教授是四川人
【例3-6】 谁是班委。
在某班班委成员的选举中,已知刘小红、张三强、丁小仙3名同学被选进了班委会。该班的3名同学猜测如下:
A:刘小红为班长,张三强为生活委员。
B:丁小仙为班长,刘小红为生活委员。
C:张三强为班长,刘小红为学习委员。
班委会分工名单公布后发现,3人都恰好猜对了一半,问:刘小红、张三强、丁小仙各任何职。
运行程序,输出如下:
张三强为生活委员 丁小仙为班长 刘小红为学习委员