实验内容:
用矩阵表示二元关系;通过矩阵的特征判断二元关系所具有的性质;运用二维数组实现矩阵的输入,然后判断自反性,反自反性,对称性,反对称性,传递性
先复习一下相关的基础知识:
1. 判断自反性:矩阵主对角线元素全为1
2. 判断反自反性:矩阵主对角线元素全为0
3. 判断对称性:矩阵根据主对角线对称位置的元素相等
4. 判断反对称性:如果Rij == 1,且 i!=j 则Rij == 0
5. 判断传递性:如果Rij == 1,且 Rjk == 1 则Rjk == 1
源代码如下:
# Author: zhtstar
# Time: 2022/4/23 10:26
#获取矩阵的规模
dimension = eval(input('请输入矩阵的维数:'))
#初始化矩阵
matrix = [[0 for i in range(dimension)] for j in range(dimension)]
#给矩阵赋值
print('请按位置关系输入矩阵中各元素的值:')
for i in range(dimension):
arr = input().split(' ')
for j in range(dimension):
matrix[i][j] = int(arr[j])
#判断自反性 is_reflexive
def is_reflexive(list):
flag = 1
for i in range(dimension):
if list[i][i] != 1:
flag = 0
break
return flag
#判断反自反性 is_irreflexive
def is_irreflexive(list):
flag = 1
for i in range(dimension):
if list[i][i] != 0:
flag = 0
break
return flag
#判断对称性 is_symmetric
def is_symmetric(list):
flag = 1
for i in range(dimension):
for j in range(dimension):
if list[i][j] != list[j][i]:
flag = 0
break
return flag
#判断反对称性 is_antisymmetric
def is_antisymmetric(list):
flag = 1
for i in range(dimension):
for j in range(dimension):
if list[i][j]==1 and i!=j:
if list[j][i] == 1:
flag = 0
break
return flag
#判断传递性 is_transitive
def is_transitive(list):
flag = 1
for i in range(dimension):
for j in range(dimension):
for k in range(dimension):
if list[i][j]==1 and list[j][k]==1 and list[i][k] == 0:
flag = 0
break
return flag
result = ''
if is_reflexive(matrix) == 1:
result += '自反性 '
if is_irreflexive(matrix) == 1:
result += '反自反性 '
if is_symmetric(matrix) == 1:
result += '对称性 '
if is_antisymmetric(matrix) == 1:
result += '反对称性 '
if is_transitive(matrix) == 1:
result += '传递性 '
# print(matrix)
if result != '':
print('输入的矩阵的性质有:',result)
else:
print('输入的矩阵什么性质也没有')
运行结果截图:
以下测试用例来源于课本《离散数学》113页 题4.4
分析与总结:
本次的实验任务已完成,本次的作业主要是在利用矩阵表示二元关系的前提下,通过矩阵的特征来判断二元关系的性质,并在最后输出判断结果。
在实验中,我定义了5个函数来分别判断该二元关系的自反性、反自反性、对称性、反对称性、传递性。在判断自反性、反自反性的函数内部,直接来观察矩阵的对角线元素的特征;在判断对称性、反对称性、传递性的函数内部采用逆向思维法,不直接判断该二元关系是否符合某些特征,而是寻找二元关系中是否存在不符合这些关系的反例,一旦找到反例,直接结束判断,并返回判断结果。
这次实验任务主要涉及的知识如下:
1.判断自反性:矩阵主对角线元素全为1
2.判断反自反性:矩阵主对角线元素全为0
3.判断对称性:矩阵根据主对角线对称位置的元素相等
4.判断反对称性:如果Rij == 1,且 i!=j 则Rij == 0
5.判断传递性:如果Rij == 1,且 Rjk == 1 则Rjk == 1文章来源:https://www.toymoban.com/news/detail-766830.html
文章来源地址https://www.toymoban.com/news/detail-766830.html
到了这里,关于【离散数学】Python语言实现关系性质的判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!