Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 对于允许重叠的覆盖问题,是否有一个众所周知或有效的算法?_Algorithm_Set - Fatal编程技术网

Algorithm 对于允许重叠的覆盖问题,是否有一个众所周知或有效的算法?

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]

众所周知,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]
  D = [1, 1, 0] 

任何线索或传呼机,非常感谢~

您能否澄清解决方案必须满足的具体条件?这个例子使它看起来像一个线性组合,如果权重不需要积分,那么这是一个线性代数问题,谢谢。上面提到的高度始终是正整数。因为在您的情况下,数字不是太大,所以您仍然可以通过复制列将问题编码为精确的封面问题。@hivert谢谢您的建议。听起来很有用,我试试看。