从数据集中将互斥数据添加到组中

时间:2016-11-23 09:53:53

标签: algorithm

我有一组数据:

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

我想在互相排斥的不同组中提供ID。与上述数据一样,我将获得两个相互排斥的群体:

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

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

如何实现这一点,伪代码或逻辑任何东西都将受到赞赏。

P.S我用GO语言编写代码。但是,任何语言的答案都将受到赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要Disjoint-set数据结构。另一个名字 - Union-find数据结构。

您可以在Wiki页面中看到伪代码,并在众多来源中看到真正的实现。 Arbitrary C# example

在你的情况下,你还需要检查组的交集(集合?)。如果两个组的交集不为空,则对这些组进行联合操作。