如果一个算法的最差时间效率属于O(p(n)),则该算法可以在多项式的时间内对问题进行求解,其中p(n)是输入规模n的一个多项式函数。

可以在多项式时间内求解的问题是易解的。不能在多项式时间内求解的问题是难解的

判定问题是能够回答是或否的问题,通常第一,只有判定问题才属于P。

P类问题是一类能够用确定性的算法,在多项式的时间内求解的判定问题,这种问题类型也称为多项式类型。

为什么要将P约束为判定问题?

1、不能在多项式时间内求解的问题会产生指数级的巨大输出。

2、许多重要问题可以化简为一系列更容易研究的判定问题。

并不是每一个判定问题都能够在多项式的时间内求解,某些判定问题是不能用任何算法求解的,这种问题成为不可判定的问题。这是相对于用算法求解的可判定问题来说的。不可判定问题,我们称它为停机问题:给定一段计算机程序和它的一个输入,判断对于该输入是会终止,还是会无限的运行下去。

存在可以判定,但又难解的问题。也有许许多多的重要问题,我们竟没有找到它的多项式类型算法,也无法证明这样的算法不存在。比如哈密顿回路问题,旅行商问题,背包问题,划分问题,装箱问题,图的着色问题,整数线性规划问题。这些问题中有一些是判定问题,另一些不是判定问题,都可以转化为等价的判定问题,这些问题的共同点是,他们都有着按这指数增长的候选项,其规模是输入规模的函数,我们需要在这些候选项中寻找问题的最终结。其次,虽然在计算机上对问题的求解可能是困难的,但是在计算上判定一个待定解是否解决了该问题,就是简单的,这种判定可以在多项式时间内完成。

一个不确定算法是一个两阶段过程,他把一个判定问题的实例l作为它的一个输入,并进行下面的操作:

  非确定阶段,生成一个任意串s,,把它当作给定实例的一个候选解。

  确定阶段,确定算法把l和s都作为它的输入,如果s的确是l的一个解,就输出是,否则输出否或者不停下来。

  当且仅当对于问题都每一个真实例,不确定算法都会在某次执行中返回是的时候,我们说它能够求解这个判定问题。

  如果一个不确定算法在验证阶段的时间效率是多项式级的,我们说它是不确定多项式的类型。

NP类问题是一类可以用不确定多项式算法求解的判定问题,这种问题类型称为不确定多项式类型。

大多数判定问题都属于NP问题。NP问题也包含哈密顿回路问题,旅行商问题,背包问题,划分问题,装箱问题,图的着色问题,整数线性规划问题。停机问题则属于为数很少,一句不属于NP问题的判定问题。

一个NP完全问题是NP中的一个问题,他和该类型中任何其他问题的难度都是一样的,NP中的任何其他问题都能够在多项式的时间内化解为这种问题.

一个判定问题D是NP完全问题,条件是,一它属于NP问题,二NP中的任何问题都能够在多项式时间内化简为D.

