在讨论算法的时候,常常会说到这个问题的求解是个P类问题、NP类问题、NPC类问题、NP难类问题。在讲P类问题之前先介绍两个概念:多项式,时间复杂度。多项式:ax^n^+bx^n-1^+c在计算机算法求解问题当中,经常用时间复杂度和空间复杂度来表示一个算法的运行效率。空间复杂度表示一个算法在计算过程当中要占用的内存空间大小。时间复杂度则表示这个算法运行得到想要的解所需的计算工作量,他探讨的是当输入值接近无穷时,算法所需工作量的变化快慢程度。时间复杂度排序:o(1)<o(n)<o(lgn)<o(n^2^)<o(n^a^)<o(e^n^)(a>2,n表示输入的数据个数,o(1)为常数级别)

1)P类问题:存在多项式时间算法的问题。(P:polynominal,多项式)
以冒泡排序为例,在排序这个大问题里,是可以找到一种时间复杂度为多项式o(n2)的算法(如冒泡排序法)来求解排序问题的,所以我们说排序问题是一个有多项式时间算法的问题。
为什么我们要研究这个?因为计算机处理的输入数据达到100万个的时候,时间复杂度为o(n2)和o(en)的算法,所需的运行次数简直是天壤之别,o(en)指数级的可能运行好几天都没法完成任务,所以我们才要研究一个问题是否存在多项式时间算法。而我们也只在乎一个问题是否存在多项式算法,因为一个时间复杂度比多项式算法还要复杂的算法研究起来是没有任何实际意义的。

2)NP类问题:能在多项式时间内验证得出一个正确解的问题。(NP:Nondeterministic polynominal,非确定性多项式)
P类问题是NP问题的子集,因为存在多项式时间解法的问题,总能在多项式时间内验证他。
著名的NP类问题:旅行家推销问题(TSP)。即有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的环路,这个环路路径小于a。我们知道这个问题如果单纯的用枚举法来列举的话会有(n-1)! 种.已经不是多项式时间的算法了,(注:阶乘算法比多项式的复杂)。
但是,我们可以用猜的,假设猜几次就猜中了一条小于长度a的路径,问题解决了,皆大欢喜。可是,我不可能每次都猜的那么准,也许我要猜完所有种呢?所以我们说,这是一个NP类问题。也就是,我们能在多项式的时间内验证并得出问题的正确解,可是我们却不知道该问题是否存在一个多项式时间的算法,每次都能解决他(注意,这里是不知道,不是不存在)。
所以这就引出了这类讨论的一个千年问题:是否 NP类问题=P类问题?即,是否所有能在多项式时间内验证得出正确解的问题,都是具有多项式时间算法的问题呢?

2)NPC类:是NP的一个子集,且其中每一个问题均能由NP中的任何问题在多项式时间内转化成。
很多时候NPC问题是找不到一个多项式时间算法的,更多时候他是一个指数级的算法。
对于这一类问题,他们满足两个性质,一个就是在多项式时间内可以验证一个解是不是正确的解,另一个性质就是我们可以把任何一个NP问题在多项式的时间内把他的输入转化,使之成为一个NP-complete问题(即规约)。NP-Complete Problem问题在多项式时间内可以互相转换,只要其中一个问题可以在多项式时间内解决,那么其他问题也都将可以在多项式时间内解决。

3)NPH问题:若问题A不属于NP类,已知某一NPC问题可在多项式时间内转化为问题A,则称A为NPH。
NP-hard问题至少和NP问题一样难。

下面贴一张图把四者的关系捋一捋

