(完整版)主合取范式
- 格式:ppt
- 大小:1.50 MB
- 文档页数:13
求合取范式和析取范式为了求得给定命题的合取范式和析取范式,我们需要将命题进行逻辑推理,并使用公式进行转换。
假设给定的命题为 P,那么我们可以将其转换为析取范式和合取范式。
首先,我们可以将命题转换为析取范式:析取范式为:P or (not P and Q) or (not P and not Q)接下来,我们可以将命题转换为合取范式:合取范式为:(P and Q) or (not P and Q) or (P and not Q)1. P and Q 命题的否定是 not P or not Q,因此可以得到 (not P or not Q)。
2. not P and Q 命题的否定是 P or not Q,因此可以得到 (P or not Q)。
3. P and not Q 命题的否定是 not P or Q,因此可以得到 (not P or Q)。
将以上三个命题组合起来,就得到了合取范式:(P and Q) or (not P and Q) or (P and not Q)。
在合取范式中,每个命题都表示一个条件,其中 P 和 Q 表示两个条件,not P 表示条件 P 的否定。
合取范式表示的是多个条件的组合,只有当所有条件都满足时,整个命题才为真。
在析取范式中,每个命题都是一个或另一个条件,其中 P 和 Q 表示两个条件,not P 表示条件 P 的否定。
析取范式表示的是多个条件的任意一个满足即可,只要有一个条件满足,整个命题就为真。
需要注意的是,一个命题的合取范式和析取范式是等价的,两者之间可以通过逻辑运算相互转换。
在实际应用中,可以根据需要选择使用合取范式或析取范式来进行逻辑推理和计算。
除了合取范式和析取范式,还有其他的逻辑范式,例如蕴含式、重写式等。
这些范式都有各自的特点和用途。
蕴含式表示的是一个命题的条件和结论之间的关系。
如果命题 P 表示“如果 A,则 B”,那么蕴含式就是 A → B。
离散数学主析取范式和主合取范式好嘞,今天我们来聊聊离散数学里的主析取范式和主合取范式。
别看这名字听起来有点高大上,其实它们就像是数学里的两个小伙伴,各自有各自的特长。
先说主析取范式。
想象一下,你正在和朋友们讨论晚餐吃什么。
有人说吃披萨,有人说吃汉堡,还有人提议中餐。
每个人都在表达自己的想法,你得把这些意见整合在一起。
这就是主析取范式的味道。
它把不同的逻辑表达式用“或者”连接起来,形成一个大的表达式。
简单来说,就是“要么…要么…”的那种感觉。
就像我们平时说的“你要是去超市,就顺便帮我买点牛奶。
”这里的“要么”就是一个选项,让我们感觉选择的乐趣满满。
再看看主合取范式。
这个听起来就像个正式的聚会,但实际上,它和主析取范式有点像过年的团圆饭,大家一起吃个团圆。
主合取范式是把各种条件用“而且”连接起来,形成一个综合的表达式。
比如,你想去爬山,得有天气好、朋友愿意去、车子开得了,这样才能顺利出发。
“如果天气好,而且朋友愿意去,而且车子也没问题,那我们就去爬山!”这就是主合取范式的魅力所在。
它把多个条件紧紧相连,就像一个不可分割的整体,让人觉得踏实。
咱们说说这两者的区别。
主析取范式就像是在众多选择中找到你最喜欢的,简简单单的“或”就能让你感到满足。
而主合取范式呢,就像在拼图一样,每一块都得恰如其分地嵌进去,缺一不可。
这就让人觉得,逻辑的世界真是千变万化,特别有趣。
就像生活中的各种选择,有时候你要在“吃披萨”或者“吃汉堡”中做决定,但有时候却需要“天气好而且朋友有空而且车能开”这种条件,才敢下定决心。
说到这里,很多人可能会觉得,这些范式好像没什么太大用处。
它们就像数学中的调味料,能让复杂的逻辑问题变得清晰。
通过主析取范式和主合取范式,我们能把复杂的逻辑表达式化繁为简,抓住问题的核心。
试想一下,生活中遇到的各种选择和条件,常常让人头大。
用这些范式整理思路,真的是帮了大忙。
就像做菜时,调料一加,味道立马提升。
更有趣的是,这两个范式还可以互相转换。
#include "stdio.h"#include "stdlib.h"#include "string.h"#include "math.h"#define N 50void pd(int b[N],int f);int H1 (char T1[N], char T2[N], int T3[N], int y);int H2 (char T1[N], char T2[N], int T3[N], int y);int main(){int i1,i2,d=1,T3[N],kh=0,jg,j=0,y;int w=0,hequ[N],h=0,x=0,xiqu[N];char T1[N],T2[N],T10[N],s;hequ[0]=-1;xiqu[0]=-1;printf("#########################################\n");printf("## 用! 表示否定##\n");printf("## 用& 表示合取##\n") printf("## 用|表示析取##\n"); printf("## 用八表示条件##\n");printf("## 用~ 表示双条件##\n"); printf("#########################################\n\n");printf(" 请输入一个合法的命题公式:\n"); gets(T1);strcpy(T10,T1); for(i1=0;i1<strlen(T1);i1++) {if(T1[i1]==')' || T1[i1]=='(')kh++;if(T1[i1]>='a' && T1[i1]<='z' || T1[i1]>='A' &&T1[i1]<='Z') {for(i2=0;i2<j;i2++) if(T2[i2]==T1[i1]) d=0;if(d==1){T2[j]=T1[i1];j++;}d=1;}}printf("\n 输出真值表如下:\n \n"); for(i1=0;i1<y;i1++) printf(" %c ",T2[i1]); printf(" "); puts(T1);printf("\n"); for(i1=0;i1<j;i1++)T3[i1]=0; for(i2=0;i2<j;i2++)printf(" %d ",T3[i2]); jg=H1(T1,T2,T3,y); if(jg==0) hequ[h++]=w;else xiqu[x++]=w;printf(" %d\n",jg);strcpy(T1,T10); for(i1=0;i1<(int)pow(2,j)-1;i1++) {++w; pd(T3,j-1);jg=H1(T1,T2,T3,y); if(jg==0)hequ[h++]=w;else xiqu[x++]=w;strcpy(T1,T10); for(i2=0;i2<j;i2++) printf(" %d",T3[i2]);printf(" %d\n",jg); }if(hequ[0]==-1) printf("\n 该命题公式不存在主合取范式。
实验二实验题目:生成主析取范式和主合取范式实验目的:1.熟悉地掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实验报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。
2.掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
实验内容:利用计算机构造真值表来建立主析取范式和主合取范式实验原理:1.合取:二元命题联结词。
将两个命题P、Q联结起来,构成一个新的命题P ∧Q。
这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P 为真, Q为真时方可P∧Q为真, 而P、Q只要有一为假则P∧Q 为假。
2.析取:二元命题联结词。
将两个命题P、Q联结起来,构成一个新的命题P ∨Q。
这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P为假, Q为假时方可P∨Q为假, 而P、Q只要有一为真则P∨Q为真.3.真值表:表征逻辑事件输入和输出之间全部可能状态的表格.列出命题公式真假值的表。
通常以1表示真,0 表示假。
命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出了真假值的算法. 真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。
4。
主析取范式:在含有n个命题变元的简单合取式中,若每个命题变元与其否定不同时存在,而两者之一出现一次且仅出现一次,称该简单合取式为小项。
由若干个不同的小项组成的析取式称为主析取范式;与A等价的主析取范式称为A 的主析取范式。
任意含n个命题变元的非永假命题公式A都存在与其等价的主析取范式,并且是惟一的。
5。
主合取范式:在含有n个命题变元的简单析取式中,若每个命题变元与其否定不同时存在,而两者之一出现一次且仅出现一次,称该简单析取式为大项。
由若干个不同的大项组成的合取式称为主合取范式;与A等价的主合取范式称为A的主合取范式.任意含n个命题变元的非永真命题公式A都存在与其等价的主合取范式,并且是惟一的。
含3个命题变项的命题公式的主合取范式是指将命题公式中的所有合取项都列出,并且将其中的命题变项取值情况都考虑进去,然后对这些合取项进行合取运算得到的一个式子。
那么,如何找到一个命题公式的主合取范式呢?我们需要找出命题公式中的所有合取项。
一个命题公式可以分解为多个合取项,每个合取项中包含若干个命题变项以及它们的否定。
对于含有3个命题变项的命题公式来说,我们需要列出所有可能的合取项。
这样的合取项总数是有限的,因为每个命题变项可以取真或假两种情况,所以总共有2^3=8种可能的合取项。
我们需要根据这8种合取项的取值情况进行合取运算。
合取运算的结果是真当且仅当所有合取项中的命题变项都取真。
我们可以根据这8种合取项的取值情况,得到合取运算的结果。
这个结果就是命题公式的主合取范式。
举个例子来说,如果我们有一个命题公式为(A∨¬B∨C)∧(¬A∨B∨¬C),其中A、B、C分别为三个命题变项。
那么我们首先列出所有可能的合取项:A为真,B为真,C为真,合取项为真;A为真,B为真,C为假,合取项为真;A为真,B为假,C为真,合取项为真;A为真,B为假,C为假,合取项为假;A为假,B为真,C为真,合取项为假;A为假,B为真,C为假,合取项为真;A为假,B为假,C为真,合取项为假;A为假,B为假,C为假,合取项为假。
我们进行合取运算,将所有合取项为真的情况进行合取运算,得到的结果就是命题公式的主合取范式。
含有3个命题变项的命题公式的主合取范式可以通过列出所有合取项的取值情况,并进行合取运算得到。
这样的方法可以很好地帮助我们理解命题公式的结构和逻辑含义。
个人观点上,我认为找到一个命题公式的主合取范式对于理解命题逻辑和解决相关问题是非常有帮助的。
通过找到主合取范式,我们可以清晰地看到命题公式中各个命题变项的逻辑关系,从而更好地理解整个命题公式的含义和结构。
对于含有多个命题变项的命题公式来说,找到其主合取范式是非常重要的。
第四节 主析取范式与主合取范式n 个命题变项虽然可以构成无穷多个形式各异的命题公式,但就其真值而言,只有22n种。
对应每种真值情况虽然又有无穷多个等值的公式,但这些公式却有相同的标准形式。
本节将给出规范公式的概念,这种规范的公式能表达真值表所能给出的一切信息。
定义4.1 命题变项及其否定统称为文字。
如p ,q ,¬p ,¬q ,L 都是文字,即每个命题变项产生两个文字。
(1)仅由有限个文字构成的合取式称为简单合取式。
(2)仅由有限个文字构成的析取式称为简单析取式。
例如,p ∧q ,p ∧¬q ∧r ,L 都是简单合取式。
p ∨q , ¬p ∨q ∨r ,L 都是简单析取式。
单个文字既是简单析取式,又是简单合取式。
定义4.2 (1)仅由有限个简单合取式构成的析取式称为析取范式; (2)仅由有限个简单析取式构成的合取式称为合取式。
例如,p ,¬q ,p ∧q ,(p ∧¬q )∨(p ∧q ),L 都是析取范式。
p ,¬r ,p ∨q ,(p ∨q )∧(q ∨¬r ),L 都是合取范式。
注意,两个文字构成的简单合取式与析取式都既是析取范式又是合取范式。
例如,p ∨q 是析取范式,它是由两个简单的合取式p 与q 析取而成。
同时它也是合取范式,看成是一个简单析取式构成的合取范式。
定义 4.3 (1)n 个命题变项1p ,2p ,L ,n p (1n ≥)构成的简单合取式中,若每个i p (1,2,,i n =L )都以文字的形式出现一次且仅出现一次,而且出现在左起的第i 位上,则称它为极小项。
(2)n 个命题变项1p ,2p ,L ,n p (1n ≥)构成的简单析取式中,若每个ip (1,2,,i n =L )以文字的形式出现一次且仅出现一次,而且出现在左起的第i 位上,则称它为极大项。
两个命题变项p ,q 共可形成4个极小项:¬p ∧¬q ,¬p ∧q ,p ∧¬q ,p ∧q 。