【发布时间】:2016-08-15 22:30:37
【问题描述】:
所以我遇到了一个像这样的现实世界问题:我们有一个需要分类的对列表。我们希望最大限度地减少我们拥有的组总数,并限制组中的任何成员不能与组中的任何其他成员共享元素。
这是一个例子。我们的元组列表是 (A, B), (B, C), (C, A), (D, E), (F, G)。我们可以通过[(A,B),(D,E),(F,G)],[(B,C)],[(C,A)]来形成三个组。
是否有可能在多项式时间内最优地解决这个问题?贪婪的解决方案有多糟糕?这可能是一个不同的问题,但我无法完全弄清楚如何将其简化为其他问题(想到图形着色)。
【问题讨论】:
-
您能否发布一个更长的示例,或者给出实际输入的大小的想法?可以有重复的元组吗?您是否希望每个元素出现的次数或多或少相等?
-
输入的大小在 20-60(对)范围内。没有重复的元组,即如果 (A, B) 在集合中,则没有其他 (A, B) 或 (B, A)。我对单个元素没有任何分布知识(尽管在实践中我怀疑某些元素比其他元素出现的频率更高,但为了问题,我不知道情况是否如此——如果对问题有一些概率知识产生更好的平均案例解决方案,让我知道,我可以尝试提供)
-
输入有大约多少个不同的字母(或任何代表的字母)?您是否尝试过您的图表中的approximating the minimum-vertex-cover-size 和他们的complement graphs? 你试过approximating the treewidth 的图表吗?
标签: algorithm sorting tuples grouping