如果一个算法的最差时间效率属于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. Linux上安装和卸载mysql数据库 (一)

    一.前言 第一次写博客,很激动同时有点畏惧,激动是我可以将我的经验进行分享,畏惧是我怕我写的东西,大家借鉴的时候,有些步骤不能成功.不过,我还是很有信息的,我分享的经验都是我搭建成功以后才分享出来.这 ...

  2. ExceptionLess 本地部署小结

    ExceptionLess 是一个免费开源分布式系统日志收集框架,地址:https://github.com/exceptionless/Exceptionless 运行环境: .NET 4.6.1 ...

  3. 谈谈form-data请求格式

    最近一直都比较忙,坚持月月更新博客的计划不得中止了,今天好不容易抽出点时间来说说最近项目中遇到的一个问题,有关request post请求格式中的multipart/form-data格式. 引言 最 ...

  4. Java计算字符串中字母出现的次数

    话不多说,直接上代码........... public static void main(String[] args) { String str="I'm go to swimming&q ...

  5. Jquery基础知识01

    1:$(document).ready()function{}和window.onload()的区别.   1:$(document).ready()function{} 该方法等到Dom结构绘制完毕 ...

  6. python中使用selenium调用Firefox缺少geckodriver解决方法

    from selenium import webdriver driver=webdriver.Firefox() 会报错 解决方法: 因为缺少geckodriver.exe,先到https://gi ...

  7. 前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上

    .table tr>td:nth-child(1){width: 2em !important;padding-left: .6rem !important;padding-right: .6r ...

  8. ngixn配置

    nginx 配置入门 之前的nginx配置是对nginx配置文件的具体含义进行讲解,不过对于nginx的新手可能一头雾水. 今天看到个文档不错,翻译过来分享给大家,可以让新手更详细地了解nginx配置 ...

  9. PHP基础知识点

    //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH变量名建议用 ...

  10. Git基本使用命令(windows)

    1.  记住一个名词repository版本库 =======================基本操作======================== git init 在需要的地方建立一个版本库(也 ...