假设我们有一组 n 个不相交的节点 {node 1 ,node 1 ,...,node n }
以下3种操作最快的数据结构和算法是什么:
union(x,y):在节点x和节点y之间添加一条无向边,两个节点之间最多可以有一条边。
IsConnected(x,y):如果节点x和节点y直接或间接连接,即节点x和节点y在同一个连通分量中,则返回 true。
Un-union(x,y):如果存在,则删除节点x和节点y之间的边。
不相交集对于前两个操作是一个完美的数据结构,但它不能直接支持第三个操作。什么是替代方案?
如果我们模拟这个过程,第一个和第三个操作可以在 O(1) 中实现,但第二个操作是 O(n),所以我想看看是否有可能让所有三个操作都在 O(logn) 时间内运行或更少。