0%

离散数学课程的第二次实验

好多天没写博客了…..最近离散数学课程做了一个简单的实验,记录一下…( ̄o ̄) . z Z

实验内容

对任意二元关系集合,判定其是否具有自反性、对称性、传递性、反对称性、反自反性,如果不具有某性质,需要至少输出一个反例。

要求

  1. 输入:

    从屏幕输入集合X (不超过5个元素)上的关系(必做);程序随机生成关系(选做)

  2. 输出关系矩阵。

  3. 输出性质描述,不具备的性质需给出反例描述。

关系的性质

  • 自反的二元关系R相应的关系矩阵主对角线元素都为1 ;
  • 反自反的二元关系R相应的关系矩阵主对角线元素都为 0 ;
  • 对称的二元关系R相应的关系矩阵也是对称的 ;
  • 反对称的二元关系R相应的关系矩阵也是反对称的(这里定义1的反为0) ;
  • 传递的二元关系R,相应的关系矩阵R中若$r_{ij}=1$ , $r_{jk}=1$ , 则$r_{ik}=1$ ;

自己所设计的实验步骤

  1. 利用二维数组建图 $→$ 这就需要获取 集合X中元素的个数 ;
  2. 读入集合X上的关系建图 $→$ 这就需要获取 各个关系中的序偶 ;
  3. 写出用以判断各个关系性质的函数:
    • 自反性利用 $r_{ii}$ 是否全为1即可判断,一重for循环 ;
    • 反自反性利用 $r_{ii}$ 是否全为0即可判断,一重for循环 ;
    • 对称性利用转置矩阵的方法判断也可以,不过此处不用麻烦,直接判断 $r_{ij} == r_{ji} ?$ 即可,两重for循环 ;
    • 反对称性,*要么矩阵关于对角线对称的元素全为 0(即为对称阵),要么 $r_{ij} == 1 $ && $ r_{ji} == 0 $ * , 在两重for循环中增加条件判断即可 ;
    • 传递性则利用 floyd算法 跑一遍图即可判断(当然直接用三重循环 + 定义判断更方便) ;
  4. 在主函数中给出提示输入的语句及规范化输出语句即可 。

代码实现

代码有点点长…写的也比较随意,贴上去:

贴在这里

尾巴

文章就到这里,感谢你的阅读!٩(๑`^´๑)۶

------ 本文结束 ------