**大学集合论与图论上机实验报告
课程名称: 集合论与图论
指导教师: 年级:2014 姓名: 上机实验成绩:
上机实验日期:2015-11-17 上机实验名称:二元关系传递判别、闭包方法 学号:[1**********]09
上机实验编号: 组号:
一、实验目的
1. 通过上机程序,进一步加深对二元关系传递性判别,自反闭包,对称闭包,传递闭包的理解。
2. 掌握传递性判别。
3. 学会用程序解决离散数学中的问题。
4. 增强我们编写程序的能力。
二、实验内容
实验1:二元关系传递性判别
实验2:有限集上给定关系的自反、对称和传递闭包
三、使用环境
Windows 7 vs2012
四、核心代码及调试过程
//实验一传递性
#include
using namespace std;
void main()
{
int n,i,j,k;
int m=0;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
上机实验时间:两课时
} //输入R 矩阵
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
} //输出R 矩阵
for (i=1;i
{
for (j=1;j
{
if (a[i][j]!=0)
{
for (k=1;k
{
if (a[i][k]
}
}
}
}
}
if (m==0) cout
else cout
}
//实验2:
//1)自反闭包
#include
using namespace std;
void main()
{
int n,i,j;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout{
cout
}
for (i=1;i
for (j=1;j
{
if (a[i][j]!=0)
{
a[i][i]=1;
a[j][j]=1; }
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
}
//2)对称闭包
#include
using namespace std;
void main()
{
int n,i,j;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
for (i=1;i
{
for (j=1;j
{
if (a[i][j]!=0)
{
a[j][i]=1; }
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
}
//3)传递闭包
#include
using namespace std;
void main()
{
int n,i,j,k;
int m=0;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
for (j=1;j
{
for (i=1;i
{
if (a[i][j]==1)
{
for (k=1;k
{
a[i][k]=a[i][k]+a[j][k];
if (a[i][k]==2) a[i][k]=1;
}
}
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
}
实验1:
实验2:
1) 自反闭包
2) 对称闭包
3)传递闭包
五、总结
通过这次的实验,使我明白了,平日里学习不能浅尝辄止,必须要知道它的方法。做这次实验前我以为我对这块知识已经很熟了,但实际做的时候,发现我还是不是特别懂,必须要反复看书。其次,让我知道了,我平时学的数学知识可以很好的跟计算机结合,让我对程序设计有了更好的认识。
**大学集合论与图论上机实验报告
课程名称: 集合论与图论
指导教师: 年级:2014 姓名: 上机实验成绩:
上机实验日期:2015-11-17 上机实验名称:二元关系传递判别、闭包方法 学号:[1**********]09
上机实验编号: 组号:
一、实验目的
1. 通过上机程序,进一步加深对二元关系传递性判别,自反闭包,对称闭包,传递闭包的理解。
2. 掌握传递性判别。
3. 学会用程序解决离散数学中的问题。
4. 增强我们编写程序的能力。
二、实验内容
实验1:二元关系传递性判别
实验2:有限集上给定关系的自反、对称和传递闭包
三、使用环境
Windows 7 vs2012
四、核心代码及调试过程
//实验一传递性
#include
using namespace std;
void main()
{
int n,i,j,k;
int m=0;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
上机实验时间:两课时
} //输入R 矩阵
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
} //输出R 矩阵
for (i=1;i
{
for (j=1;j
{
if (a[i][j]!=0)
{
for (k=1;k
{
if (a[i][k]
}
}
}
}
}
if (m==0) cout
else cout
}
//实验2:
//1)自反闭包
#include
using namespace std;
void main()
{
int n,i,j;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout{
cout
}
for (i=1;i
for (j=1;j
{
if (a[i][j]!=0)
{
a[i][i]=1;
a[j][j]=1; }
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
}
//2)对称闭包
#include
using namespace std;
void main()
{
int n,i,j;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
for (i=1;i
{
for (j=1;j
{
if (a[i][j]!=0)
{
a[j][i]=1; }
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
}
//3)传递闭包
#include
using namespace std;
void main()
{
int n,i,j,k;
int m=0;
cout
cin>>n;
int a[20][20];
for (i=1;i
{
for (j=1;j
{
cout
cin>>a[i][j];
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
for (j=1;j
{
for (i=1;i
{
if (a[i][j]==1)
{
for (k=1;k
{
a[i][k]=a[i][k]+a[j][k];
if (a[i][k]==2) a[i][k]=1;
}
}
}
}
cout
for (i=1;i
{
for (j=1;j
{
cout}
cout
}
}
实验1:
实验2:
1) 自反闭包
2) 对称闭包
3)传递闭包
五、总结
通过这次的实验,使我明白了,平日里学习不能浅尝辄止,必须要知道它的方法。做这次实验前我以为我对这块知识已经很熟了,但实际做的时候,发现我还是不是特别懂,必须要反复看书。其次,让我知道了,我平时学的数学知识可以很好的跟计算机结合,让我对程序设计有了更好的认识。