P、NP、NPC、NP-Hard问题

转自:http://www.matrix67.com/blog/archives/105

总结

P:能用多项式时间求解的问题
NP:能用多项式时间验证的问题(但不知道能不能用多项式时间求解)。存在不属于NP类的问题,如:是否不存在哈密顿回路,此问题无法多项式时间验证,因为要验证所有解才能确定,而验证所有解不是多项式时间
NPC:若一个NP问题A可以以多项式时间归约(或称约化)为另一个NP问题B,则解决后者就解决了前者。归约后的问题时间复杂度是不比原问题低的(也即原问题不比归约后的难)。令人惊奇的是,所有的NP问题都可以归约为一个NP问题,而且这个NP问题还有多个,组成了一类,称为NPC问题。

NP-Hard:NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广)。NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。

关系

时间: 2024-10-28 10:21:25

P、NP、NPC、NP-Hard问题的相关文章

P,NP,NPC,NPC-HARD

P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,所有NP问题也都得到解决. NP hard:NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的问题(不一定是NP问题). 可以参考:https://www.zybuluo.com/chanvee/note/12722

P NP NPC(2)(转载)

P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,所有NP问题也都得到解决. NP hard:NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的问题(不一定是NP问题). 二.四者联系的图形表示 将四种问题用集合表示,它们的关系图1所示. 图1 P NP NPC NPh

P NP NPC的通俗解释

这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题 了”之类的话.你要知道,大多数人此时所说的NP问题其实都是指的NPC问题.他们没有搞清楚NP问题和NPC问题的概念.NP问题并不是那种“只有搜才 行”的问题,NPC问题才是.好,行了,基本上这个误解已经被澄清了.下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很 感兴趣就可以不看了.接下来你可以看到,把NP问题当成是 NPC问题是一个

python 值比较判断,np.nan is np.nan 却 np.nan != np.nan ,pandas 单个数据框值判断nan

pandas中DataFrame,Series 都有 isnull()方法,而数据框却没有,用了就会报错:AttributeError: 'float' object has no attribute 'isnull' 怎么判断单个框是否为 np.nan Python常规的判断,==,和is, 这对None是有效的 None is NoneOut[49]: True None == NoneOut[50]: True 而对,np.nan,只能用is da1pd.ix[6000996,u'团队']

区分range() , np.arange() , np.linspace()

content: range() np.arange() np.linspace() 一.range(start, stop, step) 1.range() 为 python 自带函数 2.生成一个从start(包含)到stop(不包含),以step为步长的序列.返回一个 list 对象 range(stop) 返回 range object range(start, stop[, step]) 返回 range object 3.start默认为0,stop是必须的,step默认为1,可正可

numpy 常用工具函数 —— np.bincount/np.average

numpy 常用工具函数 -- np.bincount/np.average numpy 常用api(一) numpy 常用api(二) 一个函数提供 random_state 的关键字参数(keyword parameter):是为了结果的可再现性(reoccurrence)或叫可重复性. 1. np.bincount():统计次数 接口为: numpy.bincount(x, weights=None, minlength=None) 1 尤其适用于计算数据集的标签列(y_train)的分布

Numpy:np.vstack()&np.hstack() flat/flatten

一 .  np.vstack: 按垂直方向(行顺序)堆叠数组构成一个新的数组 In[3]: import numpy as np In[4]: a = np.array([[1,2,3]]) a.shape Out[4]: (1, 3) In [5]: b = np.array([[4,5,6]]) b.shape Out[5]: (1, 3) In [6]: c = np.vstack((a,b)) # 将两个(1,3)形状的数组按垂直方向叠加 print(c) c.shape # 输出形状为

去除警告: FutureWarning: In future, it will be treated as `np.float64 == np.dtype(float).type`.

文章目录: 一.警告原因分析 二.解决方法 最近在使用tensorflow-gpu的时候总是报警告,就我这强迫症能够忍他吗,no!绝对不能忍!!! 我的环境: cudnn=7.0 cuda=9.0 tensorflow-gpu=1.8 或 1.9 或 1.10.0 或 1.11.0 在上面的这个环境配置下都会报这个警告,解决方式都是一样的 一.警告原因分析 从下面包的警告可以看出,是和h5py这个库包有关的 import tensorflow as tf /home/mosheng/minico

P类问题,NP,NPC,HPHard,coNP,NPI问题 的简单认识

参考<算法设计技巧与分析>--沙特 问题可以分为判定类问题和最优化问题,判定类问题可以转化为最优化问题,所以下面讨论的是判定类的问题. P类问题是可以在多项式时间  采用确定性算法给出解 NP类问题是可以在多项式时间验证解的正确性的问题 NPhard 问题是:所有NP类问题可规约为该问题,则该问题为NPhard 问题 NPComplete问题要求同上,但要求该问题属于NP问题 NPco问题是补属于NP问题的问题 NPI问题是NP类问题中不包含于P类问题和NPC问题 的问题 (P属于NPI) 原

P NP NPC(1)(转载)

要计算或解决一个问题,该问题通常有一个大小规模,用n表示.例如,若分析计算一个二进制数,该数有多少位,这个位就是其大小规模.再比如,从n个数里面找出最大的那个数,这个n就是该问题的规模大小.怎么找?我们要比较n-1次才能得到结果,这个n-1就是所花的时间,也就是时间复杂度.再比如,将n个数按从大至小排序,n是其规模大小,若是我们按这样的方法:第一次从n个数里找最大,第二次从n-1个数里找最大,以此类推,需要的比较次数就是n(n-1)/2,称我们所用的方法为算法,称n(n-1)/2为该算法的时间复