Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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_Backtracking - Fatal编程技术网

Algorithm 寻找更好的绑定,以便在集合封面中提前停止

Algorithm 寻找更好的绑定,以便在集合封面中提前停止,algorithm,backtracking,Algorithm,Backtracking,我试图用顶点覆盖的方法来解决集合覆盖问题 输入:我们有一个基集X和X子集的集合C,因此C中的每个元素都是X的子集 输出:C中集合F的最小集合F的大小,F的所有元素的并集产生X 我知道如何解决这个问题,但我正在寻找一种启发式方法,以停止在树中更进一步。例如,现在我从C中删除每个元素并执行递归调用,我用以下方式检查停止点:if(bestsofar best stop;其中k是结果中添加的覆盖边的垂直数,但更好的方法是如果k+number edges/maxdeg>=最佳停止,这更好 我想要同样的封面

我试图用顶点覆盖的方法来解决集合覆盖问题

输入:我们有一个基集X和X子集的集合C,因此C中的每个元素都是X的子集

输出:C中集合F的最小集合F的大小,F的所有元素的并集产生X

我知道如何解决这个问题,但我正在寻找一种启发式方法,以停止在树中更进一步。例如,现在我从C中删除每个元素并执行递归调用,我用以下方式检查停止点:if(bestsofar best stop;其中k是结果中添加的覆盖边的垂直数,但更好的方法是如果k+number edges/maxdeg>=最佳停止,这更好

我想要同样的封面


有人知道吗?

从理论角度来看,顶点覆盖的启发式算法所做的是为顶点覆盖的松弛对偶构造一个可行的解。对于集合覆盖也可以这样做。如果出于任何原因,你不想使用单纯形法来寻找最优对偶解,那么有一个可用的各种近似值。您可以使用K加项目数除以集合中的最大项目数,这是对顶点覆盖启发式的概括。您还可以使用贪婪算法来查找填充,我的意思如下。对于顶点覆盖,这将是一组没有共同端点的边(即,匹配)。每个封面至少包含包装中每个边缘的一个端点。对于套装封面,这将是一个项目集合,因此没有一套包含多个集合项目。

非常感谢你的精彩回答:再次检查我的理解:作为启发,你的意思是我有这样的东西:#of set添加到F中+(X/bestsofar中的元素数)应该小于bestsofar。这适用于所有情况吗?@HamedMinaee我的意思是X中的F+元素数/C中的最大基数。我有点困惑。假设我们有:X={1,2,3,4,5}C={1,2,3}{2,3}{1}{4,5}{2,3,4}假设bestsofar是3,我们选择{1,2,3}对于F,根据这个启发式,我们有1+5/3=2.6,这意味着下限至少是2.6,但如果我们选择{4,5},我们就有了2个选择,对吗?@HamedMinaee啊。分子应该是F中尚未覆盖的元素数,分母应该是F中未覆盖的最大集合。