实验原理

首先输入集合元素个数,再输入集合元素循环放入数组中,接着输入关系将其转换为关系矩阵,最后调用judge函数输出性质。

#include<iostream>
#define MAX 10
using namespace std;void judge(int a[][MAX],int n);         //判断关系性质int main()
{int n,tmp1=0,tmp2=0,x=0,y=0;string relation;           //存放关系int coll[MAX];                //存放集合元素int rela[MAX][MAX] = { 0 };             //关系矩阵cout << "请输入集合元素个数:" << endl;cin >> n;cout << "请输入集合元素(用空格分开):" << endl;for (int  i = 0; i < n; i++){cin >> coll[i];}cout << "请按序偶输入关系(格式为{<x,y>,...}):" << endl;cin >> relation;for (int i = 0; i < relation.size(); i++){if (relation[i] == '<')                   //遇到'<'开始录入{while (relation[++i] != ','){x = x * 10 + relation[i] - '0';          //字符转数字}while (relation[++i] != '>'){y = y * 10 + relation[i] - '0';}for (int j = 0; j < n; j++)          //找出元素对应的下标{if (coll[j] == x)tmp1 = j;if (coll[j] == y)tmp2 = j;}rela[tmp1][tmp2] = 1;x = y = 0;}}judge(rela,n);return 0;
}void judge(int a[][MAX],int n)
{int sum1=0,sum2=0,sum3=0,flag=1;for (int i = 0; i <n ; i++)          //计算对角线的和{sum1 += a[i][i];}if (sum1 == n)               //全为1cout << "该关系满足自反性。" << endl;         if(sum1 == 0)         //全为0cout<< "该关系满足反自反性。" << endl;for (int i = 0; i < n; i++){for (int j = 0; j <i; j++){if (a[i][j] + a[j][i] == 1)        //不对称sum2++;if (a[i][j] + a[j][i] == 2)        //对称sum3++;}}if (sum2 == 0)         cout << "该关系满足对称性。" << endl;if (sum3 == 0)cout << "该关系满足反对称性。" << endl;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (a[i][j]==1)for (int k = 0; k < n; k++){if (a[j][k] == 1 && a[i][k] == 0)       //只有当xRy,yRz存在,xRz不存在才表示无传递性flag = 0;}}}if(flag)cout<< "该关系满足传递性。" << endl;
}

注意:
空关系、恒等关系这类特殊关系要考虑善意的推断。

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

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

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

  2. 集合上二元关系性质判定的实现(python实现)

    判断一个二元关系的性质(自反,反自反,对称,反对称,传递) 例如:编写程序实现有限二元关系(集合)是否具有自反性.对称性.传递性等. 这大致都是仿照SIgmundRoths大佬写出的程序,但是在运行的 ...

  3. 南邮 | 离散数学实验二:集合上二元关系性质判定的实现

    题目:根据某一集合元素以及关系矩阵,判断其满足什么特性,输出满足的特性,再求此集合的闭包. 举例:以集合{1,2,3,4}为例.关系矩阵为:[[1,0,1,0],[0,1,0,0],[1,0,1,1] ...

  4. 离散数学实验二 真值表

    一.实验目的 熟悉五个真值表,掌握真值表技术. 二.实验内容 定义1 设命题变元P1.P2.P3.-.Pn是出现在公式G中的所有命题变元,指定P1.P2.P3.-.Pn 的一组真值,则这组真值称为G的 ...

  5. 离散数学实验(三)集合的基本运算

    集合的交运算 假设集合E包含A,B两个任意子集,称集合E为全集,集合的交运算为集合A,B中相同元素的集合,记为A∩B.若集合A,B之间无相同的元素,则交运算的结果为空集.例如:全集为全体整数,集合A= ...

  6. 阿里云ACA课程之在线实验二

    阿里云ACA课程之在线实验二 使用OSS API上传和下载文件 查看OSS环境 调用OSS API上传小文件 调用OSS API下载小文件 调用OSS API删除Object 负载均衡使用初体验 分别 ...

  7. 合肥工业大学2022大数据技术实验二

    实验序号及名称:实验二 在Hadoop平台上部署WordCount程序实验时间∶ 2022年5月14日 预习内容 一.实验目的和要求∶ 在Hadoop平台上部署WordCount程序. 二.实验任务∶ ...

  8. 离散数学实验三则(关系元算,集合运算与操作,最短路)

    前言 前段时间才做了离散实验的实验报告,为防止在本地遗失,所以上传到CSDN上一份,欢迎大家一起学习 实验1 关系元算 实验报告内容 一.实验目的 熟悉掌握命题逻辑中的联结词.真值表.主范式等,进一步 ...

  9. 给定一集合A和集合A上的一个二元关系,判断其性质,然后根据性质判定是否为等价、相容、偏序关系。

    目录 离散数学知识点回顾 关系及其表示 关系的性质 关系的类型 数据结构 集合 关系 算法 与 源代码 集合的读取 关系的读取 自反的与反自反的 对称的与反对称的 传递的 关系的类型 完整源代码 心得 ...

最新文章

  1. fedora上ARM-LINUX-GCC 编译器安装
  2. golang mysql单元测试_golang test测试使用
  3. 广佛肇城轨年内通车 佛山西站预计2017年中通车
  4. sql查table,VIEW,sp, function 及 trigger 物件
  5. AI Frontiers | 微软首席 AI 科学家邓力演讲:口语对话系统的分类及三代演变
  6. php日期差数,php如何计算日期差几天
  7. 银行停贷、涨息、排队,8月不贷只能等明年
  8. 7-20 表达式转换 (25 分)(代码详解+题目分析)
  9. 华为5720设置静态路由不通_【干货分享】交换机与路由器在环路中的处理机制了解一下!...
  10. springboot jpa 创建数据库以及rabbitMQ分模块扫描问题
  11. Spring实战(六)自动装配的歧义性
  12. 蓝桥杯2016年第七届C/C++省赛B组第八题-四平方和
  13. chrome浏览器历史版本
  14. 电脑录麦克风声音软件的选择
  15. 四种请求方式 get、post、put、delete 的用法及区别(全)
  16. hadoop安装与启动
  17. 华为android机考题,华为无线题库_华为射频机考,华为无线射频题库
  18. jQuery事件-鼠标事件
  19. 收录最好的网站是哪个?
  20. CNN基础论文 精读+复现----LeNet5 (二)

热门文章

  1. mac air上archlinux的安装及优化
  2. matlab - 信号平滑、移动平均滤波
  3. 周志华西瓜书公式勘误(一)之公式2.27勘误
  4. 【游戏编程扯淡精粹】EASTL源码阅读
  5. 9年级计算机视频教程,人教版初中九年级数学上册教学视频
  6. 两类Linux系统的包管理工具
  7. 华为商城 删除订单_商城积分商城功能介绍
  8. UML学习笔记之状态图
  9. 共享计算机网络无法连接网络设置,局域网电脑无法共享文件夹、不能相互访问等问题解决方法汇总...
  10. 2020-08-02 Mysql数据库索引初识、备份、设计原则、JDBC连接、SQL注入、PreparedStatement对象使用、事务处理、连接池