《算法概论》习题8.22

来源:互联网 发布:自动点赞软件 编辑:程序博客网 时间:2024/04/29 20:40

题目:在任务调度中,常常会用到图。其中节点对应任务,任务i到任务j的有向边表示i是j的先期条件。这样的图描述了调度问题中的任务先后关系(约束)。显然,一个调度是可行的当且仅当该图无环;如果调度不可行,我们需要求使其无环所需的最小约束数量。

给定一个有向图G=(V,E),子集E’⊆E称为反馈弧集合是指:将其移除后将使得G无环。

反馈弧集合(FEEDBACK ARC SET,简称FAS)问题:给定有向图G=(V,E)和预算b,求包含不超过b条边的反馈弧集合——如果这样的集合存在。

(a)

证明 FAS属于NP
证明:拓扑排序的时间复杂度为O(E+V),可以通过它来验证一个图是否无环,即FAS存在多项式时间的验证算法,所以FAS属于NP。

(b)

通过将顶点覆盖问题规约为FAS,可以证明FAS是NP-完全的。给定一个顶点覆盖实例(G,b),我们如下构造一个FAS实例(G’,b):如果G=(V,E)包含n个顶点v1,…vn,则生成一个包含2n个顶点w1,w1’,…wn,wn’和n+2|E|条边的有向图G’=(V’,E’),其中的边为:

  • 对所有i=1,2,…,n,有(wi,wi’)。
  • 对每个(vi,vj)∈E,有(wi,wj)和(wj’,wi)。

证明如果G包含规模为b的顶点覆盖,则G’有规模为b的反馈弧集合。

证明:根据题设中的规约,可以构造出一个简单的G和G’:
G:
G
G’:
G'

根据构造的G和G’,结合规约,可以得出,对于G’中的顶点wi的出度为1,唯一的出边指向wi’;而顶点wi’的入度为1,唯一的入边从wi出发。

假设C是G的一个规模为b的顶点覆盖集,对于任意顶点vi∈C,将边(wi,wi’)添加到E’,则E’就是要求的G’的一个规模为b的FAS。因为将(wi,wi’)去掉之后,wi不再有出边,wi’也不再有入边,即wi的出度变为0,不可能在一个环中,而wi’的入度也变为0,不可能在任何一个环中,即如果G包含规模为b的顶点覆盖,则G’有规模为b的反馈弧集合,得证。

(c)

证明如果G’包含规模为b的顶点覆盖,则G’有规模不超过b的顶点覆盖。

根据(b)中构造的G和G’,可以看到G中简单的边(v1,v2)在G’中对应4个顶点w1、w1’、w2、w2’,以及涉及的4条边,推广而言,G中的边(vi,vj)在G’中对应wj、wj’、wj、wj’四个顶点,以及涉及的边(wi,wi’)、(wj,wj’)、(wi’,wj) 、(wj’,wi)。设E’是G’的一个规模为b的
FAS,显然,这4条边中必定有一条边e在集合E’中,否则就一定会形成环,而且,参考构造的G’,e必然有一个端点是wi或wj。

现构造以下规则,若wi是e的端点,则将vi添加至C,否则将vj添加到
C,重复以上操作,那么根据定义,C就是G的一个规模不超过b的顶点覆盖,得证。

原创粉丝点击