计算复杂度理论

基本概念

这些概念的定义参考《算法导论》[1]
P问题
​ 存在一个多项式时间的求解算法
NP问题
​ 给定一个问题A,和问题的一个解X,存在一个多项式时间的验证算法。该验证算法证明X是否是A的一个解。
复杂类co-NP
​ 所有满足NP的语言L,L的补集构成的集合。 coNP={L|L¯¯¯NP}
NPC问题
​ 某个问题是NPC问题,需要满足两个条件
- 第一,L是个NP问题
- 第二,所有的NP问题L’都可以归约到L. LpL
NP-hard问题
某个问题是NP-hard问题,需要满足条件:所有的NP问题L’都可以归约到L

NPC问题及其证明技巧

  1. circut-SAT
  2. SAT
  3. 3-CNF-SAT
    觉得这个好用
  4. Clique 团问题
  5. vertex cover 顶点覆盖问题
  6. Ham-cycle 哈密顿回路问题
  7. TSP 旅行商问题
  8. subset-sum 子集和问题

应用场景

思路一,依据定义证明;
思路二,构造归约算法证明,归约算法的时间复杂度是多项式的。常用。

  1. 证明一个问题L是p问题

    • 选一个已知的p问题
    • 构造一个归约算法L’, 使得L可归约到L’,且该归约算法的复杂度是多项式的。
  2. 证明一个问题是npc问题

    • 证明待证明的问题L是NP问题
    • 选一个已知的NPC问题L’
    • 构造一个归约算法,使得L’可归约到L. 且该归约算法的复杂度是多项式的。

参考文献

[1] 算法导论 机械工业出版社 2013

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值