2016-11-23 6 views
1

のセットからグループへの相互排他的なデータを追加し、私はデータを設定している:はデータ

offerId : Variants 
    101:  (1) 
    102:  (2,3) 
    103:  (4) 
    104:  (1,2,5) 
    105:  (3) 
    106:  (4,6) 

私は相互に排他的である別のグループでofferIdsにしたいです。私はこれを達成するための方法

[101,102,104,105] corresponding to [(1),(2,3),(1,2,5),(3)] 

    [103, 106] corresponding to [(4),(4,6)] 

は、擬似コードまたはロジック何かが理解されるであろう:データ上から同じように、私は2つの相互に排他的なグループを取得します。

P.S私は自分のコードをGO言語で書いています。しかし、どんな言語でも答えは分かります。

ありがとうございます。

+0

Disjoint-setデータ構造が必要です:https://en.wikipedia.org/wiki/Disjoint-set_data_structure – MBo

+0

擬似コードを取得できますか? – Jagrati

答えて

0

のデータ構造が必要です。別の名前 - Union-findデータ構造。

Wikiページでは擬似コードを、さまざまなソースでは実際の実装を見ることができます。 Arbitrary C# example

あなたの場合、グループの交差点もチェックする必要があります(セット?)。 2つのグループの共通部分が空でない場合は、これらのグループに対してユニオン操作を行います。