np问题

如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。P是英文单词多项式的第一个字母

O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度

NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题,找一个解很困难,但验证一个解很容易。验证一个解只需要O(n)的时间复杂度

当然有不是NP问题的问题,即你猜到了解但是没用,因为你不能在多项式的时间里去验证它。下面我要举的例子是一个经典的例子,它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。很显然,前面所说的Hamilton回路是NP问题,因为验证一条路是否恰好经过了每一个顶点非常容易。但我要把问题换成这样:试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了,因为除非你试过所有的路,否则你不敢断定它“没有Hamilton回路”。

之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。“NP问题”,实际上是在探讨NP问题与P类问题的关系。

很显然,所有的P类问题都是NP问题。也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解,即究竟是否有P=NP?通常所谓的“NP问题”,其实就一句话:证明或推翻P=NP。

目前为止这个问题还“啃不动”。但是,一个总的趋势、一个大方向是有的。人们普遍认为,P=NP不成立,研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题,也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在,使人们相信P≠NP,NPC属于NP,即可以在多项式时间内验证,但是不可能在多项式时间内被求解,即NP中有两块,一个是P,一个是NPC,因此P不等于NP。

为什么人们比较相信NPC不可以在多项式时间内被求解呢?是基于一种趋势的设想。

为了说明NPC问题,我们先引入一个概念——约化

比如说,现在有两个问题:求解一个一元一次方程和求解一个一元二次方程。那么我们说,前者可以约化为后者,意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题,那么我们能找到一个“规则”,按照这个规则把解一元一次方程程序的输入数据变一下,用在解一元二次方程的程序上,两个程序总能得到一样的结果。这个规则即是:两个方程的对应项系数不变,一元二次方程的二次项系数为0。按照这个规则把前一个问题转换成后一个问题,两个问题就等价了。同样地,我们可以说,Hamilton回路可以约化为TSP问题(Travelling Salesman Problem,旅行商问题):在Hamilton回路问题中,两点相连即这两点距离为0,两点不直接相连则令其距离为1,于是问题转化为在TSP问题中,是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。

约化的意义在于一个问题可以用至少相等的复杂度的另一个问题的的求解方式来求解。

很显然,约化具有一项重要的性质:约化具有传递性。如果问题A可约化为问题B,问题B可约化为问题C,则问题A一定可约化为问题C

通过对某些问题的不断约化,我们能够不断寻找复杂度更高,但应用范围更广的算法来代替复杂度虽然低,但只能用于很小的一类问题的算法。

如果不断地约化上去,不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题,那么最后是否有可能找到一个时间复杂度最高,并且能“通吃”所有的 NP问题的这样一个超级NP问题?答案居然是肯定的。也就是说,存在这样一个NP问题,所有的NP问题都可以约化成它

并且更加不可思议的是,这种问题不只一个,它有很多个,它是一类问题。这一类问题就是传说中的NPC 问题,也就是NP-完全问题

NP-Hard问题要比 NPC问题的范围广,NP困难问题未必可以在多项式的时间内验证一个解的正确性(即不一定是NP问题),因此即使NP完全问题有多项式时间内的解,NP困难问题依然可能没有多项式时间内的解。因此NP困难问题“至少与NPC问题一样难”。

时间: 2024-10-29 19:10:09

np问题的相关文章

python 值比较判断,np.nan is np.nan 却 np.nan != np.nan ,pandas 单个数据框值判断nan

pandas中DataFrame,Series 都有 isnull()方法,而数据框却没有,用了就会报错:AttributeError: 'float' object has no attribute 'isnull' 怎么判断单个框是否为 np.nan Python常规的判断,==,和is, 这对None是有效的 None is NoneOut[49]: True None == NoneOut[50]: True 而对,np.nan,只能用is da1pd.ix[6000996,u'团队']

P和NP问题

1. 通俗详细地讲解什么是P和NP问题 http://blog.sciencenet.cn/blog-327757-531546.html NP----非定常多项式(英语:non-deterministic polynomial,缩写NP)时间复杂性类,或称非确定性多项式时间复杂性类 要计算或解决一个问题,该问题通常有一个大小规模,用n表示.例如,若分析计算一个二进制数,该数有多少位,这个位就是其大小规模.再比如,从n个数里面找出最大的那个数,这个n就是该问题的规模大小.怎么找?我们要比较n-1

