实验名称:关系闭包运算
实验目的和要求:掌握求关系闭包的方法。
实验内容:编程求一个关系的闭包,要求传递闭包用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()
计算传递闭包结果如下:
- 求自反闭包的代码如下:
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()
计算自反闭包的结果如下:
- 计算对称闭包的代码如下:
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()
计算对称闭包结果如下:
代码可能存在借鉴,侵删!