我正在寻找一个算法来解决以下问题。我有一个给定集合(a-h)的多个子集(1-n)。我想找到最小的子集合,通过组合可以构建出所有给定的子集。这个子集合可以包含1-n中不存在的子集。
我相信这一定是一个已知的问题,但我对算法不是很熟悉。非常感谢任何帮助,以及更好的话题标题建议。
谢谢!
更新
图着色可以让我有很大进展,谢谢。然而,在我的情况下,子集允许重叠。例如:
图着色给我提供了这个解决方案:
但是这个也是有效的,并且更小:
a b c d e f g h
1 1
2 1 1
3 1 1 1
4 1 1
5 1 1
6 1 1 1 1
7 1 1 1 1
8 1 1 1
9 1 1 1
以下是两个可能的集合,其中最小的包含七个子集。我已用x标记新的子集。
1 1
x 1
x 1
x 1
x 1
x 1
x 1
x 1
1 1
x 1
x 1
x 1
x 1
x 1 1
x 1
我相信这一定是一个已知的问题,但我对算法不是很熟悉。非常感谢任何帮助,以及更好的话题标题建议。
谢谢!
更新
图着色可以让我有很大进展,谢谢。然而,在我的情况下,子集允许重叠。例如:
a b c d
1 1 1 1
2 1 1 1
3 1 1 1
4 1 1
5 1 1 1 1
图着色给我提供了这个解决方案:
x 1 1
x 1
x 1
但是这个也是有效的,并且更小:
1 1 1 1
4 1 1