2023年离散数学上机实验报告.pdf
实验目的 离 散 数 学 实验报告姓名:学号:班 级:实验一连结词逻辑运算实现二元合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,运用程序语言实现逻辑这儿种逻辑运算。二.实验内容从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的真值。规定对输入内容进行分析,假如不符合0、1条件需要重新输入,程序有良好的输入输出界面。三.实验环境使用M ic ros o f t V i s ua l C +6.。为编程软件,采用称C /C+语言为编程语言实现。四.实验过程1 .算法分析:合取:P,q都 为1的时候为1,其他为0析取:p,q都为0的时候为0,其他为1蕴含:P为1,q为0时为0,其他为1等价:P,q同真同假2.程序代码:#i nc l u d e in t ma in()(i n t P,Q,a,b,c ,d,p,q;p rin t f (P 的值);f o r(P=0;P V 2;P+)(f o r(Q=0;Q 2;Q+)pr i ntf(z,t%d n,P);printf (nQ的值);f or(P=0;P 2;P+)。f or(Q=0;Q 2 ;Q+)g printf (t%d ,Q);prin t f (n 非 P 的值”);f o r(P=0;P 2 ;P+)(。f or(Q=0;Q 2;Q+)8 。oif (P=0)/*判断非P的值*/。P=1 ;o e lse0;。p rint f (t%d ,p);6)op r i n tf (M n 非 Q 的值);f or(P=0;P 2;P+)0(of or(Q=0;Q 2 ;Q+)8 6 i f (Q =1)/*判断非Q的值*/。q=0;e lseP 二 l;8 p r i ntf (t%d,q);0)opr i ntf(z,n P与 Q 的值”);f or(P=0;P2;P+)(。f o r(Q=0;Q 2;Q +)。i f (Q=0 I P=0)/*判断 P 与 Q 的值*/。a=0;。e Is eo a=1 ;r intf (t%d,a);6 prin t f (n P 或 Q 的值);of or(P=0;P 2;P+)(f or(Q=0;Q b=1 ;g elseoooob =0;叩 r in t f (t%d,b);printf(nP 蕴含 Q 的值);f or(P=0;P 2;P+)(of or(Q=0;Q 2;Q+)必i f(P=l&Q=0)/*判断P蕴含Q的值*/。c=0;比I se空=1;o p r i n t f(u t%d,z,c);)pri n t f (,nP 等价 Q 的值);f o r(P=0;P 2;P+)。8 f or(Q=0;Q 2;Q+)8 13 i f(P=Q)/*判断P等价Q的值*/。d=l;。e l s eg d =0;a e pri n tf (t%d”,d);0)prin t f (n);ore t urn 0;3.实验数据及结果分析:实验二关系的复合运算及逆运算一.实验目的熟悉关系的复合运算和逆运算,编程实现关系复合运算和逆运算算法。二.实验内容运用矩阵求解有限集上的复合关系和逆关系。三.实验过程1.算法分析:复合运算就将两个用矩阵表达的关系进行复合,即在第一个矩阵中寻找值为1 的元素坐标(i,j),在第二个矩阵第j 行寻找值为1 的元素,若有,且坐标为(j,k),则产生的新的关系的矩阵中坐标为(i,k)的元素值为1。逆运算就是将用矩阵中值为1 的元素坐标(i,j)对调,产生新的关系的矩阵中坐标为(j,i)的元素值为lo2.程序代码:关系的复合运算#inc l u d e u s i ng na m e spa c e s t d;int m a in()Ioin t a 1 0 0 1 00,b 1 00 1 00,c 1 0 0 1 0 0 ,i,j,k,n;。c out*请输入集合X 中元素的个数:;c i n n;c o u t 请输入关系矩阵M r 的格式:然 e nd l;o f or(i =0;i V n;i+)f or(j=O;j n;j+)00c i n a i j;oc out“请输入关系矩阵M s的格式:Xe nd l;of o r(i=0;i n;i+)f o r(j=0;j b i j ;of o r (i=0;i n;i+)进行复合运算 f or(j=0;j if (a i j=l)g o f or(k=O;kn;k+)if (b j k =1)。c i k=l;f o r(i =0;i n;i+)(。f or(j=0;j n;j+)。f (c i j !=1)。a c i j =0;oc o u t e n d 1;c out V关系矩阵M r与M s的复合运算结果是:“e nd 1 ;of or(i=0;i n;i+)g f or(j=0;j n;j+)e C O U t C 1 j ;。c ou t e n d 1;3;re t u r n 0;)/关系的逆运算#i n c lud e i nt m a in()1oi nt a 1 00 l 00,b l 0 0 1 00,n,i,j,i n d e x;叩rintf (请输入集合X中元素的个数:);osc a n f (%d ,&n);叩rin t f (请输入关系矩阵M r的格式:n);of or(i=0;i n;i+)(8 f o r(j=O;j sc a nf (%d,&a i j);f o r(i =0;i n;i+)/进行逆运算才 o r(j=0;j n;j+)a if(a i j =1)8ind e x=i;。i =j;g g j=ind e x;a b i j =1;)f or(i=0;i n;i +)(-f or(j=0;j n;j+)if(b i j!=l)b i j =0;)opr i ntf(/z n 关系矩阵 M rc 为:n);f or(i =0;i n;i +)(f or(j=0;j n;j+)opr i ntf(%d b i j);。printf f n );re t u rn 0;)3.实验数据及结果分析:,E:document虚散效学Debug、关系的复合运算.exe法谀人集含X中 元 毒 歌 事:5请棚入关系矩阵Mr的和舍0000011000000000010000000请输入关系矩阵胎的格式:0010000010100000000001000关系矩阵济与也的复合运算结果是:0 0 0 00 0 0 00 1 0 00 0 0 00 0 0 011000Press any key to continue关系矩阵M re为:1 0 01 0 00 1 1Press any key to continue.实验三 关系的闭包运算一.实验目的熟悉关系的闭包运算,编程实现关系闭包运算算法。二.实验内容运用矩阵求解有限集上给定关系的自反、对称和传递闭包。三.实验过程1.算法分析:在三种闭包中自反和对称闭包的求解很容易,对矩阵表达的关系,其自反闭包只要将矩阵的主对角线所有置为1就可;对称闭包则加上关系的转置矩阵(逻辑加法);传递闭包则直接根据 t(R)=R+。2.程序代码:#i n c 1 ud e us i n g n a me sp a c e std;void d e 1 ive r(i n t x 1 00 1 00,i nt y 1 00 1 00,i n t n);i n t m ai n()(i n t i,j.n,R 1 0 0 1 0 0 ,r l 0 0 1 00,s l 0 0 1 00,t 100 1 00;o u t 请输入矩阵的阶:”;ci n n;c o u t e n d l 请输入R的关系矩阵:e n d 1 ;f o r(i=0;i n;i+)输入R的关系矩阵(o f o r(j =O;j R i j ;for(i=0;i n ;i+)/将R的关系矩阵赋值给r,s,tf o r (j =0;j R i j ;6Mt i j =R i j ;)。o f o r (i=0;i n;i +)/自反闭包运算(i f (r i i =0)6 r i Li =l;)0co u t V Ve n d l V V”自反闭包关系矩阵 r (R):e n d 1;f o r (i=0;i n ;i +)输出r的关系矩阵 (8 f o r(j=O;j n;j +)s c o u t r i j z/;a c o u t e n d 1;)f o r (i =0;i n;i +)对称闭包运算(f o r (j=0;j i;j +)i f (s E i j =1 I|s j i =1)s E i j =l;o s j i =1 ;)0 0o co u t e n d 1 对称闭包关系矩阵 s (R):,z e n d 1 ;f o r(i=0;i n;i+)输出s的关系矩阵。f o r (j=0;j co u t s i ;g c o u t e n d l;dd e l i v e r(t,R,n);关于传递闭包的函数o r e t urn 0;)v o i d d e l i v e r (i n t x 1 00 1 0 0 ,i n t y L 1 0 0 1 0 0 ,i n t n)关于传递闭包的函数1o i n t i,j,k,m,z 1 00 1 00;o f o r (m=0;m n;m+)f o r(i=0;in;i+)e f o r (j=0;j n;j+)i f(x i j =1 )g f o r (k =O;k n ;k+)。“i f (y j k =l)进行复合运算28bz i L k =1;*0)0f o r (i=0;i n;i+)8 f o r(j=0;j i f (z i Lj !=1 )凸 o z i j =0;0)f o r (i=0;i f o r (j =0;j n;j+)g x i j =x i j +z i j ;进行传递闭包运算)f o r(i=0;i n ;i+)f o r(j=0;j n;j+)i f (x i j !=0)8X i j =1;)c o u t e n d 1 传递闭包关系矩阵 t (R):e n d 1;f o r(i =0;i n;i+)输出x的关系矩阵(o f O r (j=0;j c o u t x i j z/c o u t e n d l;3.实验数据及结果分析:实验四图的矩阵表达一.实验目的熟悉图的矩阵表达方法一一邻接矩阵、可达矩阵和关联矩阵。二.实验内容运用邻接矩阵得到的可达矩阵来求解图的连通性质。三.实验过程1 .算法分析:可达矩阵表达图中任意两个节点间的可达关系,而邻接矩阵表达图中任意两个节点的邻接关系。求解邻接矩阵A1,A2,A3.小可知任意两个节点之间是否存在互相连通的路,从而判断是否可达。2.程序代码:#inc 1 udeusi n g namespace s td;vo i d ma i n()(int i,j,k,n,m,a 1 0 0 1 0 0,b 10 0 1 00,c 100 1 0 0,dl 0 0 100;coutV”请输入矩阵阶数:”;c i n n;cou t”请输入邻接矩阵a e n d l;f o r(i=0;in;i+)(of o r(j=0;j a i j ;wb i j=a i j ;0 0f o r(i=0 ;ifor(j=0;j n;j+)di j =0;。of or(m=0;mn;m+)gf o r(i=0;iV n ;i+)矩阵 c 为零矩阵s f or(j=0;j n;j+)E i j=0;0 f o r (k=0;k n;k+)0 0 ofor(i=0;in;i+)。fo r(j=0;j n;j+)6(g k i=c k i+b k j*a j i;/矩阵的乘法运算0)f o r (i=0;i n;i+)6for(j=0;jn;j+)*bi j =c i j ;。d i j =d i j +bi j ;)o o co u t m 为V m+l V,矩阵 b 为:e n d l;。f o r (i=0;i n;i+)必f o r (j=0;j n ;j+)。e co u t b i j 0;。o co u t e n d l;0 f o r (i=0;i n;i+)o f o r(j =0;j n ;j+)o 4 f(d i j !=0)8 d i j =l;o co u t C(可达矩阵 d 为:Ge n d l;f o r (i=0;i n;i +)(o f o r (j =0;j n ;j +)M C o u t d i j z,co u t e n d l;3.实验数据及结果分析:01 0 0 0为3,矩阵b为1 4 0 42 0 2 00 2 0 02 0 2 02 0 2 0)为2.矩阵b为:0 2 0 00 1 0 00 0 0 28 1 0 0L 0 1 0 0昉:U矩阵b为:3 0 0 0 2H n w 11 0 1 0H M H 1 E:document离版教学Debug便的矩阵表示.exe,4,.EAdocument、茶歌数学Debug遵的矩阵表示.exe1 1M400400040 4 H.40005a:B鳖阵接0矩邻人入0刖主R主DE。m0为4.矩阵b为:00n800008040400000880800,为5.矩阵b为:80080808080008080可达矩阵d为:0000161111111111111111111111111Press any key to continue1