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

  • 129
  • 0
  • 约2.47千字
  • 约 9页
  • 2017-02-28 发布于重庆
  • 举报

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

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

离散数学二元关系传递性判别、闭包方法实验报告学院:理学院 班级:11信息与计算科学1班 姓名:*** 学号:*************实验目的1. 通过上机程序,进一步加深对二元关系传递性判别,自反闭包,对称闭包,传递闭包的理解。 2. 掌握传递性判别,Warshall算法。 3. 学会用程序解决离散数学中的问题。 4. 增强我们编写程序的能力实验内容 实验1:二元关系传递性判别实验2:有限集上给定关系的自反、对称和传递闭包(用Warshall算法)。 实验环境 在microsoft visual c++实验环境下完成的,而所设计的程序也在这个环境下通过了编译,运行和测试。 实验原理和实现过程实验1:#include iostreamusing namespace std;void main(){int n,i,j,k;int m=0; //m是判断传递关系计数参数cout请输入矩阵的行列数n:;cinn;int a[20][20];for(i=1;i=n;i++){for(j=1;j=n;j++){cout请输入a[i][j]:;cina[i][j];}} //输入R矩阵coutR的关系矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i][j] ;}coutendl;} //输出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]a[j][k] //利用布尔加的特征,前一行数大于后一行{m=m+1; //如果有一个数不成立,m加1}}}}}if(m==0) coutR有传递关系endl;else coutR没有传递关系endl;}实验2:自反闭包#include iostreamusing namespace std;void main(){int n,i,j;cout请输入矩阵的行列数n:;cinn;int a[20][20];for(i=1;i=n;i++){for(j=1;j=n;j++){cout请输入a[i][j]:;cina[i][j];}}coutR的关系矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i][j] ;}coutendl;}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}}}coutR的关系矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i][j] ;}coutendl;}}对称闭包#include iostreamusing namespace std;void main(){int n,i,j;cout请输入矩阵的行列数n:;cinn;int a[20][20];for(i=1;i=n;i++){for(j=1;j=n;j++){cout请输入a[i][j]:;cina[i][j];}}coutR的关系矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i][j] ;}coutendl;}for(i=1;i=n;i++){for(j=1;j=n;j++){if(a[i][j]!=0){a[j][i]=1; //对称元素的值改为1}}}coutR的对称闭包矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i][j] ;}coutendl;}}传递闭包#include iostreamusing namespace std;void main(){int n,i,j,k;int m=0;cout请输入矩阵的行列数n:;cinn;int a[20][20];for(i=1;i=n;i++){for(j=1;j=n;j++){cout请输入a[i][j]:;cina[i][j];}}coutR的关系矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i][j] ;}coutendl;}for(j=1;j=n;j++){for(i=1;i=n;i++){if(a[i][j]==1){for(k=1;k=n;k++){a[i][k]=a[i][k]+a[j][k]; //warshall方法if(a[i][k]==2) a[i][k]=1; //规范布尔加}}}}coutR的传递闭包矩阵为:endl;for(i=1;i=n;i++){for(j=1;j=n;j++){couta[i

文档评论(0)

1亿VIP精品文档

相关文档