书名:《离散数学(上)》
清华大学计算机系的教材
离散数学(discrete mathematics)是计算机科学基础理论的核心课程。它包括数理逻辑、集合论、代数结构、图论、形式语言、自动机和计算集合等。
第一章 命题逻辑的基本概念
第一节 命题
一、什么是命题
命题是一个非真即假的陈述句。
1)命题是一个陈述句。
2)该陈述句表达的内容非真即假。
我们把这样的命题逻辑成为二值逻辑,把以这样命题作为研究对象的逻辑成为古典逻辑。
二、命题变量
我们约定用大写字母表示命题,用小写字母表示命题变量。命题是指具体的陈述句,是有确定的真值;而命题变量的真值不定,只当将某个具体命题代入命题变量时,命题变量化为命题,方可确定其真值。
三、简单命题和复合命题
不能分解成更简单的命题的组合的命题称为简单命题。它又称原子命题,它是不包含任何的与、或、非一类联结词的命题。
把一个或者几个简单命题用联结词(如与、或、非联结所构成的命题称为复合命题,也称为分子命题。
第二节 命题联结词及真值表
联结词分为两类:
1)真值联结词,由此联结词构成的复合命题的真假完全由构成它的简单命题的真假决定。
2)非真值联结词,由此联结词构成的复合命题的真假不完全由构成它的简单命题的真假来确定。
一、否定词 ┑
否定词“┑”是个一元联结词。一个命题P加上否定词就构成了一个新的命题。记作 ┑P,这个新命题是命题P的否定,读作 非P
命题P与命题非P的真假是互异的。
二、合取词 ∧
合取词“∧”是个二元命题联结词。合取词将两个命题P、Q联结起来,构成一个新命题P∧Q,读作P、Q的合取,也可读作P与Q。其中P、Q可以是简单命题,也可以是复合命题。
只有P、Q都为真时,P与Q才为真,否则为假。
即:
P=T
Q=T
P∧Q=T
三、析取词 ∨
析取词“∨”是个二元命题联结词,将两个命题P、Q联结起来,构成一个新命题P∨Q,读作P、Q的析取,也读作P或Q.
只有P、Q都为假(F)时,P∨Q才为假,否则P∨Q为真。
即:
P=F
Q=F
P∨Q=F
四、蕴涵词 →
蕴涵词“→”也是个二元命题联结词,将两个命题P、Q联结起来,构成一个新命题P→Q,读作如果P则Q,或读作P蕴涵Q,如果P那么Q。其中P称前件(前项,条件),Q称后件(后项,结论)。
规定只有当P为真而Q为假时,P→Q=F,否则P→Q=T
即:
P=T
Q=F
P→Q=F
P→Q=T下,若P=T必有Q=T,这表明P→Q体现了P是Q成立的充分条件。
P→Q下,若P=F可有Q=T,这表明P→Q体现了P不必是Q成立的必要条件。
P→Q的真值表
P Q P→Q
F F T
F T T
T F F
T T T
┑P∨Q的真值表
P Q ┑P∨Q
F F T
F T T
T F F
T T T
在P、Q的所有取值下,P→Q同┑P∨Q都有相同的真值
即:P→Q=┑P∨Q
真值相同的等值命题以等号联结。这说明→可由┑、∨来表示,从逻辑上看“如果P则Q”同“非P或Q”是等同的两个命题。
五、双条件词 =
双条件词“=”(有的书中用的是双箭头号表示)同样是个二元命题联结词,将两个命题P、Q联结起来构成新命题P=Q,读作P当且仅当Q或P等值Q.
只有当两个命题P、Q的真值相同时,P=Q的真值方为T
P=Q的真值表
P Q P=Q
F F T
F T F
T F F
T T T
第三节 合式公式(简称为公式)
合式公式定义:
1.简单命题是合式公式
2.如果A是合式公式,那么┑A也是合式公式
3.如果A、B是合式公式,那么(A∧B)、(A∨B)、(A→B)、(A=B) 也是合式公式
4.当且仅当经过有限次地使用1,2,3所组成的符号串才是合式公式。
约定联结词按┑、∨、∧、→、=的排列次序安排优先的级别。
第四节 重言式
一、定义
命题公式中有一类重言式,如果一个公式,对于它的任一解释I其真值都为真,就称其为重言式(永真式)。如P∨┑P是重言式。
显然,由∨、∧、→、=联结的重言式仍是重言式。
一个公式,如有某个解释I0,在I0下该公式真值为真,则称其是可满足的。
如果一个公式,对于它的任一解释I其真值都为假,就称其为永假式(矛盾式)或不可满足的。如P∧┑P就是矛盾式
这三类公式的关系:
1.公式A永真,当且仅当┑A永假
2.公式A可满足,当且仅当┑A非永真
3.不是可满足的公式必永假
4.不是永假的公式必可满足
二、代入规则
A是一个公式,对A使用代入规则得公式B,若A是重言式,则B也是重言式。
为保证重言式经代入规则仍得到保存,要求:
1.公式中被代换的只能是原子命题,而不能是复合命题。
2.对公式中某命题变项施以代入,必须对该公式中出现的所有同一命题变项代换同一公式。
第五节 简单自然语句的形式化
一、简单自然语句的形式化
二、较复杂自然语句的形式化
第六节 波兰表达式
一、计算机识别括号的过程
合式公式的定义中使用的是联结词的中缀表示,又引入括号以便区分运算次序,这些是人们常用的方法。
计算机识别处理这样表示的公式的方法,需要反复自左向右,自右向左的扫描。如对公式
(P∨(Q∧R))∨(S∧T)
真值的计算过程,开始从左向右扫描,至发现第一个右半括号为止,便返回至最近的左半括号,得部分公式(Q∧R)方可计算真值,随后又向右扫描,至发现第二个右半括号,便返回至第二个左半括号,于是得部分公式(P∨(Q∧R))并计算真值,重复这个过程直至计算结束。
二、波兰式
一般地说,使用联结词构成公式有三种方式,中缀式如P∨Q,前缀式如∨PQ,后缀式如PQ∨
前缀式用于逻辑学是波兰的数理逻辑学家J. Lukasiewicz提出的, 称之为波兰表示式。
如将公式(P∨(Q∧R))∨(S∧T)的这种中辍表示化成波兰式,可由内层括号逐步向外层脱开(或由外层向里逐层脱开)的办法
公式(P∨(Q∧R))∨(S∧T)的波兰式表示:
∨P∧∨QRS
以波兰式表达的公式,由计算机识别处理的过程,当自右向右扫描时可以一次完成,避免了重复扫描。同样后辍表示(逆波兰式)也有同样的优点,而且自左向右一次扫描(看起来更合理)使可识别处理一个公式,很是方便,常为计算机的程序系统所采用,只不过这种表示的公式,人们阅读起来不大习惯。