【问题标题】:Algorithm: Finding max subset of elements in array算法:查找数组中元素的最大子集
【发布时间】:2015-11-10 22:59:03
【问题描述】:

我有一个数组 arr 包含元素对。我需要从该数组中找到最大的子集,这样,该子集中的每个成对元素都存在于数组arr 中。

例如让arr = [(a,b), (a,c), (a,d), (b,d)]
那么,最大的子集将是{a,b,d},因为子集中所有可能的成对组合都存在于arr 中。

【问题讨论】:

  • 如果有循环怎么办?考虑[(a,b), (b,d), (d, c), (c,a)]
  • 这有什么意义?你想达到什么目标?
  • @erip 不会有任何重复,即 (a,b) 和 (b,a) 都不会在数组中。
  • @Kriggs 数组中存在的元素对满足一个条件(有交集 null),我的目标是找到满足这个条件的元素的最大组合(交集 null) .

标签: arrays algorithm


【解决方案1】:

这相当于在无向图中寻找最大完整分量的问题(最大团问题),其中每一对代表图中的一条边。

这个问题是 NP-hard,所以没有比简单的蛮力搜索更好的方法了。但是,实现要么微不足道,要么过于复杂,因此无法在此处发布,因此您必须自己解决。

【讨论】:

  • 感谢您的意见,会看看。此外,是否仅找到子集的大小也是 NP 难的?例如可能有(最大)子集的多种组合,但我更感兴趣的是找到该子集的大小。
  • 那也是 NP 难的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多