《算法概论》习题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’中的顶点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的顶点覆盖,得证。
- 《算法概论》习题8.22
- 算法概论习题解答8.22
- 《算法概论》习题8.8
- 《算法概论》习题8.12
- 《算法概论》习题8.19
- 《算法概论》习题8.20
- 《算法概论》习题8.3
- 《算法概论》 习题8.8
- 《算法概论》 习题8.9
- 算法概论习题证明
- 算法概论课后习题
- 《算法概论》习题8.10
- 算法概论习题8.14
- 算法概论习题8.8
- [算法概论]习题8.12
- 算法概论 习题8.16
- 算法概论 习题8.20
- 算法概论 习题8.12 证明
- 设计模式(Design Pattern)
- Spring Date接口
- [STM32L476] 【NUCLEO-L476RG开发】使用OLED显示温度与相对湿度(基于DHT11)
- QTreeWidget右键菜单
- LINQ系列:LINQ to SQL Transact-SQL函数
- 《算法概论》习题8.22
- <constructor-arg>标签不可出现属性“name”可能是你spring版本过低
- mongodb的数据库命令
- nyoj952最大四边形 思路+代码
- MySQL--JS--CSS
- 清除浮动
- java虚拟机的垃圾回收算法
- LINQ系列:LINQ to SQL Join连接
- 机器学习笔记(1)---监督学习之梯度下降