假设我们有 N 设置{ x 1 , x 2 , x 3 ,..., x N }。
这些 N 集的“基础”是 M 集的集合{ y 1 ,< em> y 2 , y 3 ,..., y M }每个{ x 1 , x 2 , x 3 ,..., x N }是{<}的某种组合的并集em> y 1 , y 2 , y 3 , ..., y M }。
如何找到“最小”基础,即最少可能 M 的基础?
答案 0 :(得分:0)
我想到的一个类似问题是分别找到basis of a vector space或找到最小generating set。
由于集合的数量以及所有可能元素的Universe都是有限数,我们可以将每个集合重写为这样的向量(假设整数作为集合中的元素):
{ 1, 2, 5 } => ( 1, 1, 0, 0, 1, 0 , ... )
{ 4 } => ( 0, 0, 0, 1, 0, ... )
所有向量x_i
的集合现在形成所有集合G
的Universe的(普通)生成集x_i
。
您搜索最小的生成器。为此,我们必须从向量集G
中消除所有线性依赖关系。一个天真的方法是检查所有三元组的G
元素是否符合以下条件(x,y,z
和G
数字k,l,m
向量:
k * x + l * y + m * z == 0
如果条件满足,我们消除这三个中的一个向量。 (哪一个并不重要。)
这种减少的向量集(及其各自的集合)构成了你的集合的基础。
上述论点的一个要求是,您允许set difference作为生成集合的操作。