这四类问题可以用时间复杂度进行区分。
函数时间复杂度具有如下规律:
O(1)<O(logn)<O(nlogn)<O(n2n^2n2)<O(n3n^3n3)<O(2n2^n2n)<O(n!)<O(nnn^nnn),其中,n指问题的规模。
P(Polynominal,多项式)问题:可以在多项式时间内解决的问题。一个规模为n的问题,如果能在n的多项式时间内解决,就是一个P问题。

NP(Nondeterministic polynominal,非确定性多项式)问题:可以在多项式时间内验证一个解的问题。也就是说,我们虽然不知道能不能在多项式时间内找到问题的解,但是,如果已知一个解,我们可以在多项式时间内验证这个解是否为该问题的可行解。
视频中举了一个非常通俗易懂的例子:在一次聚会中,有100万个人,我们需要找出其中具有"高颜值"的人,需要逐个遍历,属于穷举法,非常耗时,但是如果我们随便找出一个人,来判断他的颜值,却能轻易地在有限时间内得出:此人是否为"高颜值"。这就是我们所说的,能够在多项式时间内对这个"解"进行验证。
知乎上面有个博主举了著名的旅行商(TSP)问题,解释的非常好:P问题、NP问题、NP完全问题和NP难问题

显然,一个P问题也是一个NP问题。如果能够在多项式时间内找到问题的解,那么当然能在多项式时间内验证一个解是否满足问题的约束。反过来,如果一个问题是NP问题,它是否为P问题呢?这是一个史上最难的数学问题之一,美国克雷数学研究所曾悬赏一百万美金求解该难题。
NP难(Hard)问题和NP完全(Complete)问题:NP问题能够在多项式时间内规约(转化为)问题X,X的复杂度大于原NP问题,则X是一个NP-Hard问题,如果X也是一个NP问题,则称X是NP-Complete的,否则X是NP-Hard的。NP-Complete问题是NP问题中最难以解决的一类问题。例如逻辑电路(给定一个逻辑电路,问是否存在一种输入为true)、哈密顿回路问题和旅行商问题。
旅行商(TSP)问题:

有一个旅行商从A点出发开始送货,要送到所有的城市,且不重复,怎样的路径是最短的?如果计算机来遍历所有的方法,将是一个规模非常大,几乎不可能解决的NP完全问题。


参考文章:https://zhuanlan.zhihu.com/p/73953567
参考视频:https://www.bilibili.com/video/BV1Wz4y1d7wb?from=search&seid=9763121901535508344

P问题,NP问题,NP完全问题,NP难问题相关推荐

  1. P、NP、NPC(NP完全问题)、NP-hard问题概述

    P.NP.NPC(NP完全问题).NP-hard问题概述 一.概念总结 1.P问题: 能在多项式时间内解决的问题 2.NP问题: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时 ...

  2. (数学)P、NP、NPC、NP hard问题

    概念定义: http://m.elecfans.com/article/757041.html https://www.cnblogs.com/AndyJee/p/5048556.html P问题:能 ...

  3. python使用numpy的np.fmod函数计算numpy数组除以某一特定数值剩余的余数(remainder)、np.mod函数和np.fmod函数对负值的处理方式有差异

    python使用numpy的np.fmod函数计算numpy数组除以某一特定数值剩余的余数(remainder).np.mod函数和np.fmod函数对负值的处理方式有差异 目录

  4. np.random.randint 与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率

    np.random.randint  与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率 import numpy as np num_lstm = np ...

  5. np.random.RandomState、np.random.rand、np.random.random、np.random_sample

    0. np.random.RandomState 计算机实现的随机数生成通常为伪随机数生成器,为了使得具备随机性的代码最终的结果可复现,需要设置相同的种子值: np.random.randn(-) ⇒ ...

  6. [转载] python numpy.sqrt_python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等...

    参考链接: Python中的numpy.tan numpy库提供非常便捷的数组运算,方便数据的处理. 1.数组与标量之间可直接进行运算 In [45]: a Out[45]: array([[ 0, ...

  7. np.add.at和np.negative.at

    np.add.at np.at(a, indices, b=None, /),这个方法等价于 a[indices] += b.在有限元程序中合成总纲或者总载荷的时候是个不错的方法.(对应的位置按照索引 ...

  8. Numpy.array()详解 、np.array与np.asarray辨析、 np.array和np.ndarry的区别

    记录一下numpy.array()的详细用法,以及与np.asarray()和np.ndarray()的区别. 目录 1. Numpy.array()详解 1.1 函数形式 1.2 参数详解 1.3 ...

  9. 如何区分np.random.normal()、np.random.randn()、np.random.randint()、np.random.random()、np.random.choice()

    本期我们来对np.random中常用的函数进行区分 np.random.normal(loc,scale,size) 参数说明: loc:正太分布的均值 scale:正太分布的标准差 size:设定数 ...

  10. np.empty()函数、np.random.uniform()函数、np.random.normal()函数的详细介绍和代码说明

    目录 np.empty()函数 np.random.uniform()函数 np.random.normal()函数 np.random的其它常见函数 参考 np.empty()函数 函数定义: nu ...

最新文章

  1. [转] 利用CORS实现跨域请求
  2. JavaWeb基础之JdbcUtils工具类2.0
  3. TJA1050只能RX不能TX
  4. iOS: Crash文件解析
  5. ORACLE如何一次性修改用户连接数?
  6. Java命令行界面(第30部分):观察
  7. mapper 判断条件为null
  8. Android:通过Intent传递对象、Parcelable
  9. 网络协议从入门到底层原理(7)网络安全 - 常见攻击、单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书
  10. lintcode-easy-Merge Intervals
  11. 学习笔记---将Asp.Net网站发布到IIS的四种方法及注意事项
  12. 使用装机软件后,删除开机启动项的方法
  13. 公有云迁移,需要考虑的问题
  14. 若为自由故——重返 Linux 世界
  15. 2020.09.16 记录学习的点滴
  16. IKBC键盘win键失效
  17. 清华大学转到计算机专业一年几个,计算机专业(转).doc
  18. 你要知道的测试面试题
  19. 读书笔记-->《精益数据分析》第二部分 | 第15章:创业阶段2——黏性
  20. 2020-08-22 SpringMVC中Json使用、后端返回给前端的JSON对象乱码问题、前台对Json数据格式的操作、Jackson以及FastJson使用

热门文章

  1. 升级到iOS9之后的相关适配
  2. 【计量经济学导论】10. ARIMA模型
  3. 倒立摆的实现 1.前期准备
  4. Python3 - 苹果ID登录App Sign in with Apple
  5. c语言程序电子词典,C语言及程序设计进阶例程-14 开发一个电子词典
  6. vue实现复制到剪切板的功能
  7. 如何清空c盘只剩系统_电脑C盘怎么清理到最干净?高手教你清理C盘的详细步骤...
  8. Webcat 数据库管理工具
  9. 数学建模系列(三)-评价模型(六)---神经网络评价
  10. 计算机快速换界面,老板来了?这些好用的Windows快捷键让你一秒切换操作界面!-页面设置快捷键...