离散数学二元关系传递性判别、闭包方法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

离散数学二元关系传递性判别、闭包方法实验报告

学院:理学院班级:11信息与计算科学1班

姓名:*** 学号:*************

一、实验目的

1. 通过上机程序,进一步加深对二元关系传递性判别,自反闭包,对称闭包,传递闭

包的理解。

2. 掌握传递性判别,Warshall算法。

3. 学会用程序解决离散数学中的问题。

4. 增强我们编写程序的能力

二、实验内容

实验1:二元关系传递性判别

实验2:有限集上给定关系的自反、对称和传递闭包(用Warshall算法)。

三、实验环境

在microsoft visual c++实验环境下完成的,而所设计的程序也在这个环境下通过了编译,运行和测试。

四、实验原理和实现过程

实验1:

#include

using namespace std;

void main()

{

int n,i,j,k;

int m=0; //m是判断传递关系计数参数

cout<<"请输入矩阵的行列数n:";

cin>>n;

int a[20][20];

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

{

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

{

cout<<"请输入a["<

cin>>a[i][j];

}

} //输入R矩阵

cout<<"R的关系矩阵为:"<

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

{

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

{

cout<

}

cout<

} //输出R矩阵

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

{

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

{

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

{

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

{

if(a[i][k]

{

m=m+1; //如果有一个数不成立,m加1

}

}

}

}

}

if(m==0) cout<<"R有传递关系"<

else cout<<"R没有传递关系"<

}

实验2:

1)自反闭包

#include

using namespace std;

void main()

{

int n,i,j;

cout<<"请输入矩阵的行列数n:";

cin>>n;

int a[20][20];

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

{

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

{

cout<<"请输入a["<

cin>>a[i][j];

}

}

cout<<"R的关系矩阵为:"<

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

{

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

{

cout<

}

cout<

}

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

{

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

{

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

{

a[i][i]=1;

a[j][j]=1; //把符合条件的对角线上的值改为1 }

}

}

cout<<"R的关系矩阵为:"<

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

{

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

{

cout<

}

cout<

}

}

2)对称闭包

#include

using namespace std;

void main()

{

int n,i,j;

cout<<"请输入矩阵的行列数n:";

cin>>n;

int a[20][20];

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

{

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

{

cout<<"请输入a["<

cin>>a[i][j];

}

}

cout<<"R的关系矩阵为:"<

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

{

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

{

cout<

}

cout<

}

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

{

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

{

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

{

a[j][i]=1; //对称元素的值改为1

}

}

}

cout<<"R的对称闭包矩阵为:"<

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

{

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

{

cout<

}

cout<

}

}

3)传递闭包

#include

using namespace std;

void main()

{

int n,i,j,k;

int m=0;

相关文档
最新文档