算法导论之P、NP、NPC问题

P.NP.NPC 概念 > P问题:能够在多项式时间内解决的决策问题. -举例: 图搜索问题.最短路径问题.最小生成树问题······ > NP问题:不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题. -验证:给定一个问题的实例.证书(类似于证据),需要验证这个证书是这个问题的正确答案. - 举例:汉密尔顿路径,实例为G=(V,E),证书为顶点序列 {v0,v1,v2,v3,-.,vk},我们的目的是要验证这个证书就是这个问题的答案,验证方法为:先遍历一遍这个

HDU1760 A New Tetris Game NP态

A New Tetris Game Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1457    Accepted Submission(s): 713 Problem Description 曾经,Lele和他姐姐最喜欢,玩得最久的游戏就是俄罗斯方块(Tetris)了.渐渐得,Lele发觉,玩这个游戏只需要手快而已,几乎不用经过大脑思

什么是P问题、NP问题和NPC问题

本文转自:http://www.matrix67.com/blog/archives/105 这或许是众多OIer最大的误区之一. 你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题了”之类的话.你要知道,大多数人此时所说的NP问题其实都是指的NPC问题.他们没有搞清楚NP问题和NPC问题的概念.NP问题并不是那种“只有搜才行”的问题,NPC问题才是.好,行了,基本上这个误解已经被澄清了.下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你

NP难问题求解综述

NP难问题求解综述 摘要:定义NP问题及P类问题,并介绍一些常见的NP问题,以及NP问题的一些求解方法,最后最NP问题求解的发展方向做一些展望.   关键词:NP难问题 P类问题 算法 最优化问题   正文: 一.NP难问题及P类问题 为了解释NP难问题及P类问题,先介绍确定性算法和非确定性算法这两个概念,设A是求解问题Π的一个算法,如果在算法的整个执行过程中,每一步只有一个确定的选择,则称算法A是确定性(Determinism)算法.设A是求解问题Π的一个算法,如果算法A以如下猜测并验证的方式

关于P、NP、NPC和NP-Hard问题

1.P问题 P中包含的是能在多项式时间内解决的问题,此类问题的时间复杂度不超过O(),期中n为问题输入规模,k为常数. 2.NP问题 NP中包含的是能在多项式时间内验证某个解是否正确的问题. 比如:(1)所有的P问题都是NP问题,因为我们总能在多项式时间内验证给定的某个解是否正确. (2)对于某些不属于P问题的问题,如3-CNF可满足性问题,给出一组变量的赋值序列,我们很容易在多项式时间内验证其布尔表达式的值是否为真. 3.NPC问题 一个问题是 NPC问题必须满足: (1)这个问题是NP问题:

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

P问题.NP问题.NPC问题.NP难问题的概念 离入职尚有几天时间,闲来无事,将大家常见却又很容易搞糊涂的几个概念进行整理,希望对大家有所帮助.你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题了”之类的话.你要知道,大多数人此时所说的NP问题其实都是指的NPC问题.他们没有搞清楚NP问题和NPC问题的概念.NP问题并不是那种“只有搜才行”的问题,NPC问题才是.好,行了,基本上这个误解已经被澄清了.下面的内容都是在讲什么是P问题,什么是NP问题,什么是N

NP问题、NPC问题和NPC问题

NP问题NPC问题和NPC问题 P类问题 :如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题. NP问题:是指可以在多项式的时间里验证一个解的问题.NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题.  很显然,所有的P类问题都是NP问题.关键是,人们想知道,是否所有的NP问题都是P类问题. NPC问题:同时满足下面两个条件的问题就是NPC问题.首先,它得是一个NP问题:然后,所有的NP问题都可以约化到它. NP-Hard问题:它满足NPC问题定义的第二

P,NP,NPC,NPC-HARD

P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,所有NP问题也都得到解决. NP hard:NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的问题(不一定是NP问题). 可以参考:https://www.zybuluo.com/chanvee/note/12722