【问题标题】:Find optimal combination of elements from multiple sets从多个集合中找到元素的最佳组合
【发布时间】:2018-03-16 03:50:44
【问题描述】:

我有几组像:

a: ([1, 2], [4,5])
b: ([1, 3])
c: ([4, 7], [1, 8])
d: ([9, 7], [1, 5])
...

没有两对是相同的,并且没有一对的元素是相同的。每个集合可以包含许多对。元素数量很少(大约 200 个)。

我从每组中挑选一对。现在,我想以这样的方式进行配对,以使元素的数量尽可能少。

问题太大,无法尝试每种组合,是否有任何算法或启发式方法可以帮助我找到最优(或近似猜测)?

【问题讨论】:

标签: algorithm combinations


【解决方案1】:

这个问题有一种明确的 NP-complete 感觉。所以这里有两种贪婪的方法,可能会产生合理的近似答案。要确定哪个更好,您应该同时实现并进行比较。

第一个是自下而上。给每个集合一个值2,如果它有一个从中选择的对,(n+1)/n,如果它有一个n 对从其中部分选择。在每一轮,给每个元素一个被选中的值,该值是添加它增加所有集合的值的数量的总和。在这一轮中选择具有最高值的元素,然后更新所有集合的值,更新所有剩余元素的值,然后继续。

这将选择看起来在覆盖所有系列方面取得进展的元素。

第二个是自上而下。从选定的所有元素开始,并给每个集合一个值1/n,其中n 是选定对的数量。给定集合中所有对所需的元素被放入最终集合。在剩余的元素中,如果删除,找出增加值最少的元素,然后将其删除。

我们的想法是,我们从一个太大的封面开始,然后反复删除对覆盖所有系列似乎最不重要的那个。我们剩下的希望是最少的。

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2019-10-22
    • 2020-11-27
    • 2018-12-29
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多