Union-Find
グループ分けを効率的に行うためのデータ構造。素集合データ構造(Disjoint-Set Data Structure)とも呼ばれる。 木構造を使った実装では以下の操作を$ O(\alpha(N))で実現できる。ただし$ \alpha(N)はアッカーマン関数を使った$ f(N) = A(N, N)の逆関数で、実際的には定数と見做せるらしい。
Find: 特定の要素がどの集合に属しているかを求める。2つの要素が同じ集合に属しているかの判定にも使われる。
Union: 2つの集合を1つに統合する。