文章目录
- 关系的几种类型
-
- 自反关系(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])