2012-02-10 11 views
2

私は、クイック検索アルゴリズムの組合演算を、集合理論のA U Bの一般的な意味と関連付けることができません。クイック検索アルゴリズム - 結合演算 - これは集合理論の和集合と同じですか?

帳(C++ロバート・セッジウィックにおけるアルゴリズム)が組合操作は「各入力対のための配列全体throgh 走査で伝える。(ライン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; 
} 
} 

答えて

2

クイック検索の結合手順は、同じIDでコンポーネントをマージすることを意味します。一般的な意味では、ちょうど2組の組合に似ています。あなたはid1をすべてのコンポーネントのidとid2の2つのセットとして考えることができます。

http://www.cs.princeton.edu/~rs/AlgsDS07/01UnionFind.pdf

:クイックファインド]セクションでこのプレゼンテーションでは偉大な説明の一見のための
1

ルックサポートされています。 「すべての要素をリストする」という質問がなく、挿入するだけで&共用体を見つけると、これらの操作を使用して要素の重複があるかどうかを判断する方法はありません。サポートされている操作がより効率的になりますが、(ユーザーが話す限り)セットのように動作します。

関連する問題