P、NP、NP完全问题的更多相关文章

  1. NP完全性理论与近似算法

    转自:http://www.cnblogs.com/chinazhangjie/archive/2010/12/06/1898070.html 一.图灵机 根据有限状态控制器的当前状态及每个读写头读到 ...

  2. np问题

    NP(np) Time Limit:1000ms Memory Limit:64MB 题目描述 LYK 喜欢研究一些比较困难的问题,比如 np 问题.这次它又遇到一个棘手的 np 问题.问题是这个样子 ...

  3. 一起聊聊什么是P问题、NP问题、NPC问题

    概念 P问题:如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题.通常NOI和NOIP不属于P类问题,我们常见到的一些信息奥赛的题目都是P问题. NP问题:可以在多项式的 ...

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

    content: range() np.arange() np.linspace() 一.range(start, stop, step) 1.range() 为 python 自带函数 2.生成一个 ...

  5. numpy中np.nan(pandas中NAN)

    转自:http://blog.csdn.net/xiaodongxiexie/article/details/54352889 在处理数据时遇到NAN值的几率还是比较大的,有的时候需要对数据值是否为n ...

  6. np归纳总结(全)第一天

    1.概述 1.np.array()  # 将列表转换为数组 import numpy as np array = [1, 2, 3, 4, 5] array = np.array(array) 2.. ...

  7. P vs NP

    Complexity Class Computational problem Decision Problems Model of computation Time-complexity classe ...

  8. 以np.concatenate为主题,谈谈numpy数组按维度合并的问题

    1.引言 最近在做多模态融合的图像问题,其中最需要解决的就是不同模态的图像用什么方法进行融合,最简单也最直观的方法就是采用合并数组的方法,将不同模态的图像合并为多通道进行处理.在一些论文中,比如< ...

  9. NP完全问题 NP-Completeness

    原创翻译加学习笔记,方便国人学习算法知识! 原文链接http://www.geeksforgeeks.org/np-completeness-set-1/ 我们已经找到很多很高效的算法来解决很难得问题 ...

  10. NP完全问题

    1.概念 好算法:Edmonds与1975年提出:具有多项式时间(O(nk)的算法为好算法. P类问题:存在多项式时间算法的问题.如:货郎问题.调度问题.最大团问题.最大独立集问题.Steiner树问 ...

随机推荐

  1. 《Android源码设计模式》学习笔记之ImageLoader

    微信公众号:CodingAndroid cnblog:http://www.cnblogs.com/angel88/ CSDN:http://blog.csdn.net/xinpengfei521 需 ...

  2. ExpandableListView使用

    相关博客 ExpandableListView使用 博客内容记录 场景 有时候,使用ListView并不能满足应用程序所需要的功能.有些应用程序需要多组ListView,这时候我们就要使用一种新的控件 ...

  3. webpack之深入浅出externals

    我们通常在做项目时可能会把第三方库打包到bundle中,比如下面这张图 如果不想把第三方库打包到bundle中,这就有了externals.官方的使用externals比较简单,只需三步-- 1.在H ...

  4. 崩溃 golang入坑系列

    早上(11.30)收到邮件,Vultr东京机房网络故障.当时搭建SS时,考虑到了机房故障.所以特意分出了日本和香港两条线路.但千算万算,忘记数据库还在东京机房中. 现在网络故障,SS服务器无法读取数据 ...

  5. java自动生成entity文件

    网上关于自动生成entity文件的代码很多,看了很多代码后,在先辈们的基础上再完善一些功能(指定多个表,全部表). 为了使用方便所以把两个类写在一个java文件中,所以大家可以直接拿这个java文件, ...

  6. POJ 1151 Wormholes spfa+反向建边+负环判断+链式前向星

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 49962   Accepted: 18421 Descr ...

  7. phpcms网站搬家 至 服务器 完整并且详细过程

    上传服务器空间后,才会通过搜索域名进行网页访问. 上传的过程肯定会有很多东西要修改,例如数据库怎么上传.路径怎么修改等..... 这就让大家看下,自己不断尝试后的完整搬家步骤!!! 一.上传服务器 ( ...

  8. MySQL安装出现的1045问题以及解决方法

    MySQL安装出现1045的问题解决办法: 1045.的原因是已经装过了MySQL再次装的时候报的错误,那么该怎么处理那??? 首先卸载程序,从windows里找到mysql右击卸载,然后就是在dos ...

  9. OpenCV 读取视频 多种方式

    OpenCV中常见的视频方式是while循环读取,可是,当遇到嵌套循环呢 1.常见的while循环 ,没有嵌套循环 cv::VideoCapture capture("d:/test/dem ...

  10. 转自知乎-wifi破解

    上点python有意思的代码. 环境准备 python2.7 pywifi模块 字典 清除系统中的任何wifi连接记录 导入模块 这里用的模块就这三个 pywifi的_wifiutil_linux.p ...