判断表示关系的01矩阵是否是传递的

0 投票
1 回答
1354 浏览
提问于 2025-04-17 22:50

我很确定,一个用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

撰写回答