Algorithm 创建子集的算法最小化每个子集中不同元素的数量

Algorithm 创建子集的算法最小化每个子集中不同元素的数量,algorithm,subset,Algorithm,Subset,我有一个列表如下: [(A1,B1), (A1,B2), (A2, B3),...] 我想将其子集为N个子集(例如N=5),最多包含E个元素,这样每个子集中唯一值的数量之和是最小的。值是列表中元组的元素 例如,如果N=3,E=3,列表如下: [(1, a), (1 ,b), (2, a), (2, b), (2, c), (3, d), (4, d), (3, b)] 解决办法是: [(1, a), (1 ,b)] -> 3 unique values (1, a, b) [(2, a

我有一个列表如下:

[(A1,B1), (A1,B2), (A2, B3),...]
我想将其子集为N个子集(例如N=5),最多包含E个元素,这样每个子集中唯一值的数量之和是最小的。值是列表中元组的元素

例如,如果N=3,E=3,列表如下:

[(1, a), (1 ,b), (2, a), (2, b), (2, c), (3, d), (4, d), (3, b)]
解决办法是:

[(1, a), (1 ,b)] -> 3 unique values (1, a, b)
[(2, a), (2, b), (2, c)] -> 4 unique values (2, a, b, c)
[(4, d), (3, b), (3, d)] -> 4  unique values (3, 4, b, d)
当然,我正在寻找一种启发式方法

编辑:


我突然想到,这个问题可以归结为一个图形问题。如果将每个“值”(第一个示例中的A1、B1等)视为顶点,将每个元组视为边,则相当于划分边

我们假设N&E有一个解决方案,对吗?还有,
最小值是多少?如果我有一个N=3的解决方案,且唯一项的数量可以是
1,3,8
4,4,4
-哪一个更好?是的,对于N&E,允许一个解决方案。对于具有相同数量的唯一值的两个解决方案,使唯一值数量的最大值最小化的解决方案最好(示例中的第二个)