n 個の互いに素なノード {node 1 ,node 1 ,...,node n }のセットがあるとします。
次の 3 つの操作で最速のデータ構造とアルゴリズムは何ですか?
Union(x,y): ノードxとノードyの間に無向エッジを追加します。2 つのノード間に存在できるエッジは最大で 1 つです。
IsConnected(x,y): ノードxとノードyが直接的または間接的に接続されている場合、つまりノードxとノードyが同じ接続コンポーネント内にある場合に true を返します。
Un-union(x,y): ノードxとノードyの間のエッジが存在する場合は削除します。
Disjoint-set は、最初の 2 つの操作に対しては完全なデータ構造ですが、3 番目の操作を直接サポートすることはできません。代替手段は何ですか?
プロセスをシミュレートすると、1番目と3番目の操作はO(1)で実装できますが、2番目の操作はO(n)なので、3つの操作すべてをO(logn)時間で実行できるかどうかを確認したいと思います以下。