2023年离散数学上机实验报告_第1页
2023年离散数学上机实验报告_第2页
2023年离散数学上机实验报告_第3页
2023年离散数学上机实验报告_第4页
2023年离散数学上机实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《离散数学》

实验报告

姓名:

学号:

班级:

实验一连结词逻辑运算

实验目的

实现二元合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,运用程序语言

实现逻辑这儿种逻辑运算。

二.实验内容

从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的真值。

规定对输入内容进行分析,假如不符合0、1条件需要重新输入,程序有良好的输入输出界面。

三.实验环境

使用MicrosoftVisualC++6.。为编程软件,采用称C/C++语言为编程语言实

现。

四.实验过程

1.算法分析:

合取:P,q都为1的时候为1,其他为0

析取:p,q都为0的时候为0,其他为1

蕴含:P为1,q为0时为0,其他为1

等价:P,q同真同假

2.程序代码:

#include<stdio.h>

intmain()

(

®intP,Q,a,b,c,d,p,q;

printf(〃P的值〃);

for(P=0;PV2;P++)

(

for(Q=0;Q<2;Q++)

printf(z,\t%dn,P);

}

printf(〃\nQ的值〃);

»for(P=0;P<2;P++)

。for(Q=0;Q<2;Q++)

gprintf("\t%d",Q);

}

