P/NP/NPC/NP-hard问题

算法复杂程度

算法复杂度是衡量算法在执行过程中所需资源(如时间和空间)的指标,主要包括时间复杂度空间复杂度

P问题

所谓的 P 问题就是能够在多项式的时间复杂度内解决的问题,这里的 P 指的是多项式时间(polynomial time):

一个规模为n的问题,如果能在n的多项式时间内解决,就是p问题

我们在前面学到的算法大多数都可以写成这样的形式,比如排序问题,二分查找,图的遍历,最小生成树等

NP问题

NP问题(Non-deterministic Polynomial Problem,非确定性多项式问题)就是可以在多项式的时间里验证一个问题的解

NP问题与P问题关系

所有的 P 问题都是 NP 问题。因为如果一个问题可以在多项式时间内解决,那么它的解答也可以在多项式时间内验证。

是否每个 NP 问题都可以在多项式时间内解决(即 P = NP)还是一个未解决的问题。


NPC问题(NP完全问题)

NPC问题

(NPC问题(NP完全问题))是NP类问题中最难的问题,包含两个条件:

是一个NP问题(是可以在多项式时间里去验证一个解的问题)

所有的NP问题都可以转换成此问题

P问题是比较简单的问题,比较难的问题叫NPC问题

(大多数人观点,未得到验证)

P问题一定是一个NP问题,NPC问题也一定是一个NP问题;P问题和NPC问题是没有交集的

归约

基本概念

如果问题 Q1可以归约为问题 Q2,则记为 Q1≤p Q2,表示Q1大于 Q2的难度不会超过一个多项式时间因子(但通常我们可以根据小于等于号来通俗的认为 Q1的难度要小于等于 Q2)。Q1≤pQ2,可以推出:

如果Q1是 NPC 问题,则 Q2必然是 NPC 问题(因Q2不比Q1容易);

如果Q2P问题,Q1必然是P问题(因为Q1不比Q2难)

多项式归约

多项式规约指的是问题 A 的所有实例都能够在多项式的时间复杂度内转化为问题 B 的所有实例

如果问题X和问题Y满足以下两条性质,那么问题X可以在多项式时间归约到问题Y

问题X可以通过多项式时间的基本运算步骤转换为问题Y
问题X多项式 调用求解问题Y的算法

      记为XpY    X可以多项式规约到Y若存在X≤pY 三点性质

Y能在多项式时间内求解,则X也能在多项式时间内求解
X不能在多项式时间内求解,则Y也不能在多项式内求解
若同时有 Y≤pX ,则X,Y多项式等价,记为X ≡ p Y 。X,Y中一方能在多项式时间内求解则另一方也能在多项式时间内求解。

NP-Hard问题

NP-Hard问题

NP-Hard 问题是指那些至少和所有NP问题一样难的问题。更正式地说,一个问题 H 被称为NP-Hard,意味着满足以下条件:

归约条件:对于所有的NP问题 P,存在一个多项式时间归约,将 P 转化为 H。也就是说,如果能在多项式时间内解决 H,那么也能在多项式时间内解决所有的NP问题。

NP-Hard问题与NPC问题

NPC问题是NP-Hard问题的一个子集,且这些问题本身也属于NP类。NPC问题不仅在NP类中至少和所有问题一样难,还在NP类中也可以在多项式时间内验证其解的正确性。

旅行商问题(TSP)与NP问题

旅行商问题(TSP)是一个经典的组合优化问题

问题描述:给定一组城市和城市之间的距离(或成本),目标是找到一条最短的回路,访问每个城市恰好一次,并返回到起点城市。

关系

决策版本

TSP的决策版本是NP问题。具体来说,给定一组城市和一个目标距离 d,是否存在一条路径总距离不超过 d?这个决策问题属于NP类,因为可以在多项式时间内验证一个给定的路径是否满足总距离不超过 d的条件。

优化版本

TSP的优化版本,即找到最短的回路,是NP-Hard问题。这个问题没有已知的多项式时间算法可以解决,因此它比NP类中的任何问题都更难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值