首先介绍一下反馈顶点集的定义:
设顶点集合F,使得把这些顶点移除后,图中无圈(圈和环的定义类似)。如下图中,反馈顶点集可以为{2}或{3}或{2,3}等等。
现在来引入问题:
像上图中,{2}和{3}即为最小费用子集,即最优解
下面来介绍图的一个概念——图G中简单圈C的特征向量,举个例子会比较清晰
图G的圈数cyc(G)——是指圈空间的维数,而圈空间是由图G中的所有简单圈的特征向量生成,而cycle123和cycle3456是简单圈,cycle12456是复杂圈,除了第一个顶点和最后一个顶点相同外,其余顶点不重复出现的回路叫简单回路这个还是比较好理解的
图G的连通分支数comps(G)——连通分支的概念和极大连通子图类似,也就是极大连通子图的数目
介绍完所需要的概念后,引入一个定理:
先上例子:
要证上等式,只需证明|E| - |V| + K(G)<=cyc(G)<=|E| - |V| + K(G)即可
由于证明过于复杂难懂,详见《近似算法》第49-50页
这里的思路转自https://blog.csdn.net/zhonghangliu/article/details/106699186
1. 证明|E| - |V| + K(G)<=cyc(G)
G是一个连通图,任取T是G上的一个生成树,我们定义T-基础圈为一条非树边和树边构成的简单圈(在生成树的基础上任意再引入一条非树边都会得到一个简单圈)所以我们一共能得到|E|-|V|+1个T-基础圈(树边有|V|-1个),并且这些圈是线性无关的(很显然,因为他们都独占一个非树边),既然都是圈,那么它们一定是G上整个圈空间的子集,他们也一定生成了一个子空间,因此cyc(G) ≥ |E|−|V|+1
2. 证明cyc(G)<=|E| - |V| + K(G)
首先说明一个事实:对于生成树T,每条树边t都能对应一个仅仅包含这一条树边和其它一些非树边的割(也可以对应多个,只要树边唯一确定即可)。这个可以想想到,一个割只需要和一条树边相交就能把树切断,且树把图划分成的区域都是与外界相连的。既然每个割都是有一个独占的树边,那他们之间就是线性无关的,所以用割边就能生成一个|V|-1维割空间
在得到上面的等式后,我们设 δG(v)是删除顶点v后图的圈数的减少量
由于删除反馈顶点集F后G的圈数变为0了,所以可以得到下面这个等式
根据下面的引理(证明参考《近似算法》第50页)
可得
设存在常数c使得每个顶点v的权是c*δG(v),权函数为w,则根据上面的不等式我们可以得到:
设deg(v)表示G中v的度,comps(G-v)表示从G中删除v后形成的连通分支数,可得:
最终我们得出: