离散数学,二元关系的性质
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*实验二、二元关系及其性质、闭包运算
【实验目的】掌握二元关系在计算机上的表示方法,并掌握如何判定关系的性质;掌握求关系闭包的方法。
【实验内容和原理】
(1)A上的二元关系用一个n×n关系矩阵R=表示,定义一个n×n数组r[n][n]表示n×n矩阵关系。
(2)若R对角线上的元素都是1,则R具有自反性。
(3)若R是对称矩阵,则R具有对称性。对称矩阵的判断方法是:
。*/
#include
#include
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 for(j=0;j { printf("row%d,line%d=",i+1,j+1); scanf("%d",&a[m]); m++; }; m=0; for(i=0;i { for(j=0;j { printf("%d",a[m]); m++; }; printf("\n"); }; for(i=0;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 for(j=0;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 for(j=0;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 { 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; }