搞清楚p问题、NP问题、NP完全问题和NP难问题
先行了解相关的几个名词:
计算复杂性理论:
研究计算资源中最常见的时间(要通过多少步演算才能解决问题)和空间(在解决问题时需要多少存储器)
归约:
是解决不同算法问题的一种手段。比如有两个算法任务A and B,假如任务A比任务B的复杂性低(简记为A≤B)。从归约的角度来看,就是说如果我们有了B的有效算法M,那么我们有一个有效算法N,它可以引用M,最终解决A问题。
所以 A≤B 等价 A归约到B(reduces A to B, or A is reducible to B, or A can be reduced to B)。
时间复杂度
时间复杂度不是表示程序解决一个问题要花费的时间,而是表示 当问题规模(数据)增大后,程序处理需要的时间增长的有多快。比如当数据扩大n倍后,程序处理的时间变慢n倍,那就是O(n)的时间复杂度。再比如冒泡排序,数据扩大2倍,时间变慢4倍,就是O(n^2)的时间复杂度。
如下表所示,时间复杂度排序递减
多项式时间
在计算复杂度理论中,指的是一个问题的计算时间 m(n)m(n)m(n) 不大于问题 nnn 的多项式倍数(即n为底数的时候)。数学描述为 m(n)=O(nk)m(n) = O(n^k)m(n)=O(nk),此 kkk 为一常量值。
如O(a^n)和O(n!)型的复杂度,属于非多项式级的复杂度,这种级别的复杂度计算机往往不能承受。
不可解问题
并非所有问题都可以找到多项式时间的算法,甚至有些问题不可能找到一个正确的算法。这样的问题就称为不可解问题。
Hamilton网络
在一个城市的地图网络中,寻找一条从给定的起点到给定的终点沿途恰好经过所有其他城市一次的路径。
=========================================
辅助理解参考图
P类问题
能在多项式时间内解决的问题。(polynominal,多项式)
NP类问题
在多项式时间内验证(猜)一个正确解的问题。(Non-deterministic polynominal,非确定性多项式)
P类问题是NP问题的子集,因为存在多项式时间解的问题,总能在多项式时间内得到验证。
NP问题不一定能在多项式时间内得到验证,所以P问题并不等价于NP问题。
不能判定这个问题到底有没有解,而是猜出一个解来在多项式时间内证明这个解是否正确。即该问题的额猜测过程是不确定的,而对其某一个解的验证则能够在多项式时间内完成。
Hamilton回路就是一个NP问题,比如要确定路径权值和小于某个参数W的解,那我随便猜一条,然后去验证,在多项式时间内总会解决这个问题。
NPC问题
存在一个NP问题 QQQ,如果所有NP问题都能在多项式时间内归约为这个 QQQ。也就是说只要解决了这个问题,那么所有的问题都解决了。(NPC:NP complete ,NP完全问题)
定义满足2个条件:
- 属于一个NP问题
- 所有NP问题都能归约到它
NPH问题
NP难(hard)问题是满足NPC问题的第二个条件,但不一定满足第一个条件,即NP-hard不一定是NP问题。也就是说NP-Hard问题可能无法得到多项式时间的算法。
.
.
.
.
参考资料:
http://www.matrix67.com/blog/archives/105
https://blog.csdn.net/databatman/article/details/49304295
https://zh.wikipedia.org/wiki/P/NP%E9%97%AE%E9%A2%98
https://blog.csdn.net/qq_29176963/article/details/82776543
(第一篇大佬讲的很详细,可参考)
搞清楚p问题、NP问题、NP完全问题和NP难问题相关推荐
- P、NP、NP完全问题、NP难问题
可以在多项式时间内求解的问题称为易解的,而不能在多项式时间内求解的问题称为难解的. P类问题:多项式类型,是一类能够用(确定性的)算法在多项式的时间内求解的判定问题. 只有判定问题才属于P 不可判定问 ...
- NP-Hard?大白话学习P问题、NP问题、NP完全问题和NP难问题
## 该笔记自用为主,记录一些日常学习过程中看到的不熟悉的知识和从未接触过的知识,用于回看和记录.其中有一些个人理解,如有错误请讨论指正. 前言 在讨论这一串问题之前,我们需要复习两个概念. 1.多项 ...
- 什么是NP问题,什么是NP hard问题,什么是NP完全问题。
http://www.cs.pitt.edu/~ztliu/wordpress/2011/05/np-problem/ 首先解释一下什么是NP问题,什么是NP hard问题,什么是NP完全问题. 看下 ...
- 【释义】NP complete概念浅析(涵盖:P问题,NP问题,NP完全问题,NP难问题)
文章目录 前言 正文 1.P问题 2.NP问题 3.NP-complete问题(即:NP完全问题) 4.NP完全问题可能不会长久存在 5.示例 6.NP-Hard问题(即:NP难问题) 7.关系 小结 ...
- 排序 np_P问题、NP问题、NP完全问题和NP难问题理解
P 问题 P类问题(P:polynominal,多项式):存在多项式时间算法的问题.以排序为例,在排序这个大问题里,是可以找到一种时间复杂度为多项式o(n^2),o(nlogn)的算法(如冒泡排序法, ...
- 【看了就懂】P问题、NP问题、NP完全问题和NP难问题
为了避免对这四个问题有一定理解基础的人看的很烦,个人简单理解的四个问题: P问题:有多项式时间算法,算得很快的问题. NP问题:算起来不确定快不快的问题,但是我们可以快速验证这个问题的解. NP-co ...
- [机器学习]P问题、NP问题、NP完全问题和NP难问题
该文章为转载,更正了原作者的一些笔误 在讲P类问题之前先介绍两个个概念:多项式,时间复杂度.(知道这两概念的可以自动跳过这部分) 1. 多项式:axn−bxn−1+cax^n-bx^{n-1}+cax ...
- P问题、NP问题、NP完全问题和NP难问题概念梳理
非"正规"问题 不可解问题:不存在解决算法的问题 例子:停机问题 不可能有复杂度O(多项式)问题 例子:输出从1到n这n个数的全排列(因为把结果打印出来也是O(n!)的复杂度) & ...
- [机器学习] 第一章 绪论 1.P问题、NP问题、NP完全问题和NP难问题
参考:https://zhuanlan.zhihu.com/p/73953567 参考:https://blog.csdn.net/qq_21768483/article/details/804305 ...
- pandas使用replace函数将所有的无穷大值np.inf替换为缺失值np.nan、使用pandas的fillna函数用经验固定值填充缺失值np.nan
pandas使用replace函数将所有的无穷大值np.inf替换为缺失值np.nan(replace all infinities with a missing value).使用pandas的fi ...
最新文章
- JMM内存模型如何为并发保驾护航
- 长话短说,阿里云原生团队招人,急
- 【每日一包0015】gradient-string
- python自动化报表定时跑_POINTer分享:Python如何做报表自动化
- 接受拒绝采样(Acceptance-Rejection Sampling)
- PhiloGL学习(5)——神说要有光,便有了光
- 经典面试题(41):以下代码将输出的结果是什么?
- JAVA程序设计:接受数字并求和
- OA系统中的HRM的发展和存在的误区,值得每一个HR学习
- 【软考】2019 上半年软件设计师 下午真题及答案
- windows下创建本地局域网svnserver和gitserver
- 手动批量下载ts文件并合并
- VirtualBox Share Folder配置
- AcWing 1107 魔板
- RC522(RFID模块)实践总结
- 程序员毕业去大公司好还是小公司好?
- Ubuntu 常用软件推荐(QQ、微信、MATLAB等)及安装过程
- 硬件设备计算存储及数据交互杂谈
- [CB]2018年中国智能手机市场出货量
- StringTokenizer类的用法