当前位置:文档之家› 离散数学,二元关系的性质

离散数学,二元关系的性质

/*实验二、二元关系及其性质、闭包运算
【实验目的】掌握二元关系在计算机上的表示方法,并掌握如何判定关系的性质;掌握求关系闭包的方法。

【实验内容和原理】
(1)A上的二元关系用一个n×n关系矩阵R=表示,定义一个n×n数组r[n][n]表示n×n矩阵关系。

(2)若R对角线上的元素都是1,则R具有自反性。

(3)若R是对称矩阵,则R具有对称性。

对称矩阵的判断方法是:。

*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a;int n;int i,j;int m=0;int k=0;int x;int z;int t;int b=0;int h;int y;int o,p;int l;
printf("请输入元素的个数:");
scanf("%d",&n);
a=(int*)malloc((n*n)*sizeof(int));
printf("输入矩阵中的数:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("row%d,line%d=",i+1,j+1);
scanf("%d",&a[m]);
m++;
};
m=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d",a[m]);
m++;
};
printf("\n");
};
for(i=0;i<n;i++)
{
j=i*n+i;
if(a[j]==1) k++;
};
if(k==n) printf("R具有自反性\n");
k=0;
i=0;
j=n*n-1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
o=i*n+j;
p=j*n+i;
if(0==((o+1)/n)*n+(o+1)/n) continue;
if(a[o]!=a[p]) k++;
};
if(k==0) printf("R有对称性\n");
if(k>0) printf("R没有对称性\n");
k=0;x=0;t=0;y=l=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
k++;
x=k/n;
if(k-1==x*n+x) continue;
m=i*n+j;
if(a[m]==1)
{l++;
b=j;
for(z=0;z<n;z++)
{
m=b*n+z;
h=(m+1)/n;
if(m==h*n+h) continue;
if(a[m]==1)
{
m=i*n+z;
if(a[m]==0) t++;
}
else y++;
};
};
};
if(t==0&&y!=l) printf("R具有传递性\n");
free(a); return 0; }。

相关主题