DisjointSet (a.k.a. union–find data structure or merge–find set) implementation for Python.
The only requirement is using Python 3.8+. You can verify this by running:
$ python --version
Python 3.8.18
pip install disjoint-set
You can verify you're running the latest package version by running:
>>> import disjoint_set
>>> disjoint_set.__version__
'0.8.0'
>>> from disjoint_set import DisjointSet
>>> DisjointSet()
DisjointSet({})
>>> DisjointSet({1: 1})
DisjointSet({1: 1})
>>> DisjointSet.from_iterable([1,2,3])
DisjointSet({1: 1, 2: 2, 3: 3})
>>> ds = DisjointSet()
>>> ds.find(1)
1
>>> ds.union(1,2)
>>> ds.find(1)
2
>>> ds.find(2)
2
>>> ds = DisjointSet({1: 2, 2: 2, 3: 3})
>>> ds.connected(1,2)
True
>>> ds.connected(1,3)
False
>>> ds = DisjointSet()
>>> "a" in ds
False
>>> ds.find("a")
'a'
>>> "a" in ds
True
>>> ds = DisjointSet({1: 2, 2: 2, 3: 3})
>>> list(ds)
[(1, 2), (2, 2), (3, 3)]
>>> ds = DisjointSet({1: 2, 2: 2, 3: 3})
>>> list(ds.itersets())
[{1, 2}, {3}]
Feel free to open any issues on github.
This project is licensed under the MIT License - see the LICENSE.md file for details