获得最小数量的集合

时间:2016-03-10 14:22:56

标签: java algorithm set set-intersection

我有一个有趣的问题,其他人可能已经遇到过一个问题。我将在Java中执行此操作并找出代码,但首先我需要找出最佳算法(或AN算法)。

我有几组(g1,g2,g3,g4,g5,......)。每个组都有一组成员(因此分别称它们为s1,s2,s3,s4,s5,...)。成员不限于一个群组,因此群组1的成员可以是群组2和/或3的成员和/或......

我正在尝试找到最小数量的成员,以便表示所有组。显而易见的解决方案是从每个组中取一个成员,但这不一定是最小数量。最佳解决方案,只能在很短的时间内完成,是执行s1.retainsAll(s2).retainAll(s3).retainAll(s4).retainAll(s5)...但这很有可能产生空集。

我可以检查两组,然后检查第三组,等等。但谁知道最好的顺序是什么顺序。

这让我想起了一个最不常见的多重问题,但它并没有真正翻译得那么好(除非有一些数学天才可以告诉我如何翻译它;-))。

有没有其他人必须解决这个问题?你能提出任何建议吗?

0 个答案:

没有答案