题目:本题判断二元关系的性质:自反性(reflexive)、对称性(symmetrical)、传递性(transitive)。

输入格式:

输入关系矩阵的阶数n(n<=10),接着输入如具有关系R的元素下标(i,j),输入 -1 -1,结束输入。判断该二元关系具有的性质。

输出格式:

输出二元关系a的性质,如果具有自反性性,则显示“a is reflexive”,如果具有对称性,则显示“a is transitive”,如果具有传递性,则显示“a is transitive”,如果具有自反性、对称性、传递性,则显示具有等价性“a is equivalent”。如果输入的n大于10,或者输入的数组元素下标i,j大于等于n(数组元素的下标应小于n),则显示"error",并结束程序。注意每个显示前后无空格,末尾回车。

输入样例:

在这里给出一组输入。例如:

3
1 0 2 0 0 1 2 1  0 2 1 2 -1 -1

输出样例:

在这里给出相应的输出。例如:

a is symmetrical

一、知识点说明:

一直以来用关系图理解自反对称传递等性质,放到关系矩阵中我就懵了

首先:关系图中有n个点 ,关系矩阵就用 n阶矩阵

其次:三种性质都是蕴含式

注意:记关系图中各点依次 为1,2,3....;关系矩阵中,有向边(关系)则用(i, j)表示

最后:三种性质特点(题目只考察自反对称传递,这里先不提反自反,反对称)

1.自反性

关系图,每个顶点都有环,则矩阵中表示(a, a)[即:有从该点自身到自身的有向边]

关系矩阵,n阶矩阵,主对角线元素全为1.

2.对称性

关系图:如果两个顶点之间有边,则一定是一对方向相反的边

(注意:这是蕴含式,如果前件不成立,两点之间连边都没有,同样满足对称性)

关系矩阵:存在关系(a,b)且存在关系(b,a),即:矩阵为对称矩阵

3.传递性

关系图:如果顶点a到b有边,b到c有边,则a到c有边

(同样注意:蕴含式,如果前件不成立,即不满足"a到b有边,且b到c有边",也满足传递性)

关系矩阵:如果存在关系(a,b)且(b,c),则存在关系(a,c)

二、代码:(分别用函数判断)

最开始想着函数判断思路可能会更清晰,后来发现同学的代码不用函数更简洁

