构建矩阵 def Creat_Matrix(a,rs): array= [[0]*len(a) for i in range(len(a))] for i in range((int)(len(rs)/2)): array[a.index(rs[i*2])][a.index(rs[i*2+1])]=1 return array
输出矩阵 def Print_Matrix(array,judge): if judge=='r': print('-'*10,'关系R矩阵为:','-'*10) elif judge=='s': print('-'*10,'关系S矩阵为:','-'*10) for i in range(len(array)): print(array[i]) return 0
关系的复合运算及结果输出 def Com_Matrix_relation(a,array_r,array_s,judge): res= [[0]*len(a) for i in range(len(a))] for i in range(len(a)): for j in range(len(a)): for k in range(len(a)): res[i][j] += array_r[k][j] * array_s[i][k] if res[i][j]>1: res[i][j]=1 if judge=='r○s': print('-'*10,'R○S关系复合运算结果为:','-'*10) elif judge=='s○r': print('-'*10,'S○R关系复合运算结果为:','-'*10) for i in range(len(res)): print(res[i]) return 0
对称性判断: def Symmetric_Relation(a,array,str_judge): for i in range(len(a)): for j in range(len(a)): if array[i][j]!=array[j][i]: print("关系",str_judge,"不是对称的") return 0 if i==len(a)-1: print("关系",str_judge,"是对称的") return 0
反对称性判断 def Un_symmetric_Relation(a,array,str_judge): for i in range(len(a)): for j in range(len(a)): if array[i][j]==array[j][i]: if i!=j: print("关系",str_judge,"不是反对称的") return 0 if i==len(a)-1: print("关系",str_judge,"是反对称的") return 0
自反性判断 def Contrary_Relation(a,array,str_judge): for i in range(len(a)): if array[i][i]==0: print("关系",str_judge,"不是自反的") return 0 if i==len(a)-1: print("关系",str_judge,"是自反的") return 0
反自反性判断 def Un_contrary_Relation(a,array,str_judge): for i in range(len(a)): if array[i][i]==1: print("关系",str_judge,"不是反自反的") return 0 if i==len(a)-1: print("关系",str_judge,"是反自反的") return 0
传递性判断 def Transmit_Relation(a,array,str_judge): for i in range(len(a)): for j in range(len(a)): for k in range(len(a)): if array[i][j]==1 and array[j][k]==1 : if array[i][k]!=1: print("关系",str_judge,"不是传递的") return 0 if i==len(a)-1 : print ("关系",str_judge,"是传递的") return 0
对称闭包 def Symmetric_Closure(a,array,str_judge): judge=0 print("关系",str_judge,"对称闭包需要添加的关系有") for i in range(len(a)): for j in range(len(a)): if array[i][j]==0 and array[j][i]==1: print("<",a[i],",",a[j],">") judge=1 if judge==0: print("\t无\n关系",str_judge,"本身就是对称的,s(",str_judge,")=",str_judge) return 0
自反闭包 def Reflexive_Closure(a,array,str_judge): judge=0 print("关系",str_judge,"自反闭包需要添加的关系有") for i in range(len(a)): if array[i][i]!=0: print("<",a[i],",",a[i],">") judge=1 if judge==0: print("\t无\n关系",str_judge,"本身就是自反的,s(",str_judge,")=",str_judge) return 0
传递闭包 def Transitive_Closure(a,array,str_judge): judge=0 print("关系",str_judge,"传递闭包需要添加的关系有") for i in range(len(a)): for j in range(len(a)): for k in range(len(a)): if array[i][j]==1 and array[j][k]==1 : if array[i][k]!=1: print("<",a[i],",",a[k],">") judge=1 if judge==0: print("\t无\n关系",str_judge,"本身就有传递性,t(",str_judge,")=",str_judge) return 0
是这样吗?
就这样吧!