printf("\n非P的值”);

•for(P=0;P<2;P++)

•(

。for(Q=0;Q〈2;Q++)

8{

。oif(P==0)/*判断非P的值*/

。P=1;

o®else

0;

。printf(〃\t%d〃,p);

6)

oprintf(M\n非Q的值〃);

for(P=0;P<2;P++)

0(

ofor(Q=0;Q<2;Q++)

8{

°6if(Q—=1)/*判断非Q的值*/

。q=0;

»else

P二l;

8printf("\t%d〃,q);

0)

}

oprintf(z,\nP与Q的值”);

for(P=0;P〈2;P++)

(

。for(Q=0;Q<2;Q++)

。if(Q=0IP==0)/*判断P与Q的值*/

。a=0;

。eIse

o<>a=1;

rintf(〃\t%d〃,a);

6}

}

printf(〃\nP或Q的值〃);

ofor(P=0;P<2;P++)

(

for(Q=0;Q<2;Q++)

8(

if(Q==l||P==1)/*判断P或Q的值*/

«>b=1;

gelse

oooob=0;

叩rintf('\t%d",b);

}

printf(〃\nP蕴含Q的值〃);

for(P=0;P<2;P++)

(

ofor(Q=0;Q<2;Q++)

必if(P==l&&Q=0)/*判断P蕴含Q的值*/

。c=0;

比Ise

空=1;

oprintf(u\t%d,z,c);

}

°)

printf(•,\nP等价Q的值〃);

for(P=0;P<2;P++)

。{

8for(Q=0;Q<2;Q++)

81

3if(P=Q)/*判断P等价Q的值*/

。d=l;

。else

gd=0;

aeprintf("\t%d”,d);

0}

)

printf("\n〃);

oreturn0;

}

3.实验数据及结果分析:

实验二关系的复合运算及逆运算

一.实验目的

熟悉关系的复合运算和逆运算,编程实现关系复合运算和逆运算算法。

二.实验内容

运用矩阵求解有限集上的复合关系和逆关系。

三.实验过程

1.算法分析:

复合运算就将两个用矩阵表达的关系进行复合,即在第一个矩阵中寻找值为1的元素坐标

(i,j),在第二个矩阵第j行寻找值为1的元素,若有,且坐标为(j,k),则产生的新

的关系的矩阵中坐标为(i,k)的元素值为1。

逆运算就是将用矩阵中值为1的元素坐标(i,j)对调,产生新的关系的矩阵中坐标为(j,i)

的元素值为lo

2.程序代码:

〃关系的复合运算

#include<iostream>

usingnamespacestd;

intmain()

I

ointa[100][100],b[100][100],c[100][100],i,j,k,n;

。cout*〃请输入集合X中元素的个数:〃;

cin>>n;

cout<<〃请输入关系矩阵Mr的格式:然〈<endl;

ofor(i=0;iVn;i++)

for(j=O;j<n;j++)

00cin»a[i][j];

°}

ocout<<“请输入关系矩阵Ms的格式:"<Xendl;

ofor(i=0;i<n;i++)

°{

for(j=0;j<n;j++)

℃in>>b[i][j];

}

ofor(i=0;i<n;i++)〃进行复合运算

°{

for(j=0;j<n;j++)

«>if(a[i][j]==l)

gofor(k=O;k〈n;k++)

°if(b[j][k]==1)

。。c[i][k]=l;

}

for(i=0;i<n;i++)

(

。for(j=0;j<n;j++)

。f(c[i][j]!=1)

。ac[i][j]=0;

ocout<<end1;

cout<V〃关系矩阵Mr与Ms的复合运算结果是:〃“end1;

ofor(i=0;i<n;i++)

gfor(j=0;j<n;j++)

eCOUt<<C[1][j]<<〃";

。cout«end1;

3;

return0;

)

//关系的逆运算

#include<stdio.h>

intmain()

1

ointa[100][l00],b[l00][100],n,i,j,index;

叩rintf(〃请输入集合X中元素的个数:〃);

oscanf(〃%d〃,&n);

叩rintf(〃请输入关系矩阵Mr的格式:\n〃);

ofor(i=0;i<n;i++)

(

8for(j=O;j<n;j++)

«>scanf(〃%d〃,&a[i][j]);

for(i=0;i<n;i++)//进行逆运算

才or(j=0;j<n;j++)

aif(a[i][j]==1)

8index=i;

。i=j;

ggj=index;

ab[i][j]=1;

)

}

»for(i=0;i<n;i++)

(

-for(j=0;j<n;j++)

if(b[i][j]!=l)

»b[i][j]=0;

•)

oprintf(/z\n关系矩阵Mrc为:\n");

•for(i=0;i<n;i++)

(

for(j=0;j<n;j++)

oprintf("%db[i][j]);

。printff\n");

»}

return0;»

)

3.实验数据及结果分析:

,•E:\document虚散效学\Debug、关系的复合运算.exe'

法谀人集含X中元毒歌事:5

请棚入关系矩阵Mr的和舍

01000

01000

00010

00000

00000

请输入关系矩阵胎的格式:

00100

00001

10000

01000

00000

关系矩阵济与也的复合运算结果是:

00001

00001

01000

00000

00000

Pressanykeytocontinue

关系矩阵Mre为:

100

100

011

Pressanykeytocontinue.

实验三关系的闭包运算

一.实验目的

熟悉关系的闭包运算,编程实现关系闭包运算算法。

二.实验内容

运用矩阵求解有限集上给定关系的自反、对称和传递闭包。

三.实验过程

1.算法分析:

在三种闭包中自反和对称闭包的求解很容易,对矩阵表达的关系,其自反闭包只要将矩阵的

主对角线所有置为1就可;对称闭包则加上关系的转置矩阵(逻辑加法);传递闭包则直接根

据t(R)=R+。

2.程序代码:

#inc1ude<iostream>

usingnamespacestd;

voidde1iver(intx[100][100],inty[100][100],intn);

intmain()

(

inti,j.n,R[100][100],r[l00][100],s[l00][100],t[1

00][100];

℃out<<〃请输入矩阵的阶:”;

<>cin»n;

»cout«endl<<"请输入R的关系矩阵:"end1;

for(i=0;i<n;i++)〃输入R的关系矩阵

(

ofor(j=O;j<n;j++)

cin>>R[i][j];

for(i=0;i<n;i++)//将R的关系矩阵赋值给r,s,t

»for(j=0;j<n;j++)

(

[i][j];

s[iJ[j>R[i][j];

6Mt[i][j]=R[i][j];

)

}。

ofor(i=0;i<n;i++)//自反闭包运算

(

»if(r[i][i]==0)

6r[i]Li]=l;

)

0coutVVendlVV”自反闭包关系矩阵r(R):"<<end1;

»for(i=0;i<n;i++)〃输出r的关系矩阵

°(

8for(j=O;j<n;j++)

scout«r[i][j]«z/";

acout<<end1;

»)

»for(i=0;i<n;i++)〃对称闭包运算

for(j=0;j<i;j++)

if(sEi][j]==1I|s[j][i]==1)

°sEi][j]=l;

os[j][i]=1;

)

)