#include<iostream>
using namespace std;//1:判断自反性函数 :
bool Reflexive(int ARR[10][10], int n){int a1 = 0;//定义一个计数器,用于记录对角线为1的元素个数for (int i = 0; i <= n; i++){for (int j = 0; j <= n; j++){if (ARR[i][j] == 1)//为1 的元素进入,准备判断各种性质{if (i == j)//其实两个条件可以合并{a1++;//满足自反的元素个数}}}}if ( a1 == n){return 1;//满足自反性,返回1}else{return 0;//不满足自反}}//2:判断对称性函数
bool Symmetrical(int ARR[10][10], int n){int B = 0;//记录关系数int b= 0;//记录满足对称性的关系数目for (int i = 0; i <= n; i++){for (int j = 0; j <= n; j++){if (ARR[i][j] == 1){B++;//(1,1)这种对角线关系,也满足对称性定义if (ARR[i][j] == 1 && ARR[j][i] == 1){b++;//两个顶点间是双向边,则记录}}}}if (b== B )//存在关系<i,j>,且存在<j,i>,双向边,则b==B{return 1;//满足对称}else{return 0;//不对称}}//3:判断传递性函数 :
bool Transitive(int ARR[10][10], int n){int C1 = 0;int c1 = 0;for (int i = 0; i <= n; i++){for (int j = 0; j <= n; j++){if (ARR[i][j] == 1)//为1 的元素进入,准备判断各种性质{for (int k = 0; k <= n; k++) //用于(j,k){if (ARR[j][k] == 1){C1++;//记录前件“顶点a到b有边,且b到c有边”  的次数                  if (ARR[i][k] == 1){c1++;//记录后件“a到c有边”的次数}}}}}}if (c1 == C1 || C1 == 0)//前件后件均成立,顶点a到b有边,b到c有边,且a到c有边,则蕴含式为真,满足传递(c1==C1);或者蕴含式前件都不满足,即不存在“顶点a到b有边,且b到c有边”,蕴含式也为真,亦满足传递性(C1==0);{return 1;//满足传递性}else{return 0;//不满足传递性}}int main(){
//一:输入元素阶数n,以及元素关系(a,b),初始化关系 为1int arr[10][10] = { 0 };int n, a = 0, b = 0;cin >> n;while (a != -1 && b != -1)//输入(-1,-1)时,结束输入{cin >> a >> b;if (n > 10 || a >= n || b >= n)//解决题目中[如果输入的n大于10,或者输入的数组元素下标i,j大于等于n(数组元素的下标应小于n),则显示"error",并结束程序。]问题{cout << "error";return 0;}arr[a][b] = 1;//初始化该关系为1}//二:调用函数判断并输出性质int A, B, C;//记录性质,满足对应性质为1,不满足为0A = Reflexive(arr, n);B = Symmetrical(arr, n);C = Transitive(arr, n);//这题输出格式,满足几条性质就输出几条性质;三种均满足,则输出三条性质外,还需格外输出等价性。if (A == 1){cout << "a is reflexive" << endl;}if (B == 1){cout << "a is symmetrical" << endl;}if (C == 1){cout << "a is transitive" << endl;}if (A == 1 && B == 1 && C == 1)//三种性质均满足,格外输出等价性{cout << "a is equivalent";}}

有空了重做,简化了再来

判断二元关系的性质:自反性、对称性、传递性相关推荐

  1. 南京邮电大学离散数学实验二(二元关系的性质判定)

    文章目录 一. 实验目的和要求 二.实验环境(实验设备) 三.实验原理及内容 (一)数据结构 1.全局变量: 2.函数调用关系 (二)核心代码 1.代码 2.时间复杂度为O(n2)和O(n3) (三) ...

  2. 【离散数学】二元关系的性质

    二元关系的性质 自反性 反自反性 对称性 反对称性 传递性 自反性与反自反性 对称性与反对称性 二元关系的主要性质有:自反性.反自反性.对称性.反对称性.传递性. 自反性 设 R R R</

  3. 在 JDK 7 版本以上, Comparator 要满足自反性,传递性,对称性

    在 JDK 7 版本以上, Comparator 要满足自反性,传递性,对称性,不然 Arrays . sort , Collections . sort 会报 IllegalArgumentExce ...

  4. 判断三角形的性质(直角或等腰)简便算法

    学习目标: 判断三角形的性质(直角或等腰)简便算法 每日一练 题目 输入三角形的三条边a,b,c,判断它们能否构成三角形.若能构成三角形,指出是何种三角形(等腰三角形.直角三角形.一般三角形). (提 ...

  5. Problem C: 判断三角形的性质

    Problem C: 判断三角形的性质 Description 给出三角形的三边长度,判断是什么三角形. Input 输入为多行,每行3个很小的非负整数,表示一个三角形的三条边的长度.当输入的三角形边 ...

  6. 山东科技大学OJ题库 1097 判断三角形的性质

    1097 判断三角形的性质 Description 给出三角形的三边长度,判断是什么三角形. Input 输入为多行,每行3个很小的非负整数,表示一个三角形的三条边的长度.当输入的三角形边长为0时表示 ...

  7. 离散数学实验二 实现任意集合上二元关系的性质判定

    实验原理 首先输入集合元素个数,再输入集合元素循环放入数组中,接着输入关系将其转换为关系矩阵,最后调用judge函数输出性质. #include<iostream> #define MAX ...

  8. 合同矩阵判断方法及性质

    判断合同矩阵的充要条件 两个实对称矩阵合同的充要条件是它们的正负惯性指数相同. 正惯性指数是线性代数里矩阵的正的特征值个数,负惯性指数是线性代数里矩阵的负的特征值个数. 如图所示,上述矩阵,正惯性指数 ...

  9. 问题 C: 判断三角形的性质

    题目描述 给出三角形的三边长度,判断是什么三角形. 输入 输入为多行,每行3个很小的非负整数,表示一个三角形的三条边的长度.当输入的三角形边长为0时表示输入结束. 输出 输出为多行,每行对应一个输入的 ...

  10. 二元关系的性质与二元关系:等价,相容,偏序

    等价 相容 相容关系的关系图的特点 每个节点都有环(自反性决定的) 不同节点之间如果有边一定成对出现(对称性决定) 由以上特点可对关系图简化 不画环(自反性决定的) 两个有向边用一个无向边取代(对称性 ...

最新文章

  1. 腾讯 JDK 11 正式开源,高性能、太牛逼啦!
  2. python中将嵌套列表展开
  3. 深入了解volatile
  4. 深究AngularJS——ng-drag、ng-drop
  5. 我们需要一个时期,把我们之前的愿景用实际行动实现
  6. leetCode-第四题求两个数组的中位数
  7. ibm cloud怎么使用_使用VueJS,FeathersJS和GraphQL快速入门IBM Cloud
  8. linux securefx 传输文件失败,解惑:如何使用SecureCRT上传和下载文件、SecureFX乱码问题...
  9. stm32按键矩阵代码_STM32学习日志——电容触摸按键实验(20-06-27)
  10. 【Python】闭包Closure
  11. 国外注册的域名dns服务器换回国内dns服务器的详细教程!...
  12. 基数树(radix tree)
  13. mysql的db.opt文件_MySQL数据库的db.opt文件
  14. OpenGL第三方库:glad初始了解与下载
  15. heic图片格式转换jpg_如何在Mac上通过简单方法将HEIC图像转换为JPG
  16. 微信小程序设置了合法请求域名,小程序一直提示不在合法域名列别中
  17. kafka-生产者使用
  18. ucore lab1 任务六
  19. 用PS怎样把一个字体居中整个图片
  20. 雏鸟(1)--Foundation

热门文章

  1. 排序—时间复杂度为O(n2)的三种排序算法
  2. 使用CMD隐藏文件夹
  3. THREE实战2_正交投影相机与透视相机
  4. 人脸识别,人脸识别门禁系统的原理
  5. 写给2017年报名海风的同学
  6. 一阶微分方程的物理意义_薛定谔方程的物理意义
  7. 从薛定谔方程到K-S方程
  8. centos 打包某个目录_CentOS 打包压缩文件 zip 命令详解
  9. 如何解决浏览器未安装FLASH控件的提示
  10. firefox无法显示flash问题解决