我得到了以下任务:给定图G:=(V,E),任意多个周期。什么是最小边集,以便对于图中的每个周期,集合中至少包含一个边 - 或者更准确地说,这些边的权重之和是多少。
我的方法很简单:我在图表上计算了一个最大生成森林,排除了每个边缘并宣布了剩余边缘作为结果。这个想法如下:由于每个生成树没有循环,我永远不会删除整个循环,因此不会有任何我没有覆盖的循环。此外,我也无法移除图G中的任何其他边缘,因为如果我这样做,我将删除一个周期,因此结果将不会涵盖所有周期。因此我总结出我的方法是正确的。
但似乎事实并非如此。任何人都可以在我错误的地方怂恿我吗?我无法想出一个反驳我的方法的例子。
答案 0 :(得分:0)
这可以解决为set covering problem。
索引弧线1 ... m。设j指的是任意弧。
索引周期1 ... n。我指的是任意循环。
如果第j个弧是第i个循环的一部分,则指示符变量a_ {ji} = 1。否则为0。
如果选择第j个弧作为解决方案的一部分,则让x_j = 1。
您希望最小化您选择的弧数。
因此,最小化\ sum_ {j = 1} ^ {m} x_j
约束条件是您选择的弧应覆盖所有周期。
特别是,对于任何周期i,您需要至少选择其中一个边。
所以,建模如下。
对于每个i,\ sum_ {j = 1} ^ {m} a_ {ji} x_ {j}> = 1.
将会有n个这样的约束,每个约束一个。
另一个约束是每个x_ {j}都是0或1。
如果您要解决加权版本,那么给定弧j具有权重c_j,需要将目标更改为
\ sum_ {j = 1} ^ {m} c_j x_j