确定一组集合是否可以“覆盖”范围的算法

时间:2015-01-29 20:52:29

标签: algorithm

让我们假设您有一组有限且任意的集合,并且每个内部集合都可以包含1到4的整数而不是重复。所以一组可以是{{1},{1,4},{1,4},{1,2,3,4,4},{2,3,4}}。并且假设您要求您拥有一组必须位于内部集合中的数字,但内部集合只能为该要求提供一个数字。

这可能令人困惑,所以让我举一个例子:说要求是{1,2,3,4}并说集合是{{1,2,3,4},{3,4}, {1,2},{1,2}}。它满足要求,因为你可以从第一个内部集合中获取3个,从第二个内部集合中获取3个,从第三个中获取1个,从最后一个中获取2个。但是,如果该集合为{{1,2,3,4},{1,2},{1,2},{1,2}},则不符合要求,因为您可以获得3或4从第一个内部集合,但不从任何其他内部集合中获得另一个。

请注意,对于要求,重复是正常的:因此允许{1,1,3}的要求。

所以我的问题是:给定一个要求和一个集合,你会如何编写一个算法来确定该集合是否满足条件?

感谢您阅读本文!

2 个答案:

答案 0 :(得分:0)

获取内部集合的叉积,并查看它是否包含要求。 (通过集合A和集合B的交叉乘积,我指的是可以通过从A中取一个元素而从B取一个元素得到的所有集合;如果只有一个元素是集合,则将另一个元素添加到该集合中;如果两者都是是集合,采取他们的联盟。)

答案 1 :(得分:0)


在未加权的二分图中尝试最大匹配。