1. P问题

P问题: 能在多项式时间内解决的问题

考虑时间复杂度​,P问题的时间复杂度总是可以用多项式表示,或小于某多项式表示的。

例如冒泡排序算法,时间复杂度为​

,显然是多项式时间内可以解决的问题。更快的排序算法如快速排序,时间复杂度为
​,也是多项式时间内可以解决的问题。

2. NP问题

NP问题: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题。

为什么是”不能或不确定能不能“呢,因为关于P是否等于NP,人类尚且没有统一的答案。但是人们现在普遍认为P不等于NP。

典型的NP问题如哈密顿回路问题:

天文学家哈密顿(William Rowan Hamilton) 提出,在一个有多个城市的地图网络中,寻找一条从给定的起点到给定的终点沿途恰好经过所有其他城市一次的路径。

可以证明,哈密顿回路问题是一个NP问题,人们往往要通过穷举这样笨拙的方法寻找问题的解,然而,显然我们可以在多项式时间内判断一个既定的解是否是正确的。

3. NPC问题

NPC问题:它是一个NP问题,且所有的NP问题都可以用多项式时间约化到它。更本质的理解,我们把规约看作一种偏序关系,那么NPC就是NP的上届。一句话,所有NP问题都不比NPC难。

首先解释一下规约的概念,如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B,即可以用问题B的解法解决问题A,或者说,问题A可以“变成”问题B。

例如A是求一元一次方程的解,B是求一元二次方程的解,A的输入参数是k和m,B的输入参数是a,b和c。

显然,我们可以令

​,这样我们就可以通过解问题B来求解问题A了。当然,A和B问题都不是NP问题。

可以看出,B的时间复杂度高于或者等于A的时间复杂度。也就是说,问题A不比问题B难

显然,NPC问题是NP问题的一部分,如果P=NP成立,P,NP和NPC将重合在一起。

4. NPhard问题

NPHard问题:NPhard满足所有的NP问题都可以用多项式时间约化到它,但并不要求其是一个NP的问题。或者说,NPhard是所有问题的上届。也就是说,所有问题都不比NPhard难。(要不人家怎么叫NPhard呢)

可以看出,NPhard问题的范围比NPC的范围更大。

5. 可计算问题

可计算问题的边界是什么?

可以说,可计算问题包括了P,NP和NPC,但不限于NP问题。由NP的定义可以看出,NP的问题的解必须是在多项式时间内可以验证的,而显然存在这样的问题,即问题的解既不能在多项式时间内找到,也不能在多项式时间内验证。

理论上说,可计算问题的数目和自然数集的数目相当,可以用如下方法证明:任何可计算问题都可以被图灵机计算,图灵机的算法和数据由纸带给出,而纸带则是由0和1组成的序列,因此,所有可计算问题都可以和一个由0和1组成的序列对应。而0和1组成的序列可以被看做二进制数,二进制数和十进制数一一对应,因此可计算问题和自然数集等势。

6.不可计算问题

定义了可计算问题后,我们很自然的像尝试计数不可计算问题。但遗憾的是,不可计算问题是不可数的,它的势远大于可计算问题。

什么样的问题是不可计算的?一个典型的例子是,消除机器学习中过拟合的问题是不可计算问题,因为对于任意的学习问题,样本的特征空间是无穷的,同时我们无法得到样本的分布。回到之前图灵机的例子,我们没有办法把所有的输入都写在纸上,因为它是无穷的,所以我们没有办法彻底解决过拟合的问题。

7. 机器学习所解决的问题

想找到一个问题的贝叶斯最有决策器是NPhard的,因此我们往往需要通过设置阈值等方式使学习算法在合适的时间停止,从而得到问题的近似解。

同时,过拟合的出现是不可避免的,彻底解决过拟合是NPhard的。

