离散数学上机实验报告材料Word下载.docx

上传人:b****5 文档编号:19655664 上传时间:2023-01-08 格式:DOCX 页数:16 大小:152.94KB
下载 相关 举报
离散数学上机实验报告材料Word下载.docx_第1页
第1页 / 共16页
离散数学上机实验报告材料Word下载.docx_第2页
第2页 / 共16页
离散数学上机实验报告材料Word下载.docx_第3页
第3页 / 共16页
离散数学上机实验报告材料Word下载.docx_第4页
第4页 / 共16页
离散数学上机实验报告材料Word下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

离散数学上机实验报告材料Word下载.docx

《离散数学上机实验报告材料Word下载.docx》由会员分享,可在线阅读,更多相关《离散数学上机实验报告材料Word下载.docx(16页珍藏版)》请在冰豆网上搜索。

离散数学上机实验报告材料Word下载.docx

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;

P<

2;

P++)

{

for(Q=0;

Q<

Q++)

printf("

\t%d"

P);

}

\nQ的值"

Q);

\n非P的值"

{

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

p=1;

else

p=0;

p);

}

\n非Q的值"

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

q=0;

q=1;

q);

\nP与Q的值"

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

a=0;

a=1;

a);

\nP或Q的值"

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

b=1;

b=0;

b);

\nP蕴含Q的值"

if(P==1&

&

Q==0)/*判断P蕴含Q的值*/

c=0;

c=1;

c);

\nP等价Q的值"

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

d=1;

d=0;

d);

\n"

return0;

}

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

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

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

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

三.实验过程

复合运算就将两个用矩阵表示的关系进行复合,即在第一个矩阵中寻找值为1的元素坐标(i,j),在第二个矩阵第j行寻找值为1的元素,若有,且坐标为(j,k),则产生的新的关系的矩阵中坐标为(i,k)的元素值为1。

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

//关系的复合运算

iostream>

usingnamespacestd;

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

cout<

<

"

请输入集合X中元素的个数:

;

cin>

>

n;

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

endl;

for(i=0;

i<

i++)

for(j=0;

j<

j++)

cin>

a[i][j];

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

b[i][j];

i++)//进行复合运算

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

for(k=0;

k<

k++)

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

c[i][k]=1;

if(c[i][j]!

=1)

c[i][j]=0;

关系矩阵Mr与Ms的复合运算结果是:

cout<

c[i][j]<

"

cout<

//关系的逆运算

inta[100][100],b[100][100],n,i,j,index;

scanf("

%d"

&

n);

scanf("

a[i][j]);

i++)//进行逆运算

{

index=i;

i=j;

j=index;

b[i][j]=1;

}

if(b[i][j]!

b[i][j]=0;

}

\n关系矩阵Mrc为:

%d"

b[i][j]);

printf("

实验三 

关系的闭包运算

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

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

在三种闭包中自反和对称闭包的求解很容易,对矩阵表示的关系,其自反闭包只要将矩阵的主对角线全部置为1就可;

对称闭包则加上关系的转置矩阵(逻辑加法);

传递闭包则直接根据t(R)=R+。

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

inti,j,n,R[100][100],r[100][100],s[100][100],t[100][100];

请输入矩阵的阶:

endl<

请输入R的关系矩阵:

i++)//输入R的关系矩阵

R[i][j];

i++)//将R的关系矩阵赋值给r,s,t

{

r[i][j]=R[i][j];

s[i][j]=R[i][j];

t[i][j]=R[i][j];

i++)//自反闭包运算

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

r[i][i]=1;

自反闭包关系矩阵r(R):

i++)//输出r的关系矩阵

r[i][j]<

i++)//对称闭包运算

i;

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

{

s[i][j]=1;

s[j][i]=1;

}

对称闭包关系矩阵s(R):

i++)//输出s的关系矩阵

s[i][j]<

deliver(t,R,n);

//关于传递闭包的函数

voiddeliver(intx[100][100],inty[100][100],intn)//关于传递闭包的函数

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

for(m=0;

m<

m++)

for(i=0;

i++)

for(j=0;

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

{

for(k=0;

if(y[j][k]==1)//进行复合运算

z[i][k]=1;

}

if(z[i][j]!

z[i][j]=0;

{

x[i][j]=x[i][j]+z[i][j];

//进行传递闭包运算

if(x[i][j]!

=0)

x[i][j]=1;

传递闭包关系矩阵t(R):

i++)//输出x的关系矩阵

x[i][j]<

实验四 

图的矩阵表示

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

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

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

求解邻接矩阵

可知任意两个节点之间是否存在互相连通的路,从而判断是否可达。

voidmain()

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

请输入矩阵阶数:

请输入邻接矩阵a:

b[i][j]=a[i][j];

i++)//矩阵d为零矩阵

d[i][j]=0;

i++)//矩阵c为零矩阵

for(k=0;

for(i=0;

for(j=0;

c[k][i]=c[k][i]+b[k][j]*a[j][i];

//矩阵的乘法运算

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

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

m为"

m+1<

矩阵b为:

cout<

b[i][j]<

}

if(d[i][j]!

d[i][j]=1;

可达矩阵d为:

d[i][j]<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1