文章目录
关系的几种类型
自反关系(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 np
def getMatrixFromRelation(size,relation):
relationMatrix = np.zeros((size,size))
for i in range(0, len(relation)) :
relationMatrix[relation[i][0]-1,relation[i][1]-1] = 1
return relationMatrix
def determineProperties(size,relationMatrix):
# reflexive:
isReflexive = True
for i in range(0,size):
isReflexive = isReflexive and relationMatrix[i,i]
# irreflexive:
isIrreflexive = True
for i in range(0,size):
isIrreflexive = isIrreflexive and (not relationMatrix[i,i])
# symmetric:
isSymmetric = True
for i in range(0,size):
for j in range(0,size):
isSymmetric = isSymmetric and (relationMatrix[i,j] == relationMatrix[j,i])
# asymmetric:
isAsymmetric = True
for i in range(0,size):
for j in range(0,size):
isAsymmetric = isAsymmetric and (relationMatrix[i,i] != relationMatrix[j,i])
# antisymmetric:
isAntisymmetric = True
for 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 = True
for i in range(0,size):
isReflexive = isReflexive and relationMatrix[i,i]
非自反关系
# irreflexive:
isIrreflexive = True
for i in range(0,size):
isIrreflexive = isIrreflexive and (not relationMatrix[i,i])
对称关系
# symmetric:
isSymmetric = True
for i in range(0,size):
for j in range(0,size):
isSymmetric = isSymmetric and (relationMatrix[i,j] == relationMatrix[j,i])
非对称关系
# asymmetric:
isAsymmetric = True
for i in range(0,size):
for j in range(0,size):
isAsymmetric = isAsymmetric and (relationMatrix[i,i] != relationMatrix[j,i])
反对称关系
# antisymmetric:
isAntisymmetric = True
for i in range(0,size):
for j in range (0,size):
if (i!=j):
isAntisymmetric = isAntisymmetric and (relationMatrix[i,i] != relationMatrix[j,i])