【记得交作业】波波离散实验报告五(python实现)

实验名称关系闭包运算

实验目的和要求掌握求关系闭包的方法。

实验内容:编程求一个关系的闭包,要求传递闭包用warshall方法。

实验心得:

1.求传递闭包的代码如下:

def logic(a,b):

    return 0 if a==0 and b==0 else 1

mat=[]

n=int(input('输入阶数:'))

for i in range(n):

    mat.append(input('第{}行'.format(i+1)).split())

for y in range(n):

    for x in range(n):

        if int(mat[x][y])==1:

            for k in range(n):

                mat[x][k]=logic(int(mat[x][k]),int(mat[y][k]))

for row in range(n):

    for column in range(n):

        print(mat[row][column], end='  ')

    print()

计算传递闭包结果如下:

 

  1. 求自反闭包的代码如下:
def logic(a,b):

    return 0 if a==0 and b==0 else 1

#输入矩阵

mat=[]

n=int(input('输入阶数:'))

for i in range(n):

    mat.append(input('第{}行'.format(i+1)).split())

#自反闭包

for y in range(n):

    for x in range(n):

        if x==y:

            mat[x][y]=1

#打印矩阵

for row in range(n):

    for column in range(n):

        print(mat[row][column], end='  ')

print()

计算自反闭包的结果如下:

 

  1. 计算对称闭包的代码如下:
def logic(a,b):

    return 0 if a==0 and b==0 else 1

#输入矩阵

mat=[]

n=int(input('输入阶数:'))

for i in range(n):

mat.append(input('第{}行'.format(i+1)).split())

#对称闭包

for y in range(n):

    for x in range(n):

        if int(mat[y][x])==1:

            mat[x][y]=1

#打印矩阵

for row in range(n):

    for column in range(n):

        print(mat[row][column], end='  ')

print()

计算对称闭包结果如下:

 代码可能存在借鉴,侵删!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值