好多天没写博客了…..最近离散数学课程做了一个简单的实验,记录一下…( ̄o ̄) . z Z
实验内容
对任意二元关系集合,判定其是否具有自反性、对称性、传递性、反对称性、反自反性,如果不具有某性质,需要至少输出一个反例。
要求
输入:
从屏幕输入集合X (不超过5个元素)上的关系(必做);程序随机生成关系(选做)。
输出关系矩阵。
输出性质描述,不具备的性质需给出反例描述。
关系的性质
- 自反的二元关系R相应的关系矩阵主对角线元素都为1 ;
- 反自反的二元关系R相应的关系矩阵主对角线元素都为 0 ;
- 对称的二元关系R相应的关系矩阵也是对称的 ;
- 反对称的二元关系R相应的关系矩阵也是反对称的(这里定义1的反为0) ;
- 传递的二元关系R,相应的关系矩阵R中若$r_{ij}=1$ , $r_{jk}=1$ , 则$r_{ik}=1$ ;
自己所设计的实验步骤
- 利用二维数组建图 $→$ 这就需要获取 集合X中元素的个数 ;
- 读入集合X上的关系建图 $→$ 这就需要获取 各个关系中的序偶 ;
- 写出用以判断各个关系性质的函数:
- 自反性利用 $r_{ii}$ 是否全为1即可判断,一重for循环 ;
- 反自反性利用 $r_{ii}$ 是否全为0即可判断,一重for循环 ;
- 对称性利用转置矩阵的方法判断也可以,不过此处不用麻烦,直接判断 $r_{ij} == r_{ji} ?$ 即可,两重for循环 ;
- 反对称性,*要么矩阵关于对角线对称的元素全为 0(即为对称阵),要么 $r_{ij} == 1 $ && $ r_{ji} == 0 $ * , 在两重for循环中增加条件判断即可 ;
- 传递性则利用 floyd算法 跑一遍图即可判断(当然直接用三重循环 + 定义判断更方便) ;
- 在主函数中给出提示输入的语句及规范化输出语句即可 。
代码实现
代码有点点长…写的也比较随意,贴上去:
尾巴
文章就到这里,感谢你的阅读!٩(๑`^´๑)۶