npc一定不能多项式时间内解决吗_P, NP, NPC 和 NPhard相关推荐

  1. p,np,npc,np难问题,确定图灵机与非确定图灵机

    本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...

  2. 计算机科学与未解决的难题,NP(未解难题)_百度百科

    NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题. 中文名 外文名 NP学    科 理论信息学 收    录 P/NP问题是在理论信息学 ...

  3. NP,NPC,NPH,强NPC问题

    图和部分内容转自http://www.cnblogs.com/jpcflyer/archive/2012/04/15/2450622.html 一.相关概念 P: 能在多项式时间内解决的问题 NP: ...

  4. 【机器学习】P问题、NP问题、NP-hard、NP-C问题解析与举例理解

    目录 1 基本概念 1.1 多项式和时间复杂度 1.2 P和NP 1.3 NP-hard和NP-C 1.4 总结 2 举例理解NP问题 3 其他NP问题 1 基本概念 1.1 多项式和时间复杂度 (1 ...

  5. 模拟退火算法解决np_P和NP问题与解决方案| 演算法

    模拟退火算法解决np P问题 (P Problems) P is the set of all the decision problems solvable by deterministic algo ...

  6. P,NP,NPC,NP-Hard,co-NP问题辨析

    学算法学到这章,真是神仙打架.上网学习各位前辈的文章,看的我也是眼花缭乱.终于看到一篇易于理解的(网址附于文末),看过之后写写自己的理解.如有错误,请各位前辈指正! P问题,在这里不说全称了,感觉说了 ...

  7. 时间复杂度 P/NP/NPC

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

  8. P NP NPC NP-hard以及多项式时间

    @[TOC]P NP NPC NP-hard以及多项式时间 P NP NPC NP-hard以及多项式时间 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Mar ...

  9. P NP NPC(1)(转载)

    要计算或解决一个问题,该问题通常有一个大小规模,用n表示.例如,若分析计算一个二进制数,该数有多少位,这个位就是其大小规模.再比如,从n个数里面找出最大的那个数,这个n就是该问题的规模大小.怎么找?我 ...

最新文章

  1. 《虚拟化与云计算》读书感(四)数据中心的设计和构造
  2. iOS点击空白收回键盘
  3. Linux后台运行命令 nohup command myout.file 21
  4. ubuntu开机出现:system program problem detected
  5. 【C】——常用C时间库函数
  6. 面试系列-JVM性能优化相关内容
  7. 【转】C# 中@符号在字符串中的作用
  8. Servlet开发(1)-----基础及MVC设计模式
  9. 反编译那些事儿(六)—所编译得.class文件带有$符号
  10. php全表搜索,搜索整个表? PHP MySQL
  11. 2019-01-19-build-xmr-stak-on-ubuntu
  12. 购买服务器需要注意哪些问题
  13. 职业生涯规划需要考虑的三大要点
  14. Pygame学习笔记 6 —— 3D游戏
  15. html 设置表格间距 表格整体大小,css表格单元格间距怎么调整?
  16. pytorch怎么下载?pytorch在哪里下载?
  17. 线性代数考研笔记(二)
  18. Comment obtenir des vecteurs de phrases?
  19. 饥荒专属服务器开完怎么运行,饥荒联机版专服简易启动教程
  20. Codeforces Round #257 (Div. 2)

热门文章

  1. 流数据分析平台Storm简介
  2. 扩展卡尔曼滤波EKF与多传感器融合
  3. CDO/CDS与次贷危机
  4. STM32使用另外两种方法使LED灯闪烁
  5. webscraper多页爬取_数据收集:web scraper 多页(无规律url)抓取
  6. windows10下 tensorflow2.0 gpu 安装
  7. LeetCode 264. Ugly Number II--C++,Python解法
  8. 报错解决:undefined reference to `snappy::MaxCompressedLength(unsigned long)'
  9. LeetCode hard 84. Largest Rectangle in Histogram--python,java 15行,c++ 15行 解法
  10. pycharm使用Djiago创建第一个web项目