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

关系的几种类型

自反关系(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])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值