【算法概论】FAS问题与顶点覆盖问题
来源:互联网 发布:淘宝网名昵称大全男 编辑:程序博客网 时间:2024/06/07 17:22
题目出自《算法概论》的第八章8.22
问题描述:
Given a directed graph
FEEDBACK ARC SET(FAS): Given a directed graph
FAS can be shown to be NP-complete by a reduction from VERTEX COVER.
(a) Show that FAS is in NP.
(b) Show that if
(c) Show that if
(w i ,w i ′ ) for all1,2,...,n .(w i ,w j ′ ) and(w j ,w i ′ ) for every(v i ,v j )∈E .
值得注意的是,G 为无向图,G ′ 为有向图。
问题解析:
(a) 问题a需要证明FAS是一个NP问题。首先介绍一下P问题,NP问题,以及NP完全问题(NPC, NP - Complete).
- P问题(Polynomial Problem)即可以在多项式时间内解决的问题。
- NP问题(Non-deterministic Polynomial Problem), 即不确定是否能在多项式时间内解决,但可以在多项式时间内验证一个解的问题。
- NPC问题:如果所有的NP问题能够在多项式时间内规约为某个NP问题,那么这个NP问题被称为NPC问题。
我们不确定FAS问题是否能在多项式时间内得到一个解,需要证明在多项式时间内验证一个解
有如下验证:
- 判断
|E ′ |<=b - 判断对于有向图
G=(V,E) ,G−E ′ 无环。判断一个有向图是否存在环的算法为:对每个未访问过的顶点做一个DFS(深度优先搜索),标记已经访问了的顶点,若一个正在访问的顶点为一条有向边的起点,一条已经访问了的顶点为该有向边的终点,则图G 有环。访问所有顶点后,若未判定图G 有环,则图G 无环。算法的时间复杂度为O(|E|+|V|) .
以上验证的方法可以在多项式时间内完成,因此FAS问题为NP问题。
(b) 证明如果
首先我们以一个简单的例子来观察
图
图
对于
对于
可以看到,
并且若
当
可以看到,
对于每个
由于
因此,如果
(c) 证明假如
在(b)中可以看到,如果
说明这里的FAS可能包含斜边以外的边,即
对于图
要使得
因此,顶点覆盖集
初始化
对FAS中的每一条边(每一条边都形如
- 若这条边有一个端点为
w i , 则将v i 加入到顶点覆盖集S 中; - 若这条边有一个端点为
w j , 则将v j 加入到顶点覆盖集S 中。
条件1和条件2至少满足一条,若同时满足两条规则,那么任选一条执行。
该构造方式显然有
- 【算法概论】FAS问题与顶点覆盖问题
- 算法题:顶点覆盖问题
- FAS问题
- 顶点覆盖问题
- 最小权顶点覆盖问题
- 最小权顶点覆盖问题
- dag图中顶点覆盖问题
- 算法概论 | NP完全问题
- 棋盘覆盖问题 算法
- Asteroids----------求二分图的最小顶点覆盖问题
- 【NPC】5、顶点覆盖规约到独立集、团问题
- 北大ACM3041——Asteroids~~最小顶点覆盖问题
- 算法分析与设计-05-棋盘覆盖问题算法
- 算法分析与设计2017-1-棋盘覆盖问题算法
- 算法概论8.12 K-生成树问题
- [算法概论 8.12 k-生成树问题]
- 算法概论8-20 占优集问题
- 证明NP问题(算法概论8.8)
- 【深度学习】论文导读:GoogLeNet模型,Inception结构网络简化(Going deeper with convolutions)
- 关于winsock中网络编程事件模型和窗口消息模型中FD_WRITE的理解与数据的发送需要注意的关键点
- 小震java学习复习文档1——运算符
- 互联网下的分布式事务
- Ubuntu下查看进程pid及结束无响应程序
- 【算法概论】FAS问题与顶点覆盖问题
- 开发一个程序基本思路
- 小米手机升级系统后无法真机调试
- codeforces contest 327
- eclipse闪退
- 图片下拉放大 自定义scrollView
- ubuntu 下su root 失败su: Authentication failure
- 细节记录
- mysql之select 查询表数据(一)