A disjoint-set is like a regular set but with an extra superpower: it can partition members into disjoint subsets without increasing the upper bound time complexity of standard operations.
Algorithmic Time Complexity
Operation
Time Complexity
isEmpty
O(1)
count
O(1)
insert(_:unioningWith:)
O(1)
contains(_:)
O(1)
count(ofSubsetsContaining:)
O(1)
allSubsets()
O(n)
subset(containing:)
O(n)
To confirm that the real-world results match the theory, use DisjointSet.attabench.
DisjointSet
A Swift implementation of a disjoint-set data structure.
Overview of Disjoint-Set
A disjoint-set is like a regular set but with an extra superpower: it can partition members into disjoint subsets without increasing the upper bound time complexity of standard operations.
Algorithmic Time Complexity
isEmptyO(1)countO(1)insert(_:unioningWith:)O(1)contains(_:)O(1)count(ofSubsetsContaining:)O(1)allSubsets()O(n)subset(containing:)O(n)To confirm that the real-world results match the theory, use
DisjointSet.attabench.API Usage
See
Tests/DisjointSetTests/LeetCodeTests.swift.Compatibility
Tested using Swift 4. MIT license.