判断表示关系的01矩阵是否是传递的
我很确定,一个用0和1表示的矩阵是传递的,也就是说,如果a_ij等于1并且a_ji也等于1,那么对于这个矩阵a,a_ii也应该等于1(不过我不太确定)。问题是我总是返回true。谢谢大家的帮助。
def transitive(a):
"""Returns True if the relation M is transitive, False otherwise."""
assert (len(row) == len(M) for row in M)
for i in range (len(a)):
for j in range (len(a)):
if (a[i][j] == 1 and a[j][i] == 1 and a[i][i] == 1):
return True
return False
print transitive([[1,0,1],[0,1,1],[0,1,1]])
1 个回答
4
当你找到一个可以传递的链接时,就可以用 return True
来结束这个过程,而不是等你找到整个链条。
相反的,如果你发现有一个链接是断开的(也就是循环中的条件不成立),你就可以用 return False
来结束。如果没有发现断开的链接,那就用 return True
。