本文主要是介绍离散数学1:数理逻辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 逻辑的基本成分——命题。
- 将命题形式化
- 逻辑联结词
- 命题公式
- 对命题公式的分析
- 公式的层次
- 真值表
- 等值演算
- 范式
- 简单析取式、简单合取式
- 析取范式、合取范式
- 主析取范式
- 主合取范式
- 主析取、合取范式的总结
逻辑规则给出数学语句的准确含义。
逻辑的基本成分——命题。
命题是一个非真即假的陈述句。命题的判断结果称作命题的真值,真值只有两种值:真、假。任何命题的真值都是唯一的。(真值不唯一的命题变元不是命题。)
- 简单命题(原子命题):不能再被分解的命题
- 复合命题:由简单命题通过联结词联结而成的命题
注意:简单命题一定是肯定语气。
简单命题又称为命题常元。而命题变元不能确定真值,不属于命题。
判断是否是命题的方法:先判断是否为陈述句,再判断是否有唯一的真值。
注意:只需判断是否有唯一解即可,具体是真还是假并不重要。
- x > y (x,y是任意的两个数)
不是命题, 是命题变元。由于x与y的不确定性, 使得该陈述句的真值不惟一。 - 明年今天是晴天
是命题。尽管不知道真假,但可以确定的是 该语句只有一种真值。 - 我正在说假话
该语句属于悖论,不是命题。
像这样由真能推出假、又由假能推出真,从而既不能为真,也不能为假的陈述句称作悖论。
将命题形式化
符号化时,p、q应设为简单命题(肯定句)。
逻辑联结词
注意:逻辑联结词表示的是命题与命题之间的关系。 整体上形成的是一个新的复合命题,给定每个原子命题的真值,那么该复合命题的真值随之确定。
- p的否定式(p不成立)—— ¬ p \neg p ¬p
- p与q的合取式(p、q同时成立)—— p ∧ q p\land q p∧q
使用联结词 ∧ \land ∧需要注意两点:
其一是 ∧ \land ∧的灵活性。自然语言中的“既…又…”、“不但…而且…”、“虽然…但是…”等表示的都是两件事同时成立。因此都应该符号化为 ∧ \land ∧
其二,不要见到“与”、“和”就使用 ∧ \land ∧
- 小王和小李都是三好学生——可以符号化为 ∧ \land ∧
- 小王和小李是同学——不可以以符号化为 ∧ \land ∧
该句中“小王和小李”整体是该命题的主语,因此仍是简单陈述句,属于一个原子命题即:注意分清联结词“并且、和、与”联结的是句子成分,还是两个独立的句子,从而分清简单命题与复合命题。
- p与q的析取式(p、q至少有一个成立)—— p ∨ q p \vee q p∨q
析取联结词 ∨ \vee ∨与自然语言中的“或”不完全一样。自然语言中的“或”具有二义性,它有时具有相容性(即它联结的两个命题可以同时为真),有时又具有排斥性(只有当一个为真、一个为假时才为真),分别称之为“相容或”、“排斥或”。
“相容或”应符号化为 p ∨ q p\vee q p∨q,“排斥或”应符号化为 ( p ∧ ¬ q ) ∨ ( ¬ p ∧ q ) (p\land \neg q)\vee(\neg p \land q) (p∧¬q)∨(¬p∧q),也可符号化为 ( p ∨ q ) ∧ ¬ ( p ∧ q ) (p\vee q)\land \neg( p \land q) (p∨q)∧¬(p∧q)(“排斥或”即“异或 ⨁ \bigoplus ⨁”)
- 小明爱唱歌或爱听音乐
属于“相容或”,因此符号化为 p ∨ q p\vee q p∨q- 小明只能挑选202或203房间
属于“排斥或”,因此符号化为 ( p ∧ ¬ q ) ∨ ( ¬ p ∧ q ) (p\land \neg q)\vee(\neg p \land q) (p∧¬q)∨(¬p∧q)
“相容或” p ∨ q p\vee q p∨q与“排斥或” ( p ∧ ¬ q ) ∨ ( ¬ p ∧ q ) (p\land \neg q)\vee(\neg p \land q) (p∧¬q)∨(¬p∧q)的区别在于:当p与q同时为真时,相容或为真,排斥或为假。因此当p、q不能同时为真时,“相容或”与“排斥或”相同。
即:当客观事实上p、q不可能同时发生时,“排斥或”也可以符号化为 p ∨ q p \vee q p∨q
例如: p p p:王冬生于1971年 , q : ,q: ,q:王冬生于1972年
- p与q的蕴涵式(q是p的必要条件)—— p → q p\rightarrow q p→q
规定 p → q p\rightarrow q p→q为假当且仅当 p 真 q 假 p真q假 p真q假
自然语言中,q是p的必要条件有许多不同的叙述方式。例如:“只要p,就q”、“因为p、所以q”、“只有(除非)q,才p”、“p仅当q”、“q当p”…等,这些语句都应符号化为 p → q p\rightarrow q p→q
描述 | 符号化 |
---|---|
只有A,才B | B → A B\rightarrow A B→A |
除非A,才B | B → A B\rightarrow A B→A |
A仅当B | A → B A\rightarrow B A→B |
A当B | B → A B\rightarrow A B→A |
除非A,否则B | ¬ A → B \neg A\rightarrow B ¬A→B |
- p与q的等价式(p、q互为充要条件)—— p ↔ q \leftrightarrow q ↔q
也可以表示为 ( p → q ) ∧ ( q → p ) 、 ( p → q ) ∧ ( ¬ p → ¬ q ) (p \rightarrow q) \land (q \rightarrow p)、(p \rightarrow q) \land (\neg p\rightarrow \neg q) (p→q)∧(q→p)、(p→q)∧(¬p→¬q)
例题:
- 虽然2能整除4,但2不能整除5 —— p ∧ ¬ q p\land \neg q p∧¬q (p:2能整除4,q:2能整除5)
- 虽然他没上过大学,但是他自学成才 —— ¬ p ∧ q \neg p\land q ¬p∧q (p:上过大学,q:自学成才)
- 除非4是奇数,否则5不是奇数 —— ¬ p → ¬ q \neg p\rightarrow \neg q ¬p→¬q(p:4是奇数,q:5是奇数)
- 种瓜得瓜,种豆得豆 —— ( p → q ) ∧ ( r → s ) (p\rightarrow q)\land (r\rightarrow s) (p→q)∧(r→s)
- 经一事,长一智,且不经一事,不长一智 —— ( p → q ) ∧ ( ¬ p → ¬ q ) (p\rightarrow q)\land (\neg p\rightarrow \neg q) (p→q)∧(¬p→¬q) 即 p ↔ q p\leftrightarrow q p↔q
- 经一事,长一智,且不长一智,不经一事 —— ( p → q ) ∧ ( ¬ q → ¬ p ) (p\rightarrow q)\land (\neg q\rightarrow \neg p) (p→q)∧(¬q→¬p) 即 p → q p\rightarrow q p→q
- 根号5是无理数 —— p
- 只要别人有困难,老王就帮助别人,除非困难解决了 —— ¬ r → ( p → q ) \neg r\rightarrow (p\rightarrow q) ¬r→(p→q)(p:别人有困难,q:老王帮助别人,r:困难解决了)
当A为矛盾式时, A ∨ C ⇔ A ∨ B A\vee C\Leftrightarrow A\vee B A∨C⇔A∨B可以推出 B ⇔ C B\Leftrightarrow C B⇔C;
当A为重言式时, A ∧ C ⇔ A ∧ B A\land C\Leftrightarrow A\land B A∧C⇔A∧B可以推出 B ⇔ C B\Leftrightarrow C B⇔C.
命题公式
对命题公式的分析
公式的层次
- 若A为单个的命题变元或常元,则称A为 0 0 0层公式
- 若B、C分别为 i 、 j i、j i、j层公式,则
- A = ¬ B A=\lnot B A=¬B为 i + 1 i+1 i+1层
- A = B ∧ C A= B \land C A=B∧C为 m a x ( i , j ) + 1 max(i, j)+1 max(i,j)+1层
- A = B ∨ C A= B \vee C A=B∨C为 m a x ( i , j ) + 1 max(i, j)+1 max(i,j)+1层
- A = B → C A= B \rightarrow C A=B→C为 m a x ( i , j ) + 1 max(i, j)+1 max(i,j)+1层
- A = B ↔ C A= B \leftrightarrow C A=B↔C为 m a x ( i , j ) + 1 max(i, j)+1 max(i,j)+1层
注意:命题公式不是命题,其真值是不确定的。只有将公式中的所有命题变元用确定的命题带入时(称之为“赋值”、“解释”),才成为一个命题(真值确定)。这个命题的真值取决于所带入的这组命题的真值。
- 使命题公式为真的一组赋值——成真赋值
- 使命题公式为假的一组赋值——成假赋值、
显然,含n个命题变元的命题公式有 2 n 组赋值
真值表
用真值表求成真赋值、成假赋值。
若一个公式含有 n n n个命题变元和 k k k个逻辑联结词,则真值表的规模为 2 n × ( k + n ) 2^n\times (k + n) 2n×(k+n)。
在列这 2 n 2^n 2n种赋值时,应从00…0开始,以二进制加法的顺序,依次写出每个赋值,直到11…1为止。
A为可满足式,即A至少存在一组成真赋值。
若公式A和公式B的真值表的最后一列相同,说明这两个真值表相同,即A与B是等值的。
等值演算
给定n个命题变元,由递归形成的命题公式是无穷多的,但在这些公式中,逻辑不同的的命题公式却是有限的,也即真值表的种数是有限的。
对于公式A,B,若等价式 A ↔ B A \leftrightarrow B A↔B为重言式,则称A,B是等值的,记为 A ⇔ B A\Leftrightarrow B A⇔B。即对于任意一组命题变元的取值,A、B的真值均相同。
可以通过比较真值表的最后一列来判断两个公式是否等值。
证明公式等值的另一个方法是:利用已知的等值式通过代换得到新的等值式。
注意:用等值演算法可以验证两个公式等值,但不能直接用等值演算法验证两个公式不等值,不过可以先分别用等值演算法将两个公式化为容易观察真值的形式,再比较真值,只需找到一组成真赋值是另一个公式的成假赋值即可。
证明一个公式为重言式时,若该公式为非等价形式,则最终证明其等值于1。 p ⇔ . . . ⇔ 1 p\Leftrightarrow ... \Leftrightarrow1 p⇔...⇔1;
若该公式为等价形式 p ↔ q p \leftrightarrow q p↔q,则证明方式为: p ⇔ . . . ⇔ q p\Leftrightarrow...\Leftrightarrow q p⇔...⇔q
证明一个公式为矛盾式,即证明该公式等值于0.
应用:
1,联结词完备集
同一个命题公式可用各种联结词构成无数种不同形式的等值公式,我们所使用的联结词有5个: { ¬ , ∧ , ∨ , → , ↔ } \{\neg,\land,\vee,\rightarrow,\leftrightarrow\} {¬,∧,∨,→,↔},我们也可以将现有的联结词扩充得更多, 但在不增加变元个数的前提下, 那些扩充实际上都没有意义, 因为它们都可以用现有的五个联结词来表示。那么这5个联结词就都是必要的吗?该联结词完备集中是否含冗余的联结词?
结论: { ¬ , ∧ } \{\neg,\land \} {¬,∧}, { ¬ , ∨ } \{\neg,\vee\} {¬,∨}是极小的联结词完备集。即仅使用两个联结词就可以表示所有的公式。
将已知的命题公式等值地化成给定的联结词完备集中的公式,所得的答案不唯一。
使用德摩根律实现合取和析取之间的转化。
题型:在某个联结词完备集中的形式——即将公式化为只含这些联结词的形式。
2,
主要思想为:将条件与结果符号化,形成一个命题公式: 条 件 ∧ 结 果 条件\land 结果 条件∧结果,对该命题公式进行等值演算。
范式
把所有命题公式都规范化为一种统一的格式,这种规范的表达式能表达真值表所能提供的一切信息,以便于命题公式之间的比较。
简单析取式、简单合取式
将 p p p和 ¬ p \neg p ¬p(p为命题变元)统称为文字.
仅由有限个文字构成的析取式称作简单析取式. 仅由有限个文字构成的合取式称作简单合取式.
- 一个简单合取式为矛盾式 当且仅当 它同时包含某个命题变元及其否定式,即该简单合取式中包含 p ∧ ¬ p p \land\neg p p∧¬p
- 一个简单析取式为重言式 当且仅当 它同时包含某个命题变元及其否定式,即该简单合取式中包含 p ∨ ¬ p p \vee\neg p p∨¬p
析取范式、合取范式
注意:
- 简单析取式、简单合取式 都 既是析取范式,也是合取范式。
单个简单析取式既是由一个简单析取式构成的合取范式,也是由多个简单合取式构成的析取范式;
单个简单合取式既是由一个简单合取式构成的析取范式,也是由多个简单析取式构成的合取范式。 - 一个析取范式为矛盾式当且仅当它的每个简单合取式都是 矛盾式
- 一个合取范式为重言式当且仅当它的每个简单析取式都是 重言式
- 析取范式、合取范式最多只有一层括号
范式存在定理:任一命题公式都存在与之等值的析取范式和合取范式。
即任意公式都可以化为析取范式或合取范式的形式。
将命题公式化为析取范式或合取范式,可以分为3步:
- 消除公式中对{¬,∧,∨}来说冗余的联结词“→”和“↔”
A → B ⇔ ¬ A ∨ B A ↔ B ⇔ ( ¬ A ∨ B ) ∧ ( ¬ B ∨ A ) A\rightarrow B \Leftrightarrow \neg A \vee B \\A\leftrightarrow B \Leftrightarrow (\neg A \vee B)\land (\neg B \vee A) A→B⇔¬A∨BA↔B⇔(¬A∨B)∧(¬B∨A) - 将“¬”向内深入到变元前面并消去多余的“¬”
¬ ¬ A = A ¬ ( A ∧ B ) ⇔ ( ¬ A ∨ ¬ B ) ¬ ( A ∨ B ) ⇔ ( ¬ A ∧ ¬ B ) \neg \neg A = A\\\neg(A\land B)\Leftrightarrow(\neg A \vee \neg B)\\\neg(A\vee B)\Leftrightarrow(\neg A \land \neg B) ¬¬A=A¬(A∧B)⇔(¬A∨¬B)¬(A∨B)⇔(¬A∧¬B) - 使用分配律将公式变为所需的范式,要根据所需要的结果利用分配律,消去嵌套的括号
利用以上3个步骤, 一定能求出公式的析取范式或合取范式, 但形式可能是多样的, 即公式的析取范式或合取范式是不惟一的。
主析取范式
极小项
首先将简单合取式标准化为极小项,再求公式的以极小项为简单合取式的析取范式, 即为主析取范式。
主析取范式存在惟一定理:任何命题公式的主析取范式都是存在的, 并且是惟一的。
由此, A ⇔ B A\Leftrightarrow B A⇔B当且仅当 A A A与 B B B有相同的主析取范式。
求主析取范式的一般方法:
- 求出析取范式
- 将析取范式中不是极小项的简单合取式转化为极小项
将简单合取式转化为极小项的方法:
若简单合取式A中不含命题变元r,则利用 A ⇔ A ∧ 1 ⇔ A ∧ ( r ∨ ¬ r ) ⇔ ( A ∧ r ) ∨ ( A ∧ ¬ r ) ⇔ ( A ∧ r 1 ∧ r 2 ) ∨ ( A ∧ r 1 ∧ ¬ r 2 ) ∨ ( A ∧ ¬ r 1 ∧ r 2 ) ∨ ( A ∧ ¬ r 1 ∧ ¬ r 2 ) A\Leftrightarrow A\land 1\Leftrightarrow A \land(r\vee\neg r)\Leftrightarrow (A\land r)\vee (A\land\neg r)\\\Leftrightarrow (A\land r_1\land r_2)\vee (A\land r_1\land \neg r_2)\vee(A\land\neg r_1\land r_2)\vee(A\land\neg r_1\land\neg r_2) A⇔A∧1⇔A∧(r∨¬r)⇔(A∧r)∨(A∧¬r)⇔(A∧r1∧r2)∨(A∧r1∧¬r2)∨(A∧¬r1∧r2)∨(A∧¬r1∧¬r2)转化为了只含极小项的析取式。
- 化简:将重复出现的命题变元、矛盾式及重复出现的最小项都消去
- 将极小项按下标由小到大的顺序排列
若公式A中含有n个命题变元,A的主析取范式含s(0 ≤ s ≤ 2 n 2^n 2n)个极小项,则A有s个成真赋值,它们是所含极小项下标的二进制表示,其余 2 n − s 2^n-s 2n−s个赋值都是成假赋值。
主合取范式
注意:
极小项 | 极大项 |
---|---|
简单合取式 | 简单析取式 |
原型对应1,否定对应0 | 原型对应0,否定对应1 |
对应的二进制数为成真赋值,也是唯一的成真赋值 | 对应的二进制数为成假赋值,也是唯一的成假赋值 |
极小项的否定即极大项: ¬ m i = M i \neg m_i = M_i ¬mi=Mi
极大项的否定即极小项: ¬ M i = m i \neg M_i = m_i ¬Mi=mi
求主合取范式的一般方法:
- 求出合取范式
- 将合取范式中不是极大项的简单析取式化为极大项
将简单析取式转化为极大项的方法:
若简单析取式A中不含命题变元r,则利用 A ⇔ A ∨ 0 ⇔ A ∨ ( r ∧ ¬ r ) ⇔ ( A ∨ r ) ∧ ( A ∨ ¬ r ) ⇔ ( A ∨ r 1 ∨ r 2 ) ∧ ( A ∨ r 1 ∨ ¬ r 2 ) ∧ ( A ∨ ¬ r 1 ∨ r 2 ) ∧ ( A ∨ ¬ r 1 ∨ ¬ r 2 ) A\Leftrightarrow A\vee 0\Leftrightarrow A \vee(r\land\neg r)\Leftrightarrow (A\vee r)\land(A \vee\neg r)\\\Leftrightarrow (A\vee r_1\vee r_2)\land (A\vee r_1\vee \neg r_2)\land(A\vee\neg r_1\vee r_2)\land(A\vee\neg r_1\vee\neg r_2) A⇔A∨0⇔A∨(r∧¬r)⇔(A∨r)∧(A∨¬r)⇔(A∨r1∨r2)∧(A∨r1∨¬r2)∧(A∨¬r1∨r2)∧(A∨¬r1∨¬r2)转化为了只含极大项的合取式。
- 化简:将重复出现的命题变元、矛盾式及重复出现的最大项都消去
- 将极大项按下标由小到大的顺序排序
主析取、合取范式的总结
牢记:
A ⇔ ( A ∧ r ) ∨ ( A ∧ ¬ r ) ( 主 析 取 范 式 ) ⇔ ( A ∨ r ) ∧ ( A ∨ ¬ r ) ( 主 合 取 范 式 ) A \Leftrightarrow (A\land r)\vee(A\land\neg r)(主析取范式)\\ \ \ \ \Leftrightarrow (A\vee r)\land(A\vee\neg r)(主合取范式) A⇔(A∧r)∨(A∧¬r)(主析取范式) ⇔(A∨r)∧(A∨¬r)(主合取范式)
在进行等值演算的过程中,若已发现该公式为重言式或矛盾式,则可直接写出该公式的主析取范式和主合取范式:
- 重言式的主析取范式即 2 n 2^n 2n个极小项都有,主合取范式为1;
- 矛盾式的主析取范式为0,主合取范式即 2 n 2^n 2n个极大项都有。
主析取范式中每个极小项都是其成真赋值;主合取范式中每个极大项都是其成假赋值。
由主析取范式求主合取范式:
例如若A中含有3个命题变元: A ⇔ m 1 ∨ m 2 ∨ m 3 ( 主 析 取 范 式 ) ⇔ M 0 ∧ M 4 ∧ M 5 ∧ M 6 ∧ M 7 ( 主 合 取 范 式 ) A \Leftrightarrow m_1\vee m_2\vee m_3(主析取范式)\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \Leftrightarrow M_0\land M_4\land M_5\land M_6\land M_7(主合取范式) A⇔m1∨m2∨m3(主析取范式) ⇔M0∧M4∧M5∧M6∧M7(主合取范式)
在演算过程中,先求本题较容易求出的主合取范式(主析取范式),再根据合取、析取之间的转化,求出主析取范式(主合取范式)。
注意:
- 主析取范式为小写 ′ m ′ 'm' ′m′,原型为1,否定为0;
- 主合取范式为大写 ′ M ′ 'M' ′M′,原型为0,否定为1.
主析取范式实质上就是列举出了该公式所有的成真赋值,除此之外的赋值自然就是成假赋值;主合取范式实质上就是列出了该公式的所有成假赋值。因此主析取范式与主合取范式之间可以很方便的互求。
若两个公式的主析取范式(或主合取范式)相同,实际上也就是真值表相同,因此说明了这两个公式等值。
真值表与主析取(合取)范式是描述命题公式的两种等价的不同形式。
因此也可以由真值表求出主析取范式和主合取范式:真值表 → \rightarrow →成真赋值/成假赋值 → \rightarrow →主析取范式/主合取范式
含n个命题变元的主析取范式共有 2 2 n 2^{2n} 22n种。
这篇关于离散数学1:数理逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!