对称:
通过算法设计并编程实现对给定集合上的关系是否为对称关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法
自反:
通过算法设计并编程实现对给定集合上的关系是否为自反关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法。 2.【实验内容】
已知关系R由关系矩阵M给出,要求判断由M表示的这个关系是否为对称关
12系。假定R的关系矩阵为:M34234103
0123213.【实验要求】
C语言编程实现
4.【算法描述】
对称:
从给定的关系矩阵来判断关系R是否为对称是很容易的。若M(R的关系矩阵)为对称矩阵,则R是对称关系;若M为反对称矩阵,则R是反对称关系。因为R为对称的是等价关系的必要条件,所以,本算法可以作为判等价关系算法的子程序给出。
算法实现:
(1) 输入关系矩阵M(M为n阶方阵);
(2) 判断对称性,对于i=2,3,….,n;j=1,2,……,i-1,若存在mij=mji,
则R是对称的; (3) 判断反对称性;
(4) 判断既是对称的又是反对称的; (5) 判断既不是对称的又不是反对称的; (6) 输出判断结果。
自反:
从给定的关系矩阵来断判关系R是否为自反是很容易的。若M(R的关系矩阵)的主对角线元素均为1,则R是自反关系;若M(R的关系矩阵)的主对角线元素均为0,则R是反自反关系;若M(R的关系矩阵)的主对角线元素既有1又有0,则R既不是自反关系也不是反自反关系。本算法可以作为判等价关系算法的子程序给出。
算法实现
(1) 输入关系矩阵M(M为n阶方阵)。
(2) 判断自反性,对于i=1,2,….,n;若存在mii=0,则R不是自反
的;若存在mii=1,则R是自反的;否则R既不是自反关系也不是反自反关系。 (3) 输出判断结果。
源代码
#include int d; while(d) { printf(\"欢迎使用关系性质的判断系统\\n\\n 1. 对称关系的判断 2. 自反关系的判 断\\n\\n请输入选项:\"); scanf(\"%d\switch(d){ case 1: r();break; case 2: z();break; case 0: break; } } printf(\"\\n\"); printf(\"是否还继续? 是请输入1,否请输入0:\"); scanf(\"%d\printf(\"\\n\\n\"); }return 0; void r() { int a[30][30]; int m,n,i,j,c,b,d; c=0; d=0; b=0; d=1; printf(\"请输入矩阵的行数\"); scanf(\"%d\ printf(\"请输入矩阵的列数\"); scanf(\"%d\for(i=0;i } printf(\"%d \ printf(\"\\n\"); for(i=0;i if(c==0) printf(\"该矩阵是既对称又反对称的\\n\"); for(j=0;j if(a[j][i]!=0){ } c=2; break; for(j=0;j c=1; break; } else if(c==1){ }} for(i=0;i printf(\"该矩阵是反对称性的\\n\"); for(j=0;j if(a[j][i]!=0){ } c=2; break; void z() { int m,n,i,j,a[80][80],c; c=0; printf(\"请输入矩阵的行数\"); scanf(\"%d\ printf(\"请输入矩阵的列数\"); scanf(\"%d\for(i=0;i } } } printf(\"关系矩阵M为:\\n\"); for(i=0;i if(a[i][i]!=0){ } c=1;break; for(j=0;j printf(\"\\n\"); 因篇幅问题不能全部显示,请点此查看更多更全内容