算法设计与分析笔记——顶点覆盖问题VC的NP完全性证明

本文详细介绍了如何将3SAT问题规约到顶点覆盖(VC)问题,证明了顶点覆盖问题的NP完全性。通过构造变元构件和简单析取构件,建立3SAT与VC之间的等价关系,展示了当3SAT可满足时,对应图存在不超过特定数量顶点的覆盖,反之亦然。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在算法设计与分析笔记——NP完全性中总结了证明NPC的思路,本文总结由三元可满足性(3SAT)到顶点覆盖(VC)的NP完全性证明。

定义

3SAT:合取范式中每个简单析取式恰好有3个文字,则称之为3元合取范式。给一个3元合区范式F,问F是可满足的吗?

顶点覆盖:任给一个无向图G=<V, E>,再给一个非负整数K<=|V|,问G中有顶点数不超过K的顶点覆盖吗?

思路

1、显然VC∈NP,因为可以在O(n ^ 2)(n是顶点数)的多项式时间内检查所有的边,看是否包含了所有顶点。

2、把3SAT当成已知的NPC问题,接下来尝试把3SAT规约到VC,若VC比3SAT还难,那必然也是NPC。

证明

取3SAT的一个实例F,向着VC问题变换。

使用构件设计法,构造两组连接:

第一组,把每个文字与它的非连起来,称为变元构件,这组边集记为E1:
step 1

第二组,把每个括号中的三个文字如(xi, xj, xk)连起来,称为简单析取构件,这组边集记为E

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值