|
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 |
|
|