| import networkx as nx |
|
|
|
|
| def test_unionfind(): |
| |
| |
| |
| |
| |
| |
| x = nx.utils.UnionFind() |
| x.union(0, "a") |
|
|
|
|
| def test_subtree_union(): |
| |
| |
| |
| uf = nx.utils.UnionFind() |
| uf.union(1, 2) |
| uf.union(3, 4) |
| uf.union(4, 5) |
| uf.union(1, 5) |
| assert list(uf.to_sets()) == [{1, 2, 3, 4, 5}] |
|
|
|
|
| def test_unionfind_weights(): |
| |
| uf = nx.utils.UnionFind() |
| uf.union(1, 4, 7) |
| uf.union(2, 5, 8) |
| uf.union(3, 6, 9) |
| uf.union(1, 2, 3, 4, 5, 6, 7, 8, 9) |
| assert uf.weights[uf[1]] == 9 |
|
|
|
|
| def test_unbalanced_merge_weights(): |
| |
| uf = nx.utils.UnionFind() |
| uf.union(1, 2, 3) |
| uf.union(4, 5, 6, 7, 8, 9) |
| assert uf.weights[uf[1]] == 3 |
| assert uf.weights[uf[4]] == 6 |
| largest_root = uf[4] |
| uf.union(1, 4) |
| assert uf[1] == largest_root |
| assert uf.weights[largest_root] == 9 |
|
|
|
|
| def test_empty_union(): |
| |
| uf = nx.utils.UnionFind((0, 1)) |
| uf.union() |
| assert uf[0] == 0 |
| assert uf[1] == 1 |
|
|