P类问题、NP类问题、NPC类问题、NP难问题相关推荐

  1. P问题、NP问题、NPC问题、NP难问题

    P问题.NP问题.NPC问题.NP难问题的概念 P问题.NP问题.NPC问题.NP难问题的概念 转载:from http://blog.sina.com.cn/s/blog_5212bec30100o ...

  2. p问题、np问题、npc问题、np难问题的理解(纯属个人见解)

    最近因为要证明np问题,所以找了一系列概念去理解这4个问题.理解的时候看到好多人给出了不同的答案,我下面会借鉴别人的答案来总结出一份对于我自己来说,最容易理解这4个问题的说法. 预备知识了解: 这部分 ...

  3. P 问题、NP 问题、NPC 问题(NP 完全问题)、NPH 问题和多项式时间复杂度

    为了弄清楚上面的概念以及对他们有个基本的了解,所以总结出这篇blog. 1.多项式时间复杂度 定义: 解决问题需要的时间与问题的规模之间是多项式关系. 多项式关系形如 O ( n k ) O(n^k) ...

  4. P问题、NP问题、NPC问题、NP难问题的概念[zz]

    你会经常看到网上出现"这怎么做,这不是NP问题吗"."这个只有搜了,这已经被证明是NP问题了"之类的话.你要知道,大多数人此时所说的NP问题其实都是指的NPC问 ...

  5. P问题、NP问题、NPC问题(NP完全问题)、NPH问题和多项式时间复杂度

    https://blog.csdn.net/K346K346/article/details/51026006 1.多项式时间复杂度 定义: 解决问题需要的时间与问题的规模之间是多项式关系. 多项式关 ...

  6. P问题、NP问题、NPC问题、NP难问题的概念

    http://blog.sina.com.cn/s/blog_5212bec30100o03y.html 你会经常看到网上出现"这怎么做,这不是NP问题吗"."这个只有搜 ...

  7. P问题、NP问题、NPC问题、NP完全问题、第一个NPC问题是什么解释

    每个问题用简单的一句话概括: 1. P问题:可以用多项式时间的确定性算法判定和求解的问题. 2. NP类问题:可以用多项式时间的确定性算法来检查和验证解 3. NPC问题   1. 令λ∈NP   2 ...

  8. 【NP问题】P问题,NP问题,NPC问题,NPH问题

    P类问题: 官方定义:所有可以在多项式时间内求解的判定问题.(判定问题:判断是否有一种能够解决某一类问题的能行算法的研究课题.) 自己的理解:对于一类问题,能有一个确定性算法,在多项式时间内就能解出所 ...

  9. 微信小游戏_China_Fighting——npc类(enemy、mask、sars)

    目录 微信小游戏_China_Fighting--前言 微信小游戏_China_Fighting--基础支撑类(sprite.animation.pool) 微信小游戏_China_Fighting- ...

最新文章

  1. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象
  2. GitHub 贡献第一的微软开源软件列表
  3. 15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理
  4. hypixel服务器免费低延迟ip,国服hypixel服务器ip
  5. 编程工作怎么样手工问号
  6. 构造方法内的多态问题
  7. 用Java语言编写的随机彩色验证码
  8. vue前端信息详情页模板梳理
  9. 短视频源码下载、vue+html+elementui短视频播放实现,web、pc静态页短视频、手机网页版短视频
  10. 电脑软件:主流的压缩软件对比,看完你就会选择了
  11. 【PM模块】基础概念简介
  12. win10远程连接ubuntu18.4
  13. mysql 多表查询
  14. 【转载】阿里云域名解析将一个域名指向另一个域名
  15. 微信支付宝付款码规则
  16. 如何使用vsCode+Icarus verilog+GTKwave编写并仿真verilog
  17. 浙江大学 找出直系亲属(java)
  18. 计算机组成原理笔记(王道考研) 第二章:数据的表示和运算1
  19. html div 移除,js动态创建及移除div的方法
  20. 【第60题】必学的枚举1-枚举的定义和基本特性

热门文章

  1. Axmath 公式编号更新闪退问题-mark
  2. FPGA时序约束理论(基于Vivado)
  3. 工业智能网关BL110详解之1:实现三菱 PLC FX1S 接入Modbus TCP Server云平台
  4. 硬盘里删除的文件怎么恢复
  5. Python中的.pkl文件
  6. 微信二手商城产品prd文档
  7. h5隐藏video控制按钮controls(腾讯云点播禁用video音量全屏等按钮)
  8. Sentienl 流控效果之匀速排队与预热实现原理与实战建议
  9. 视角来分析 腾讯 微信访客系统的一些问题 (二 )end
  10. fieldset 标签