当前位置: 代码迷 >> 综合 >> 离散数学-判断关系的类型
  详细解决方案

离散数学-判断关系的类型

热度:13   发布时间:2023-12-10 08:06:10.0

文章目录

  • 关系的几种类型
    • 自反关系(reflexive)
    • 非自反关系(irreflexive)
    • 对称关系(symmetric)
    • 非对称关系(asymmetric)
    • 反对称关系(antisymmetric)
  • 例题
  • 代码实现
    • 自反关系
    • 非自反关系
    • 对称关系
    • 非对称关系
    • 反对称关系

关系的几种类型

自反关系(reflexive)

设 R是 A上的一个二元关系,若对于 A中的每一个元素 a, (a,a)都属于 R,则称 R为自反关系。

非自反关系(irreflexive)

设R是A上的关系。若对所有a∈A,均有(a,a)∈ R,则称R是A上的一个自反关系

对称关系(symmetric)

集合A上的二元关系R,对任何a,b∈A,当aRb时有bRa

非对称关系(asymmetric)

集合A上的二元关系R,对任何a,b∈A,当aRb时有bR a

反对称关系(antisymmetric)

在这里插入图片描述

例题

在这里插入图片描述

代码实现

import numpy as npdef getMatrixFromRelation(size,relation):relationMatrix = np.zeros((size,size))for i in range(0, len(relation)) :relationMatrix[relation[i][0]-1,relation[i][1]-1] = 1return relationMatrixdef determineProperties(size,relationMatrix):# reflexive:isReflexive = Truefor i in range(0,size):isReflexive = isReflexive and relationMatrix[i,i]# irreflexive:isIrreflexive = Truefor i in range(0,size):isIrreflexive = isIrreflexive and (not relationMatrix[i,i])# symmetric:isSymmetric = Truefor i in range(0,size):for j in range(0,size):isSymmetric = isSymmetric and (relationMatrix[i,j] == relationMatrix[j,i])# asymmetric:isAsymmetric = Truefor i in range(0,size):for j in range(0,size):isAsymmetric = isAsymmetric and (relationMatrix[i,i] != relationMatrix[j,i])# antisymmetric:isAntisymmetric = Truefor i in range(0,size):for j in range (0,size):if (i!=j):isAntisymmetric = isAntisymmetric and (relationMatrix[i,i] != relationMatrix[j,i])print("Reflexive: " + str(isReflexive))print("Irreflexive: " + str(isIrreflexive))print("Symmetric: " + str(isSymmetric))print("Asymmetric: " + str(isAsymmetric))print("Antisymmetric: " + str(isAntisymmetric))

在这里插入图片描述

自反关系

# reflexive:isReflexive = Truefor i in range(0,size):isReflexive = isReflexive and relationMatrix[i,i]

非自反关系

# irreflexive:isIrreflexive = Truefor i in range(0,size):isIrreflexive = isIrreflexive and (not relationMatrix[i,i])

对称关系

# symmetric:isSymmetric = Truefor i in range(0,size):for j in range(0,size):isSymmetric = isSymmetric and (relationMatrix[i,j] == relationMatrix[j,i])

非对称关系

# asymmetric:isAsymmetric = Truefor i in range(0,size):for j in range(0,size):isAsymmetric = isAsymmetric and (relationMatrix[i,i] != relationMatrix[j,i])

反对称关系

# antisymmetric:isAntisymmetric = Truefor i in range(0,size):for j in range (0,size):if (i!=j):isAntisymmetric = isAntisymmetric and (relationMatrix[i,i] != relationMatrix[j,i])
  相关解决方案