Ackermann function
The combination of path compression, splitting, or halving, with union by size or by rank, reduces the running time for operations of any type, up to of which are "MakeSet" operations, to formula_7. This makes the amortized running time of each operation formula_8. This is asymptotically optimal, meaning that every disjoint set data structure must use formula_4 amortized time per operation. Here, the function formula_10 is the inverse Ackermann function. The inverse Ackermann function grows extraordinarily slowly, so this factor is 4 or less for any "n" that can actually be written in the physical universe. This makes disjoint-set operations practically amortized constant time.