南京邮电大学离散数学_实验三求主析取及主合取范式
离散数学14.主合取范式
例2 求((PQ)R)P的主合取范式. 解: 原式 ((P∨Q)∨R)∨P (P∨Q)∧(R∨P ) (合取范式) ((P∨Q)∨(R∧R ))∧((R∨P )∨(Q∧Q)) (P∨Q∨R)∧(P∨Q∨R)∧(P∨Q∨R)∧ (P∨Q∨R) (P∨Q∨R)∧(P∨Q∨R)∧(P∨Q∨R) (主合取范式)
⑶用“∧”联结上述大项,即可.
例1 求 PQ和PQ的主合取范式
P Q PQ PQ
FF T
T
FT T
F
TF F
F
TT T
T
PQ M2 P∨Q PQ M1∧M2
(P∨Q )∧(P∨Q)
方法2:用公式的等价变换 ⑴先写出给定公式的合取范式
A1∧A2∧...∧An . ⑵除去合取范式中的所有为永真的合取项. ⑶合并相同的析取项和相同的变元. (4)为使每个Ai变成大项,对缺少变元的析取式Ai补全变
主合取范式
主合取范式
1.定义:给定的命题公式,如果有一个等价公式, 它仅由大项的合取所组成,则该等价式称作原式的主 合取范式.
2.主合取范式的求法 方法1:列真值表 ⑴列出给定公式的真值表. ⑵找出真值表中每个“F”对应的大项.
如何根据一组指派写对应的为“F”的大项:如果变 元P被指派为F,P在大项中以P形式出现;如变元P被指 派为T,P在大项中以P形式出现(确保该大项为F).
离散数学实验报告
“离散数学”实验报告目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)1、实验原理........................................................................................................2、实验过程.......................................................................................................五、实验数据及结果分析 (13)六、源程序清单 (24)源代码 (24)七、其他收获及体会 (45)一、实验目的实验一:熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
实验二:掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。
理解等价类的概念,掌握等价类的求解方法。
实验三:理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。
二、实验内容实验一:1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。
(A)2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))实验二:1.求有限集上给定关系的自反、对称和传递闭包。
(有两种求解方法,只做一种为A,两种都做为B)2. 求有限集上等价关系的数目。
(有两种求解方法,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。
(C)实验三:以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A)。
并计算任意两个结点间的距离(B)。
对不连通的图输出其各个连通支(C)。
三、实验环境C或C++语言编程环境实现。
四、实验原理和实现过程(算法描述)实验一:1.实验原理(1)合取:二元命题联结词。
主析取范式的求法
m001 p q r , m101 p q r ,
m010 p q r , m11p q r , m111 p q r .
( p q r) ( p q r) (p q r)
M 001 M 011 M111
【说明】
(1)主析取范式的析取项为小项,用小m加下标表示。 如m010,其中0表示对应的命题变元的否定出现在析 取项中,1表示对应的命题变元出现在析取项中。
小项的性质如下:
(1)每一个小项当其真值指派与编码相同时,其真值为1, 其余的2n-1种均为0;
(2)任意两个不同小项的合取式永假:mi m j 0 (3)全体小项的析取式永为真,记为:
2n -1
mi m0 m1 m2n -1 1
i0
(i j)
主析取范式的求法
则A的 主 析 取 范 式 为0. D.若A的 主 合 取 范 式 中 不 含 极大 项 ,
则A的 主 合 取 范 式 为0.
1.6 蕴含公式
如果双条件命题A↔B 为重言式,则A⇔ B 。而 条件命题A→B 是不对称的,如果A→B为真,B不一 定能推出A 。那么A和B究竟存在什么关系呢?
1.6.1 蕴含公式 定义1-26 设A,B是命题公式, 若A→B是重言式, 则
常见的蕴含重言式
化简式一
附加式
化简式二
析取三段论 假言推论 拒取式 假言三段论 二难推论
例1-27 分析证明 (P Q) (Q R) P R 。 证明:假设后件 P R 为0,则P为1,R 为 0。
(a)若Q为1,则Q R 为0,所以(P Q) (Q R) 为0; (b)若Q为0,则P Q 为0,所以 (P Q) (Q R) 为0。 故此:(P Q) (Q R) (P R) 成立。
利用真值表法求取主析取范式以及主合取范式的实现
#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;}}1printf("\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;elsexiqu[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;elsexiqu[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该命题公式不存在主合取范式。
离散数学实验报告
“离散数学”实验报告目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)1、实验原理........................................................................................................2、实验过程.......................................................................................................五、实验数据及结果分析 (13)六、源程序清单 (24)源代码 (24)七、其他收获及体会 (45)一、实验目的实验一:熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
实验二:掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。
理解等价类的概念,掌握等价类的求解方法。
实验三:理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。
二、实验内容实验一:1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。
(A)2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))实验二:1.求有限集上给定关系的自反、对称和传递闭包。
(有两种求解方法,只做一种为A,两种都做为B)2. 求有限集上等价关系的数目。
(有两种求解方法,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。
(C)实验三:以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A)。
并计算任意两个结点间的距离(B)。
对不连通的图输出其各个连通支(C)。
三、实验环境C或C++语言编程环境实现。
四、实验原理和实现过程(算法描述)实验一:1.实验原理(1)合取:二元命题联结词。
离散数学主析取范式和主合取范式
离散数学主析取范式和主合取范式好嘞,今天我们来聊聊离散数学里的主析取范式和主合取范式。
别看这名字听起来有点高大上,其实它们就像是数学里的两个小伙伴,各自有各自的特长。
先说主析取范式。
想象一下,你正在和朋友们讨论晚餐吃什么。
有人说吃披萨,有人说吃汉堡,还有人提议中餐。
每个人都在表达自己的想法,你得把这些意见整合在一起。
这就是主析取范式的味道。
它把不同的逻辑表达式用“或者”连接起来,形成一个大的表达式。
简单来说,就是“要么…要么…”的那种感觉。
就像我们平时说的“你要是去超市,就顺便帮我买点牛奶。
”这里的“要么”就是一个选项,让我们感觉选择的乐趣满满。
再看看主合取范式。
这个听起来就像个正式的聚会,但实际上,它和主析取范式有点像过年的团圆饭,大家一起吃个团圆。
主合取范式是把各种条件用“而且”连接起来,形成一个综合的表达式。
比如,你想去爬山,得有天气好、朋友愿意去、车子开得了,这样才能顺利出发。
“如果天气好,而且朋友愿意去,而且车子也没问题,那我们就去爬山!”这就是主合取范式的魅力所在。
它把多个条件紧紧相连,就像一个不可分割的整体,让人觉得踏实。
咱们说说这两者的区别。
主析取范式就像是在众多选择中找到你最喜欢的,简简单单的“或”就能让你感到满足。
而主合取范式呢,就像在拼图一样,每一块都得恰如其分地嵌进去,缺一不可。
这就让人觉得,逻辑的世界真是千变万化,特别有趣。
就像生活中的各种选择,有时候你要在“吃披萨”或者“吃汉堡”中做决定,但有时候却需要“天气好而且朋友有空而且车能开”这种条件,才敢下定决心。
说到这里,很多人可能会觉得,这些范式好像没什么太大用处。
它们就像数学中的调味料,能让复杂的逻辑问题变得清晰。
通过主析取范式和主合取范式,我们能把复杂的逻辑表达式化繁为简,抓住问题的核心。
试想一下,生活中遇到的各种选择和条件,常常让人头大。
用这些范式整理思路,真的是帮了大忙。
就像做菜时,调料一加,味道立马提升。
更有趣的是,这两个范式还可以互相转换。
求主析取范式的方法
求主析取范式的方法求主析取范式是一种用于逻辑推理和逻辑问题求解的方法。
在计算机科学和数学领域,求主析取范式被广泛应用于逻辑电路设计、自动推理、人工智能等领域。
本文将介绍求主析取范式的基本概念、求解方法以及应用。
一、求主析取范式的基本概念求主析取范式是一种用于描述逻辑表达式的标准化形式。
它由主合取范式和主析取范式组成,其中主合取范式是逻辑表达式的合取范式中最简单的形式,主析取范式是逻辑表达式的析取范式中最简单的形式。
主合取范式是由若干个子句通过逻辑与运算符连接而成的合取范式,其中每个子句由若干个文字通过逻辑或运算符连接而成。
主合取范式的形式如下:C1 ∧ C2 ∧ ... ∧ Cn其中Ci表示第i个子句,每个子句由若干个文字通过逻辑或运算符连接而成。
主析取范式是由若干个子句通过逻辑或运算符连接而成的析取范式,其中每个子句由若干个文字通过逻辑与运算符连接而成。
主析取范式的形式如下:C1 ∨ C2 ∨ ... ∨ Cn其中Ci表示第i个子句,每个子句由若干个文字通过逻辑与运算符连接而成。
二、求主析取范式的求解方法求主析取范式的方法主要有两种:真值表法和奎宁-麦克劳斯基算法。
真值表法是一种基于逻辑运算的方法。
它通过构造逻辑表达式的真值表,逐行比较真值表中的值,将真值为真的行转换为主合取范式或主析取范式。
真值表法的优点是简单直观,但当逻辑表达式的字母变量较多时,真值表的大小会呈指数级增长,计算量较大。
奎宁-麦克劳斯基算法是一种基于逻辑运算和逻辑等价转换的方法。
它通过逻辑等价转换将逻辑表达式逐步转化为主合取范式或主析取范式。
奎宁-麦克劳斯基算法的优点是计算量相对较小,但需要一定的逻辑推理能力。
三、求主析取范式的应用求主析取范式在逻辑电路设计中具有重要的应用。
逻辑电路可以通过主析取范式表示为若干个子电路的并联,每个子电路由若干个逻辑门组成。
通过将逻辑门的输出连接到主析取范式的输入端,可以实现逻辑电路的功能。
求主析取范式在自动推理中也有广泛的应用。
离散数学第三讲-范式与主范式
合取范式
E14 分配律
2)、将否定联结词¬移到命题变量的前面, 摩根律E10,E11;
析取范式
E11: (P∧Q) P∨ Q; E10: (P∨Q) P∧ Q
3)、消除多余的否定联结词,双否定律 PP 4)、用∧对∨的分配律化成,析取范式。
∨对∧的分配律
(合取范式)
6
1、范式---析取范式与合取范式
9
n
m2 P Q 0 0 1 0
m1 P Q 0 1 0 0
m0 P Q 1 0 0 0
我们把对应的十进制数当作足标, 用mi表示这一项, 即
2、主范式
一般,n个变元的极小项是:
m 0 P1 P2 P3 Pn m 1 P1 P2 P3 Pn m 2 n 1 P1 P2 P3 Pn
10
2、主范式
2.主析取范式: 若干个极小项的析取,若与公式A等价,则称 它为A 的主析取范式。
例2. 求命题公式(P∧Q)∨R的主析取范式。
求命题公式A′的主析取范式的步骤:
1) 求公式A 的析取范式A′ 2) 展开:若A′的某简单质合取式B中不含命题变项pi或其否定 pi,则将 B展成如下形式: B B∧T B∧(Pi∨Pi) (B∧Pi)∨(B∧Pi) 3) 消去:将重复出现的命题变项、矛盾式及重复出现的极小项都“消 去”,如P∧P用P代,P∧P用F代,mi∨mi用mi代。
(0,2,4) 其中表示合取.
16
极小项与极大项之间的关系
1.
极小项与极大项的关系
一个命题公式的主析取范式和主合取范式紧密相关, 在它们的简 记式中, 代表极小项和极大项的足标是互补的,
离散数学(第3讲)
2018/11/12
计算机学院
27
(6)若析取范式的某一个短语中缺少该命题公式中所 规定的命题变元P ,则可用公式: (~P∨P)∧Q=Q 将命题变元 P 补进去,并利用分配律展开,然后合并 相同的短语,此时得到的短语将是标准的极小项; (7)若合取范式的某一个子句中缺少该命题公式中所 规定的命题变元P ,则可用公式: (~P∧P)∨Q=Q 将命题变元 P 补进去,并利用分配律展开,然后合并 相同的子句,此时得到的子句将是标准的极大项。 (8)利用幂等律将相同的极小项和极大项合并,同时 利用交换律进行顺序调整,由此可转换成标准的主析 取范式和主合取范式。
2018/11/12 计算机学院 8
求一个命题公式的与之等价的析取范式和合取 范式,其步骤如下: (1)利用等价公式中的等价式和蕴涵式将公式 中的→、用联结词~ 、∧、∨来取代; ( 2 )利用德 摩根定律将否定号┐移到各个命 题变元的前端; (3)利用结合律、分配律、吸收律、幂等律、 交换律等将公式化成其等价的析取范式和合取范 式。
demorgan定律可知对公式的否定可以直接作用到原子本身并且把公式中的变成把变成即得201521计算机学院结合律分配律该式正好是b左端的对偶式由a及对偶原理得证该式正好是右端的对偶式201521计算机学院一个命题公式可有无穷多个和它等价的命题公式用真值表或等价变换证明它们是否等价往往比较困难甚至连计算机也不能解决
2018/11/12
计算机学院
14
主(特异、正则)合取范式
定义1-4.4 在n个变元的基本和(子句)中,若每一个变 元与其否定并不同时存在,且二者之一必出现且仅出现一 次,则这种基本和称为极大项。 由有限个极大项组成的合取式称为 主合取范式。 以下是由两个原子构成的极大项的真值表 P 1 1 0 0 Q 1 0 1 0 P∨Q 1 1 1 0 P∨~Q 1 1 0 1
南京邮电大学《离散数学》考试复习重点精讲
典型例题1-1
设P表示命题“天下雪”,Q表示命题“我将去镇上”, R表示命题“我有时间”。 以符号形式写出下列命题: a ) 如果天不下雪和我有时间,那么我将去镇上。 b) 我将去镇上,仅当我有时间。
解:(a ) (P R ) Q (b) (1)"仅当"表示必要条件,有:Q R (2)"当"表示充分条件,有:R Q (3)"当且仅当"表示充要条件,有:R Q (本题正确答案)
典型例题1-2
求公式(P∨Q)∧(Q∨R)的主析取范式
解:法一:(P∨Q)∧(Q∨R) =(P∧Q)∨(P∧R) ∨(Q∧Q ) ∨(Q∧R) =(P∧Q∧(R∨R)) ∨(P∧(Q∨Q)∧R)∨((P∨P) ∧Q∧R) =(P∧Q∧R) ∨(P∧Q∧R) ∨(P∧Q∧R) ∨(P∧Q∧R)
《离散数学》考试复习指南
南京邮电大学 计算机学院
《离散数学》课程组
考试题型
1、填空题( 10空,20分) 2、判断题(10小题,20分)
3、简答题(5小题,40分)
4、证明题(2小题,20分)
第一章 命题逻辑
命题的概念、命题的表示法 五个基本联结词的含义 命题公式与命题翻译。
命题公式的真值表(万能的真值表!)
第二章 谓词逻辑
谓词的概念与表示 量词的含义 谓词公式与翻译
判断谓词公式的真值
谓词演算的等价式与蕴含式证明
谓词演算的推理
典型例题2-1
他就不喜欢乘汽车;每一个人或者喜欢乘汽车或者喜欢骑 自行车;有的人不爱骑自行车。因而有的人不爱步行。 (请假设 P(x): x喜欢步行, Q(x): x喜欢乘汽车,R(x): x
离散数学 主析取范式主合取范式
实验二实验题目:生成主析取范式和主合取范式实验目的: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都存在与其等价的主合取范式,并且是惟一的。
离散数学-范式
全体极大项的合取式 永为0
P Q R PQR
求公式的主合取范式
0 000
0
1 001
1
2 010
0
例:求公式A的主合取范式(恒等变换法) 3 0 1 1 1
APQR
4 100
0
5 101
1
PQ(R┐R)(P┐P)(Q┐Q) R 6 1 1 0 1
对偶性
主析取范式 基本积 析取范式(基本积之和) 极小项
n个变元有2n个极小项 其下标使该极小项为真 求主析取范式的方法 主析取范式是极小项的和 其中的所有的极小项的下标 对应使该公式为真的解释
主合取范式 基本和 合取范式(基本和之积) 极大项
n个变元有2n个极大项 其下标使该极大项为假 求主合取范式的方法 主合取范式是极大项的积 其中的所有的极大项的下标 对应使该公式为假的解释
性质
极小项性质
N个命题变元可构成 2n个极小项
每个极小项当其真值 指派与其下标编码相 同时,其值为1,其 余为0
任意两个极小项的合 取式永为0
全体极小项的析取式 永为1
极大项性质
N个命题变元可构成2n 个极大项
每个极大项当其真值 指派与其下标编码相 同时,其值为0,其余 为1
基本积 是合式公式中的变元或变元的否定的合取; 基本和 是合式公式中的变元或变元的否定的析取。
例:给定命题变元P、Q,则:
P
基本积
┐PQ Q ┐P P ┐P
基本和
Q P┐P
P ┐PQ Q┐P P┐P QP┐P
析取范式
析取范式的定义 定义:一个形为基本积的析取的公式,如果与命题
主析取范式与主合取范式
第四节 主析取范式与主合取范式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 。
南京邮电大学离散数学_实验三求主析取及主合取范式
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
if(A[j]%A[i]==0)
{
for(k=i+1;k<j;k++)
if(A[k]%A[i]==0&&A[j]%A[k]==0)
count++;
if(!count)
printf("<%d,%d>,",A[i],A[j]);
实实验报告20152016学年第一学期课程名称离散数学实验名称偏序关系中盖住关系的求取以及格论中有补格的判定实验时间2015年12月1日指导单位计算机科学与技术系指导教师罗卫兰学生姓名张清浩班级学号b14040922学院系计算机学院软件学院专业软件工程实实验报告实验名称偏序关系中盖住关系的求取以及格论中有补格的判定指导教师罗卫兰实验类型实验学时4实验时间12月1日一实验目的和要求输入一整数根据它所有的因子在偏序关系为整除关系的前提下求出盖住关系以及有补格的判断
指导教师
罗卫兰
实验类型
实验学时
4
实验时间
12月1日
一、实验目的和要求
输入一整数,根据它所有的因子,在偏序关系为整除关系的前提下,求出盖住关系,以及有补格的判断。
二、实验环境(实验设备)
三、实验原理及内容
#include<stdio.h>
int A[20]={0};
int N=0;
void yinzi(int m)
}
count=0;
}
putchar('\n');
离散数学求命题公式的主析取范式和主合取范式
离散数学求命题公式的主析取范式和主合取范式Description输⼊命题公式的合式公式,求出公式的真值表,并输出该公式的主合取范式和主析取范式。
Input命题公式的合式公式Output公式的主析取范式和主合取范式,输出形式为:“ mi ∨ mj ; Mi ∧ Mj” ,极⼩项和∨符号之间有⼀个空格,极⼤项和∧符号之间有⼀个空格;主析取范式和主合取范式之间⽤“ ; ”隔开,“ ; ”前后各有⼀个空格。
永真式的主合取范式为 1 ,永假式的主析取范式为 0 。
输⼊公式的符号说明:! ⾮,相当于书⾯符号中的 “ ¬ ”& 与,相当于书⾯符号中的 “ ∧ ”| 或,相当于书⾯符号中的 “ ∨ ”蕴含联结词,相当于书⾯符号中的 “ → ”等价联结词,相当于书⾯符号中的 “ ↔ ”( 前括号) 后括号Code#include <cstdio>#include <cstring>#include <cmath>#define N 1000#define MAX 10000000char s[N];bool table[30];int explain[30];int value[MAX];int sum = 0;int priority(char c){switch (c){case '#': return -1;case '!': return 5;case '&': return 4;case '|': return 3;case '-': return 2;case '+': return 1;case '(': return 0;default: return 0;}}void postfix(){char post[N] = { '\0' };int pp = -1;char stack[N] = { '#' };int ps = 0;int len = strlen(s);for (int i = 0; i < len; i++){if (s[i] >= 'a' && s[i] <= 'z'){post[++pp] = s[i];continue;}if (s[i] == '!' || s[i] == '&' || s[i] == '|' || s[i] == '-' || s[i] == '+'){while (priority(s[i]) <= priority(stack[ps]))post[++pp] = stack[ps--];stack[++ps] = s[i];continue;}if (s[i] == '('){stack[++ps] = s[i];continue;}if (s[i] == ')'){while (stack[ps] != '(') post[++pp] = stack[ps--];ps--;continue;}}while (ps) post[++pp] = stack[ps--];strcpy(s, post);int l = strlen(s);}void settable(){memset(table, 0, sizeof(table));int len = strlen(s);for (int i = 0; i < len; i++){if (s[i] >= 'a' && s[i] < 'z')table[s[i] - 'a'] = true;}for (int i = 0; i < 26; i++)if (table[i]) sum++;sum = pow(2, sum);}int btoi(){int sum = 0, weight = 1;for (int i = 25; i >= 0; i--)if (table[i]){if (explain[i]) sum += weight;weight *= 2;}return sum;}int calc(int a, int b, char c){switch (c){case '&': return a * b;case '|': if (a + b) return 1; else return 0;case '-': if (a == 1 && b == 0) return 0; else return 1; case '+': return !((a + b) & 1);}}int work(){int stack[N], ps = -1;int len = strlen(s);for (int i = 0; i < len; i++){if (s[i] >= 'a' && s[i] <= 'z'){stack[++ps] = explain[s[i] - 'a'];continue;}if (s[i] == '!'){stack[ps] = (stack[ps] + 1) & 1;continue;}int ans = calc(stack[ps - 1], stack[ps], s[i]);stack[--ps] = ans;}return stack[0];}void assign(){int x = btoi();int ans = work();value[x] = ans;}void generate(char c){while (c <= 'z' && table[c - 'a'] == false) c++;if (c > 'z'){assign();return;}explain[c - 'a'] = 0;generate(c + 1);explain[c - 'a'] = 1;generate(c + 1);}void output1(){int i = 0;while (i < sum && !value[i]) i++;if (i >= sum){printf("0 ; ");return;}printf("m%d", i);for (i++; i < sum; i++)if (value[i]) printf(" ∨ m%d", i);printf(" ; ");}void output2(){int i = 0;while (i < sum && value[i]) i++;if (i >= sum){printf("1\n");return;}printf("M%d", i);for (i++; i < sum; i++)if (!value[i]) printf(" ∧ M%d", i);printf("\n");}int main(){scanf("%s", s);postfix();settable();memset(value, 0, sizeof(value));memset(explain, 0, sizeof(explain)); generate('a');output1();output2();return 0;}。
离散数学主析取范式主合取范式
离散数学主析取范式主合取范式主析取范式和主合取范式是离散数学中逻辑表达式的两种常见形式。
它们在逻辑推理、计算机科学和人工智能等领域具有重要的应用价值。
本文将介绍主析取范式和主合取范式的概念、特性以及如何通过布尔运算将任意逻辑表达式转化为主析取范式或主合取范式。
一、主析取范式(DNF)主析取范式是一个逻辑表达式的标准形式,它由多个子句的析取组成。
每个子句由多个文字的合取构成。
主析取范式的最简形式是由至少一个子句组成的合取。
例如,逻辑表达式(A ∧ B) ∨ (C ∧ D ∧ E)就是一个主析取范式。
其中,(A ∧ B) 和 (C ∧ D ∧ E) 是两个子句,分别由 A、B 和 C、D、E 构成。
主析取范式的特性:1. 每个子句中的文字可以是变量或其否定形式。
2. 主析取范式中的每个文字都是变量的析取或否定析取。
3. 主析取范式可以使用布尔运算来简化和优化。
如何得到主析取范式?可以通过真值表法或布尔代数的演算法来将任意逻辑表达式转化为主析取范式。
方法如下:2. 找到真值表中使得逻辑表达式为真的行。
3. 对每一行,在真值为真的列上取出对应的文字,并将它们合取起来构成一个子句。
4. 将所有子句析取起来得到主析取范式。
二、主合取范式(CNF)主合取范式是一个逻辑表达式的标准形式,它由多个子句的合取组成。
每个子句由多个文字的析取构成。
主合取范式的最简形式是由至少一个子句组成的析取。
例如,逻辑表达式(A ∨ B) ∧ (C ∨ D ∨ E)就是一个主合取范式。
其中,(A ∨ B) 和 (C ∨ D ∨ E) 是两个子句,分别由 A、B 和 C、D、E 构成。
主合取范式的特性:1. 每个子句中的文字可以是变量或其否定形式。
2. 主合取范式中的每个文字都是变量的合取或否定合取。
3. 主合取范式可以使用布尔运算来简化和优化。
如何得到主合取范式?可以通过真值表法或布尔代数的演算法来将任意逻辑表达式转化为主合取范式。
离散数学析取范式与合取范式
④ A的演算: A (pqr)(pqr)(pqr)
∑(1, 2, 5) 结论: 由④可知,A的成真赋值为001、010、101, 因而方案有三个: 孙去(赵、钱不去); 钱去(赵、孙不去); 赵、孙(钱不去).
28
极大项
定义 在含有n个命题变项的简单析取式中, 若每个命题变项均以文字的形式在其中出现 且只出现一次,而且第i(1 i n)个文字出 现在左起第 i 位上,这样的简单析取式称为 极大项.
由p, q两个命题变项形成的极小项与极大项
极小项 公式 成真
赋值 p q 0 0 p q 0 1
p q 1 0 pq 1 1
名称
m0 m1 m2 m3
极大项 公式 成假
赋值 pq 0 0 p q 0 1 p q 1 0 p q 1 1
名称
M0 M1 M2 M3
33
由p, q, r三个命题变项形成的极小项与极大项
极小项
公式
成真 赋值
p q r 0 0 0 p q r 0 0 1
p q r 0 1 0
p q r 0 1 1
p q r 1 0 0
p q r p q r
101 110
p q r 1 1 1
排序.
15
求公式的主析取范式
例1.17 求公式 (pq)r 的主析取范式.
(pq)r
(pq)r , (析取范式) ①
其中 (pq)
(pq)(rr)
(pqr)(pqr)
m6m7 ,
②
16
r
(pp)(qq)r
(pqr)(pqr)(pqr)(pqr)
由定义易知:
1)一个简单析取式为重言式当且仅当它同时含 有一个命题变项及它的否定;
离散数学(对偶和范式)
(c)所有小项之析取为永真:
m T。
i1
i
n
(d)每个小项只有一个解释为真,且其真值1位于 主对角线上。
18
大项的性质:
(a)没有两个大项是等价的。
(b) 任 何 两 个 不 同 大 项 之 析 取 是 永 真 的 , 即 Mi∨MjT,i≠j。 n
(c) 所有大项之合取为永假,即
1求主析取范式p??q?r?p??q??r析取范式p??q?p??q????r??r?p??q??r??p??q??r?m6??m725求公式的主范式续r???p??p????q??q??r???p??q??r????p??q??r??p??q??r??p??q??r?m1??m3??m5??m7代入并排序得得p??q?r?m1??m3??m5??m6??m7主析取范式26求公式的主范式续2求a的主合取范式p??q?r?p??r??q??r合取范式p??r?p??q??q??r?p??q??r??p??q??r?m0??m227求公式的主范式续q??r?p??p??q??r?p??q??r????p??q??r?m0??m4代入并排序得得p??q?r?m0??m2??m4主合取范式28主范式的用途与真值表相同1求公式的成真赋值和成假赋值例如p??q?r?m1??m3??m5??m6??m7其成真赋值为001011101110111其余的赋值000010100为为成假赋值
28
主范式的用途(续)
(2) 判断公式的类型 设A含n个命题变项,则 A为重言式A的主析取范式含2n个极小项 A的主合取范式为1. A为矛盾式 A的主析取范式为0 A的主合析取范式含2n个极大项 A为非重言式的可满足式 A的主析取范式中至少含一个且不含全部极小项 A的主合取范式中至少含一个且不含全部极大项
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int i;
for(i=0;i<m;i++)
if(m%(i+1)==0)
{
A[N]=i+1;
N++;
}
printf("%d的因子为:",m);
for(i=0;i<N;i++)
printf("%d ",A[i]);
putchar('\n');
}
void gaizhu()
{
int i=0,j=0,k=0,count=0;
实验报告
(2015/ 2016学年第一学期)
课程名称
离散数学
实验名称
偏序关系中盖住关系的求取以及格论中有补格的判定
实验时间
2015
年
12
月
1
日
指导单位
计算机科学与技术系
指导教师
罗卫兰
学生姓名
张清浩
班级学号
学院(系)
计算机学院软
件学院
专业
软件工程
实验报告
实验名称
偏序关系中盖住关系的求取以及格论中有补格的判定
printf("盖住关系为:");
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
if(A[j]%A[i]==0)
{
for(k=i+1;k<j;k++)
if(A[k]%A[i]==0&&A[j]%A[k]==0)
count++;
if(!count)
printf("<%d,%d>,",A[i],A[j]);
五、指导教师评语
成绩
批阅人
日期
{
printf("%d的补元是%d\n",A[i],A[j]);
order[i]=1;
}
count=0;
}
}
}
for(i=0;i<N;i++)
if(order[i]==0)
{
printf("%d没有补元\n",A[i]);
count1=1;
}
if(!count1)
printf("是有补格\n");
else
printf("不是有补格\n");
free(order);
}
void main()
{
int m;
printf("请输入一个整数:");
scanf("%d",&m);
yinzi(m);
gaizhu();
youbuge();
}
实验报告
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
通过本次实验掌握了使用程序进行偏序关系中盖住关系的求取以及格论中有补格的判定,也使得我们更好的掌握了使用编程思想处理数学问题。
}
count=0;
}
putchar('\n');
}
void youbuge()
{
int *order;//标记每个因子是否有补元,无0,有1
int i=0,j=0,k=0,count=0,count1=0;
order=(int*)malloc(N*sizeof(int));
for(i=0;i<N;i++)
指导教师
罗卫兰
实验类型
实验学时
4
实验时间
12月1日
一、实验目的和要求
输入一整数,根据它所有的因子,在偏序关系为整除关系的前提下,求出盖住关系,以及有补格的判断。
二、实验环境(实验设备)
三、实验原理及内容
#include<stdio.h>
int A[20]={0};
int N=0;
void yinzi(int m)
order[i]=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i!=j)
{
for(k=1;k<N-1;k++)
if((A[i]%A[k]==0&&A[j]%A[k]==0)||(A[k]%A[i]==0&&A[k]%A[j]==0))
count++;
if(!count)