def test_connected_components(): cases = [] cases.append( csr_matrix([[0, 1, 0, 0], [1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0]])) cases.append( csr_matrix([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0]])) cases.append( csr_matrix([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])) cases.append( csr_matrix([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])) # 2 5 # | \ / | # 0--1--3--4 cases.append( csr_matrix([[0, 1, 1, 0, 0, 0], [1, 0, 1, 1, 0, 0], [1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 1], [0, 0, 0, 1, 0, 1], [0, 0, 0, 1, 1, 0]])) # 2 5 # | \ / | # 0 1--3--4 cases.append( csr_matrix([[0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0], [1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 1], [0, 0, 0, 1, 0, 1], [0, 0, 0, 1, 1, 0]])) # 2 5 # | \ / | # 0--1 3--4 cases.append( csr_matrix([[0, 1, 1, 0, 0, 0], [1, 0, 1, 0, 0, 0], [1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1], [0, 0, 0, 1, 0, 1], [0, 0, 0, 1, 1, 0]])) # Compare to reference implementation # for G in cases: result = connected_components(G) assert_equal(result.min(), 0) def array_to_set_of_sets(arr): """convert array to set of sets format""" D = {} for i in set(arr): D[i] = set() for n, i in enumerate(arr): D[i].add(n) return set([frozenset(s) for s in D.values()]) result = array_to_set_of_sets(result) expected = reference_connected_components(G) assert_equal(result, expected)
def test_complex_connected_components(): cases = [] cases.append(csr_matrix([[0, 1, 0, 0], [1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0]])) cases.append(csr_matrix([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0]])) cases.append(csr_matrix([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])) cases.append(csr_matrix([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])) # 2 5 # | \ / | # 0--1--3--4 cases.append(csr_matrix([[0, 1, 1, 0, 0, 0], [1, 0, 1, 1, 0, 0], [1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 1], [0, 0, 0, 1, 0, 1], [0, 0, 0, 1, 1, 0]])) # 2 5 # | \ / | # 0 1--3--4 cases.append(csr_matrix([[0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0], [1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 1], [0, 0, 0, 1, 0, 1], [0, 0, 0, 1, 1, 0]])) # 2 5 # | \ / | # 0--1 3--4 cases.append(csr_matrix([[0, 1, 1, 0, 0, 0], [1, 0, 1, 0, 0, 0], [1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1], [0, 0, 0, 1, 0, 1], [0, 0, 0, 1, 1, 0]])) # Create complex data entries cases = [G+1.0j*G for G in cases] # Compare to reference implementation # for G in cases: result = connected_components(G) assert_equal(result.min(), 0) def array_to_set_of_sets(arr): """convert array to set of sets format""" D = {} for i in set(arr): D[i] = set() for n, i in enumerate(arr): D[i].add(n) return set([frozenset(s) for s in D.values()]) result = array_to_set_of_sets(result) expected = reference_connected_components(G) assert_equal(result, expected)