C++ 快速查找算法-并集运算-它与集合论中的并集相同吗?

C++ 快速查找算法-并集运算-它与集合论中的并集相同吗?,c++,algorithm,union-find,C++,Algorithm,Union Find,我无法将快速查找算法中的并集运算与集合论中A U B的一般含义联系起来 书(C++中的算法)告诉联合操作是“为每个输入对扫描整个数组。(代码9和10))< /P> 基本上,我们将节点q的值复制到与节点p具有相同值的所有其他节点。 为什么我们要将此操作命名为UNION 代码直接从书中复制 #include <iostream> const int N = 10000; int main() { int i, p, q, id[N]; for( i = 0; i < N; i++

我无法将快速查找算法中的并集运算与集合论中A U B的一般含义联系起来

书(C++中的算法)告诉联合操作是“为每个输入对扫描整个数组。(代码9和10))< /P> 基本上,我们将节点q的值复制到与节点p具有相同值的所有其他节点。 为什么我们要将此操作命名为UNION

代码直接从书中复制

#include <iostream>
const int N = 10000;
int main() {
int i, p, q, id[N];
for( i = 0; i < N; i++ ) id[i] = i;
while( cin >> p >> q ) {
    int t = id[p];
    if ( t = id[q] ) continue;              //quick find operation
    for ( i = 0; i < N; i++ )               //---> union why?
        if ( id[i] == t) id[i] = id[q];
    cout << " " << p << " " << q << endl;
}
}
#包括
常数N=10000;
int main(){
inti,p,q,id[N];
对于(i=0;i>p>>q){
int t=id[p];
如果(t=id[q])继续;//快速查找操作
对于(i=0;i联合,为什么?
如果(id[i]==t)id[i]=id[q];

cout查看支持的操作集。如果没有办法要求“列出所有元素”,而只是插入、查找和合并,那么就没有办法使用这些操作来判断是否存在元素重复。这会使支持的操作更有效,并且仍能正常工作(据用户所知)就像一个集合。

< p>快速查找中的联合步骤意味着将组件与同一个ID合并。在一般意义上,它类似于两个集合的结合。可以考虑两个集合,以ID1为单位的ONW作为其所有组件的ID,另一个作为ID2。 有关详细说明,请查看“快速查找”部分中的此演示: