《集合上二元关系性质判定的实现.pdf》由会员分享,可在线阅读,更多相关《集合上二元关系性质判定的实现.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 离散数学实验报告(2015/2016 学年 第 一 学期)题 目:集合上二元关系性质判定的实现 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 计算机学院计算机科学与技术系 日 期 2015 年 10 月 20 日 集合上二元关系性质判定的实现 一、实验内容和要求 内容:编程实现任意集合上二元关系的性质判定。要求:能正确判定任意二元关系的自反性、对称性、传递性、反自反性和反对称性。二、实验目的 能够利用编程正确判定任意二元关系的自反性、对称性、传递性、反自反性和反对称性。三、实验任务 1、主函数流程图:2、函数 Analagmatic()通过判断矩阵主对角线是否为 1
2、。3、函数 Irreflexive()通过判断矩阵主对角线是否为 0。4、函数 Symmetry()判断矩阵 Axy是否等于 Ayx 5、函数 Antisymmetry()判断 Axy*Ayx是否为 1 6、函数 Transitivity()判断 Axp*Apy=1&Axy是否为 1 以上各函数皆通过将集合化为矩阵并用循环遍历实现。四、实验内容#include#include using namespace std;int A100100;int n;void Input()/输入函数 coutn;cout请输入相应的n阶矩阵(0,1)endl;for(int i=0;in;i+)for(in
3、t j=0;jAij;void Analagmatic()/判断自反性 for(int x=0;xn&Axx=1;x+)if(x=n)cout该二元关系具有自反性endl;else cout该二元关系不具有自反性endl;void Irreflexive()/判断反自反性 for(int x=0;xn&Axx=0;x+)if(x=n)cout该二元关系具有反自反性endl;else cout该二元关系不具有反自反性endl;void Symmetry()/判断对称性 for(int x=0;xn;x+)for(int y=0;yn&Axy=Ayx;y+);if(y!=n)cout该二元关系不具
4、有对称性endl;return;cout该二元关系具有对称性endl;void Antisymmetry()/判断反对称性 for(int x=0;xn;x+)for(int y=0;(yn&Axy*Ayx!=1)|(yn&x=y);y+);if(y!=n)cout该二元关系不具有反对称性endl;return;cout该二元关系具有反对称性endl;void Transitivity()/判断传递性 int s=1;for(int x=0;xn;x+)int p=0;for(int y=0;xy;y+)if(Axp*Apy=1&Axy!=1)s=0;p+;if(s=0)cout该二元关系不具
5、有传递性endl;else cout该二元关系具有传递性endl;int main()Input();Analagmatic();Irreflexive();Symmetry();Antisymmetry();Transitivity();return 0;五、测试数据及其结果分析 实验操作过程及实验数据测试如上图。六、调试过程中的问题 如何将二元关系一一对应到矩阵中,由于用户键入的二元关系组储存在一维数组中,所以在计算机查找的时候,要让计算机懂得去分割一组一组的关系,从而实现一组一组二元关系的转换。直接在输入时直接输入矩阵。七、程序设计总结 二元关系所有的关系性质都可以通过矩阵图形来判断,对于传递性的判断较复杂,开始想了很久未果,最终还是要根据定义去判断,仔细去找仍然有规律可寻。评 分 细 则评分项 优秀 良好 中等 差 遵守机房规章制度 上机时的表现 学习态度 算法思想准备情况 程序设计能力 解决问题能力 课题功能实现情况 算法设计合理性 算法效能评价 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简 短 评 语 教师签名:年 月 日 评分等级 备注 评分等级有五种:优秀、良好、中等、及格、不及格