def transitive_closure_adj(matrix: Matrix) -> Matrix:
    adj = matrix.dup()
    result = matrix.dup()
    changed = True
    while changed:
        old_nvals = result.nvals
        result += adj @ result
        new_nvals = result.nvals
        if old_nvals == new_nvals:
            changed = False
    return result
Esempio n. 2
0
def test_matrix_create_dup():
    m = Matrix.from_type(int, 10, 10)
    m[3, 3] = 3
    n = Matrix.dup(m)
    assert n.nrows == 10
    assert n.ncols == 10
    assert n.nvals == 1
    assert n[3, 3] == 3