Algorithm 对于允许重叠的覆盖问题,是否有一个众所周知或有效的算法?
众所周知,Knuth的算法X或Dancing Links用于解决精确覆盖问题。但现在我有一个问题,与确切的封面类似 该问题有一些重叠区域,与精确覆盖不同。在精确覆盖中,所有覆盖的高度/重量为1。但在我的问题中,覆盖可能有不同的高度(总是小于4的正整数) 例如,我只想找到给定集合中的子集,用S[2,1,3]覆盖: 现在,A[1,0,2]和B[1,1,1]是期望的子集Algorithm 对于允许重叠的覆盖问题,是否有一个众所周知或有效的算法?,algorithm,set,Algorithm,Set,众所周知,Knuth的算法X或Dancing Links用于解决精确覆盖问题。但现在我有一个问题,与确切的封面类似 该问题有一些重叠区域,与精确覆盖不同。在精确覆盖中,所有覆盖的高度/重量为1。但在我的问题中,覆盖可能有不同的高度(总是小于4的正整数) 例如,我只想找到给定集合中的子集,用S[2,1,3]覆盖: 现在,A[1,0,2]和B[1,1,1]是期望的子集 S = [2, 1, 3] A = [1, 0, 2] B = [1, 1, 1] C = [0, 1, 0]
S = [2, 1, 3]
A = [1, 0, 2]
B = [1, 1, 1]
C = [0, 1, 0]
D = [1, 1, 0]
任何线索或传呼机,非常感谢~您能否澄清解决方案必须满足的具体条件?这个例子使它看起来像一个线性组合,如果权重不需要积分,那么这是一个线性代数问题,谢谢。上面提到的高度始终是正整数。因为在您的情况下,数字不是太大,所以您仍然可以通过复制列将问题编码为精确的封面问题。@hivert谢谢您的建议。听起来很有用,我试试看。