0}0

ocout<<end1«〃对称闭包关系矩阵s(R):,z<<end1;

for(i=0;i<n;i++)〃输出s的关系矩阵

。{

。for(j=0;j<n;j++)

~>£>cout<<s[i]〃;

gcout<<endl;

d

<>deliver(t,R,n);〃关于传递闭包的函数

oreturn0;

)

voiddeliver(intx[100][100],intyL100][100],intn)〃关于

传递闭包的函数

1

ointi,j,k,m,z[100][100];

ofor(m=0;m<n;m++)

°{

for(i=0;i〈n;i++)

efor(j=0;j<n;j++)

•if(x[i][j]==1)

gfor(k=O;k<n;k++)

。“if(y[j][k]==l)〃进行复合运算

28bz[i]Lk]=1;

«*}

}

0)

0for(i=0;i<n;i++)

8for(j=0;j<n;j++)

«>if(z[i]Lj]!=1)

凸oz[i][j]=0;

0)

for(i=0;i<n;i++)

«>for(j=0;j<n;j++)

gx[i][j]=x[i][j]+z[i][j];〃进行传递闭包运算

)

for(i=0;i<n;i++)

for(j=0;j<n;j++)

if(x[i][j]!=0)

8X[i][j]=1;

)

cout«end1<<"传递闭包关系矩阵t(R):end1;

»for(i=0;i<n;i++)〃输出x的关系矩阵

»(

ofOr(j=0;j<n;j++)

«>cout«x[i][j]«z/

cout<<endl;

3.实验数据及结果分析:

实验四图的矩阵表达

一.实验目的

熟悉图的矩阵表达方法一一邻接矩阵、可达矩阵和关联矩阵。

二.实验内容

运用邻接矩阵得到的可达矩阵来求解图的连通性质。

三.实验过程

1.算法分析:

可达矩阵表达图中任意两个节点间的可达关系,而邻接矩阵表达图中任意两个节点的邻接关

系。求解邻接矩阵A1,A2,A3......小可知任意两个节点之间是否存在互相连通的路,从而

判断是否可达。

2.程序代码:

#inc1ude<iostream>

usingnamespacestd;

voidmain()

(

inti,j,k,n,m,a[100][100],b[100][100],c[100][100],d[l00][1

00];

•coutV〈”请输入矩阵阶数:”;

»cin»n;

cout《”请输入邻接矩阵a<«endl;

for(i=0;i<n;i++)

(

•ofor(j=0;j<n;j++)

»cin>>a[i][j];

wb[i][j]=a[i][j];

0}

0}

for(i=0;i<n;i++)〃矩阵d为零矩阵

。(

«>for(j=0;j<n;j++)

d[i][j]=0;

。}

ofor(m=0;m<n;m++)

gfor(i=0;iVn;i++)〃矩阵c为零矩阵

{

sfor(j=0;j<n;j++)

Ei][j]=0;

0for(k=0;k<n;k++)

0{

0ofor(i=0;i<n;i++)

。for(j=0;j<n;j++)

6(

g℃[k][i]=c[k][i]+b[k][j]*a[j][i];//矩阵的乘法运算

0)

°}

for(i=0;i<n;i++)

6for(j=0;j<n;j++)

*b[i][j]=c[i][j];

。。d[i][j]=d[i][j]+b[i][j];

)

)

oocout<<〃m为〃V<m+l<V〃,矩阵b为:〃<<endl;

。for(i=0;i<n;i++)

必for(j=0;j<n;j++)

。ecout«b[i][j]«0;

。ocout«endl;

0}

for(i=0;i<n;i++)

ofor(j=0;j<n;j++)

o4f(d[i][j]!=0)

8d[i][j]=l;

ocoutC(〃可达矩阵d为:〃Gendl;

for(i=0;i<n;i++)

(

ofor(j=0;j<n;j++)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论