データ構造 / Union-Find(ユニオンファインド)

要素が同じ集合かを
高速に判定する。

Disjoint Set Union とも呼ばれます。連結成分の管理や Kruskal 法で重要な役割を持ちます。

データ構造基礎教材可視化

目次

このページの目次

このページでわかること

先に知っておくポイント

1. 何が制約か
2. どこが速いか
3. どこが遅いか

概要

概要

Disjoint Set Union とも呼ばれます。連結成分の管理や Kruskal 法で重要な役割を持ちます。

考え方

基本操作

find(x)
find(y)
if roots differ then union them

要点

要点まとめ

Find

ほぼ O(1) amortized

Union

ほぼ O(1) amortized

技法

path compression

用途

連結判定

補足

向いている場面と注意点

何ができるか

同じグループかどうかを速く判定できます。

なぜ速いか

経路圧縮と union by rank によって木が浅く保たれるからです。

関連

Kruskal 法の理解に直結します。

動きで確認

動きを見てたしかめる

ここでは「何が制約か」を見ながら、上で読んだ内容を動きと結びつけます。

注目同集合

次に見る

次に見るページ

比較すると違いがわかりやすいページを先に置いています。