我无法将快速查找算法中的联合操作与集合论中 AUB 的一般含义相关联。
书(C++ 中的算法 Robert Sedgewick)告诉联合操作是“扫描每个输入对的整个数组。(代码中的第 9 行和第 10 行)。
基本上,我们将节点 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;
}
}