17-P类问题和NP类问题.

合集下载

P问题、NP问题和NPC问题详解

P问题、NP问题和NPC问题详解

这或许是众多OIer最大的误区之一。

你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。

你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。

他们没有搞清楚NP问题和NPC问题的概念。

NP问题并不是那种“只有搜才行”的问题,NPC问题才是。

好,行了,基本上这个误解已经被澄清了。

下面的内容都是在讲什么是P 问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。

接下来你可以看到,把NP问题当成是NPC问题是一个多大的错误。

还是先用几句话简单说明一下时间复杂度。

时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。

也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。

不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。

还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!)的阶乘级复杂度。

不会存在O(2*n^2)的复杂度,因为前面的那个“2”是系数,根本不会影响到整个程序的时间增长。

同样地,O (n^3+n^2)的复杂度也就是O(n^3)的复杂度。

因此,我们会说,一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,尽管在n很小的时候,前者优于后者,但后者时间随数据规模增长得慢,最终O(n^3)的复杂度将远远超过O(n^2)。

我们也说,O(n^100)的复杂度小于O(1.01^n)的复杂度。

什么是P问题、NP问题和NPC问题PPT课件

什么是P问题、NP问题和NPC问题PPT课件
解的问题。NP问题的另一个定义是,可以在 多项式的时间里猜出一个解的问题。
比方说,我RP很好,在程序中需要枚举时,我可 以一猜一个准。
现在某人拿到了一个求最短路径的问题,问从起点 到终点是否有一条小于100个单位长度的路线。它 根据数据画好了图,但怎么也算不出来,于是来问 我:你看怎么选条路走得最少?
2020/10/13
12
NPC问题
人们如此坚信P≠NP是有原因的,就是在研究 NP问题的过程中找出了一类非常特殊的NP问 题叫做NP-完全问题,也即所谓的 NPC问题。 C是英文单词“完全”的第一个字母。正是 NPC问题的存在,使人们相信P≠NP。
2020/10/13
8
NP问题
我说,我RP很好,肯定能随便给你指条很短的路出来。然后 我就胡乱画了几条线,说就这条吧。那人按我指的这条把权 值加起来一看,嘿,神了,路径长度98,比100小。于是答 案出来了,存在比100小的路径。
别人会问他这题怎么做出来的,他就可以说,因为我找到了 一个比100 小的解。
因此,我们会说,一个O(0.01*n^3)的程序的效率 比O(100*n^2)的效率低,尽管在n很小的时候,前 者优于后者,但后者时间随数据规模增长得慢,最 终O(n^3)的复杂度将远远超过O(n^2)。我们也说, O(n^100)的复杂度小于O(1.01^n)的复杂度。
2020/10/13
4
先用几句话简单说明一下时间复杂度
2020/10/13
10
NP问题
之所以要定义NP问题,是因为通常只有NP问 题才可能找到多项式的算法。
我们不会指望一个连多项式地验证一个解都不 行的问题存在一个解决它的多项式级的算法。
很显然,所有的P类问题都是NP问题。也就是 说,能多项式地解决一个问题,必然能多项式 地验证一个问题的解——既然正解都出来了, 验证任意给定的解也只需要比较一下就可以了。

np问题

np问题

什么是P问题、NP问题和NPC问题这或许是众多OIer最大的误区之一。

你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。

你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。

他们没有搞清楚NP问题和NPC问题的概念。

NP问题并不是那种“只有搜才行”的问题,NPC问题才是。

好,行了,基本上这个误解已经被澄清了。

下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC 问题,你如果不是很感兴趣就可以不看了。

接下来你可以看到,把NP问题当成是NPC问题是一个多大的错误。

还是先用几句话简单说明一下时间复杂度。

时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。

也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。

不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。

还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!)的阶乘级复杂度。

不会存在O(2*n^2)的复杂度,因为前面的那个“2”是系数,根本不会影响到整个程序的时间增长。

同样地,O (n^3+n^2)的复杂度也就是O(n^3)的复杂度。

因此,我们会说,一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,尽管在n很小的时候,前者优于后者,但后者时间随数据规模增长得慢,最终O(n^3)的复杂度将远远超过O(n^2)。

第9章怎样研究算法遗传算法示例练习题答案解析

第9章怎样研究算法遗传算法示例练习题答案解析

第9章怎样研究算法:遗传算法示例1、P类问题、NP类问题、NPC类问题是计算机科学领域关于可求解性可计算性很重要的概念。

关于P、NP和NPC类问题,回答下列问题。

(1)下列说法不正确的是_____。

(A) P类问题是计算机可以在有限时间内能够求解的问题;(B) NP类问题是计算机可以在有限时间内能够验证“解”的正确性的问题;(C) NPC类问题是对问题的每一个可能解,计算机都可以在有限时间内验证“解”的正确性的问题,被称为NP完全问题;(D)上述说法有不正确的;答案:D解释:本题考核P类问题、NP类问题、NPC类问题的概念。

P类问题指计算机可以在有限时间内求解的问题,(A)正确;NP类问题指虽然在多项式时间内难于求解但不难判断给定一个解的正确性问题,(B)正确;NPC问题指NP问题的所有可能答案都可以在多项式时间内进行正确与否的验算,称为NP-Complete问题,(C)正确;(A)(B)(C)都正确,所以(D)错误。

具体内容请参考第九章视频之“可求解与难求解问题”以及第九章课件。

(2)可解性问题是指能够找到多项式时间复杂性算法进行求解的问题,难解性问题是指找不到多项式时间复杂性算法进行求解的问题。

下列说法不正确的是_____。

(A) P类问题是可解性问题,NP类问题是难解性问题。

(B) NP类问题不一定是难解性问题,因为P类问题也一定是NP类问题;(C) NP类问题不确定是否是P类问题,但NPC类问题一定是难解性问题;(D)上述说法有不正确的;答案:A解释:本题考核对可解性问题和难解性问题概念的理解。

P类问题指计算机可以在有限时间内求解的问题,所以是可解性问题;NP类问题指虽然在多项式时间内难于求解但不难判断给定一个解的正确性问题,但P类问题是NP类问题的一个子集,所以NP类问题不一定是难解性问题;NPC问题指NP问题的所有可能答案都可以在多项式时间内进行正确与否的验算,称为NP-Complete问题,是难解性问题,综上,(A)错误。

算法设计与分析课件--NP完全性理论-P类和NP类问题

算法设计与分析课件--NP完全性理论-P类和NP类问题
➢ 若用邻接矩阵C表示图G,使用二进制串表示C和k,则
团问题的一个实例可以用长度为n2 + log k + 1 的二
进位串表示。
➢ 无向图的团问题可表示为语言:
• CLIQUE = {w#v|w,v∈{0,1}*,以w为邻接矩阵的图G有一个k 顶点的团。其中,w是C的二进制表示,v是k的二进制表示。}
• STEP3:确定性地检查V’的团性质。若V’是一个团则接受输入,
否则拒绝输入。时间复杂度为O(n 4 ) 。 • 因此,整个算法的时间复杂性为:O(n 4 ) 。
❖非确定性算法在多项式时间内接受语言CLIQUE,故CLIQUE∈NP。
16
8.2 P类问题和NP类问题
◼ P类问题和NP类问题的关系:
算法设计与分析
1
第八章 NP完全性理论
目录
8.1 易解问题和难解问题
8.2 P类问题和NP类问题
8.3
NP完全问题
8.4 NP完全问题的近似算法
2
8.1 易解问题和难解问题
◼ 常见的几类算法复杂性:
➢ O(1):常数阶; ➢ O(log2n), O(nlog2n):对数阶; ➢ O(n), O(n2), O(n3), …, O(nk): 多项式阶。多项式时间算法; ➢ O(2n), O(n!), O(nn):指数阶。指数时间算法。
12
8.2 P类问题和NP类问题
◼ NP(Non-deterministic Polynomial)类问题:
➢ 如对于某个判定问题,存在一个非负整数k,对于输入规模为n的实 例,能以O(nk)的时间运行一个非确定性算法得到是或否的答案。 • 能用非确定算法在多项式时间内求解的判定问题。如哈密尔顿回 路问题。 • NP类问题是难解问题的一个子类。 • NP类问题并不要求给出一个算法来求解问题本身,而只要求给 出一个确定性算法在多项式时间验证它。

P问题、NP难问题详解

P问题、NP难问题详解

NPC问题(补充) 问题(补充) 问题
NPC问题存在吗 问题存在吗? 问题存在吗
•?
NPC问题(补充) 问题(补充) 问题
• 逻辑电路问题 给定一个逻辑电路,问是否存在一种输入 逻辑电路问题: 给定一个逻辑电路, 使输出为True。 使输出为 。 • 这是第一个 这是第一个NPC问题。其它的 问题。 问题 其它的NPC问题都是由这个问题约 问题都是由这个问题约 化而来的。因此,逻辑电路问题是NPC类问题的“鼻祖”。 类问题的“ 化而来的。因此,逻辑电路问题是 类问题的 鼻祖” • 我们知道,一个逻辑电路由若干个输入,一个输出,若干 我们知道,一个逻辑电路由若干个输入,一个输出, 逻辑门”和密密麻麻的线组成,如下图: “逻辑门”和密密麻麻的线组成,如下图: •
浅谈P问题、NP问题、 NPC问题及NP难问题
王培磊
Contents
1 2 3 4
P问题 问题
NP问题、 问题、 问题
NPC问题 问题
NP难问题 难问题
时间复杂度
• 时间复杂度并不是表示一个程序解决问题需要花多少时间, 而是当问题规模扩大后,程序需要的时间长度增长得有多 快。 • 不管数据有多大,程序处理花的时间始终是那么多的,我 们就说这个程序很好,具有O(1)的时间复杂度,也称常数 级复杂度;数据规模变得有多大,花的时间也跟着变得有 多长,这个程序的时间复杂度就是O(n)。
NPC问题(补充) 问题(补充) 问题
• 有输出无论如何都不可能为 有输出无论如何都不可能为True的逻辑电路吗? 的逻辑电路吗? 的逻辑电路吗
NPC问题(补充) 问题(补充) 问题
其大概意思是说任意一个NP问题的 其大概意思是说任意一个 问题的 输入和输出都可以转换成逻辑电路 的输入和输出( 的输入和输出(想想计算机内部也 的运算), 不过是一些 0和1的运算),因此对 和 的运算),因此对 于一个NP问题来说 问题来说, 于一个 问题来说,问题转化为了 求出满足结果为True的一个 求出满足结果为 的一个 输 即一个可行解)。 入(即一个可行解)。 • 逻辑电路问题属于NPC问题——它显然属于NP问题,并且 可以证明所有的NP问题都可以约化到它 。

P问题、NP问题、NP完全问题和NP难问题

P问题、NP问题、NP完全问题和NP难问题

P问题、NP问题、NP完全问题和NP难问题在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。

(知道这两概念的可以⾃动跳过这部分)1、多项式:axn-bxn-1+c恩....就是长这个样⼦的,叫x最⾼次为n的多项式....咳咳,别嫌我啰嗦。

有些⼈说不定还真忘了啥是多项式了。

例如第⼀次看到的鄙⼈→_→2、时间复杂度我们知道在计算机算法求解问题当中,经常⽤时间复杂度和空间复杂度来表⽰⼀个算法的运⾏效率。

空间复杂度表⽰⼀个算法在计算过程当中要占⽤的内存空间⼤⼩,这⾥暂不讨论。

时间复杂度则表⽰这个算法运⾏得到想要的解所需的计算⼯作量,他探讨的是当输⼊值接近⽆穷时,算法所需⼯作量的变化快慢程度。

举个例⼦:冒泡排序。

在计算机当中,排序问题是最基础的,将输⼊按照⼤⼩或其他规则排好序,有利于后期运⽤数据进⾏其他运算。

冒泡排序就是其中的⼀种排序算法。

假设⼿上现在有n个⽆序的数,利⽤冒泡排序对其进⾏排序,①⾸先⽐较第1个数和第2个数,如果后者>前者,就对调他们的位置,否则不变②接着⽐较第2个数和第3个数,如果后者>前者,就对调他们的位置,否则不变③⼀直向下⽐较直到第n-1和第n个数⽐较完,第⼀轮结束。

(这时候最⼤的数移动到了第n个数的位置)④重复前三步,但是只⽐较到第n-1个数(将第⼆⼤的数移动到第n-1个数位置)⑤持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。

举个实例:5,4,3,2,1,对其进⾏排序,先是⽐较5跟4变成4,5,3,2,1,第⼀轮结束后变成43215,可以计算,当对其排序完正好要经过4+3+2+1=10次⽐较,当然这是最复杂的情况,即完全反序。

可以知道对于n个数,⾄多要经过1+2+...+n-1即(n^2-n)/2次⽐较才能排好序。

这个式⼦⾥n的最⾼次阶是2,可知道当n→∞时,⼀次性对其⽐较次数影响很⼩,所以我们把这个算法的时间复杂度⽐作:o(n^2)。

取其最⾼次,可以看出,这是⼀个时间复杂度为多项式的表⽰⽅式。

对p和np问题的介绍ppt课件

对p和np问题的介绍ppt课件

倾向P≠NP的主要论据是在穷尽搜索的领域完全没有本质 进展。也就是说,以我的观点,一个很弱的论据。算法的空间 是很大的,而我们只是在开始探索的起点
—摩西· 瓦迪(Moshe Vardi),莱斯大学 过分依赖某种投机的猜测不是规划研究的一个好的导引。 我们必须总是尝试每个问题的两个方向。偏见可能导致著名的 数学家无法解决答案和他们的预计相反的著名问题,虽然他们 发展了所有所需的方法。 —Anil Nerode, 康奈尔大学
2 NP问题(Non-deterministic Polynomial ) NP是一个判定问题类,这些问题可以用一个确定算法在多项式 时间内检查或验证出它们的解 ,也可以说是这些问题可以在非确定 性多项式时间内解决,它并不要求给出一个算法来求解问题本身,而 只是要求给出一个确定性算法在多项式时间内验证它的解。显然, 所有的P类问题都是属于NP问题的,但是现在的问题是,P是否等 于NP?这个问题至今还未解决 。
• 类似地,所有人工智能问题都将得到解决。我们只需要向计算机提交 足够多的情境以及与之对应的正常人反应,计算机就可以找出一种能 正确生成出这些反应的最简算法,完全模仿人类的行为。
• 数学证明可以完全交给计算机来处理。寻找一个反例和验证一个反例 变得同样简单,一切错误的猜想都将瞬间被推翻。事实上,寻找一个 数学证明和验证一个证明的正确性也变得同样简单,因此一切正确的 命题也能够瞬间找到一个最简的证明。 • 发明任何新的密码算法都是徒劳 。计算机可以根据一大批明文密文样 )。现有的密码 学体系彻底崩溃。
假如P=NP,世界将会怎样?
P是否等于NP是计算机科学领域中最突出的问题, 在千禧年七大难题中排在首位。虽然人们大多相信P问 题不等于NP问题,但人们目前既不能证明它,也不能推 翻它。科学家们普遍认为P≠NP是有原因的,让我们来看 一看,如果哪一天科学家证明了P=NP,那这个世界将会 变得怎样?

NP问题

NP问题

NP问题综述摘要:N和NP问题作为理论计算机科学的核心问题,其声名早已经超越了这个领域。

它是Clay 研究所的七个百万美元大奖问题之一,在2006国际数学家大会上,它是某个1小时讲座的主题。

从数学的角度来说,它和其他历史上有名的数学问题一样,给与人们一个智力上重大的挑战。

而更为重要的是,在无数与计算有关的的学术领域中,NP-完全问题以各种不同形式层出不穷。

因此,这并不是一个纯粹的与世独立的智力游戏,而是对计算机科学有全面影响力的问题。

那究竟什么是N和NP问题呢?关键词:一、P类问题与NP类问题概念:为了了解NP难度问题,我们首先得了解什么是P类问题,什么是NP类问题,而在此之前,我们得知道问题的复杂性和算法的复杂性的区别,下面只考虑时间复杂性。

算法的复杂性是指解决问题的一个具体的算法的执行时间,这是算法的性质;问题的复杂性是指这个问题本身的复杂程度,是问题的性质。

比如对于排序问题,如果我们只能通过元素间的相互比较来确定元素间的相互位置,而没有其他的附加可用信息,则排序问题的复杂性是O(nlgn),但是排序算法有很多,冒泡法是O(n^2),快速排序平均情况下是O(nlgn)等等,排序问题的复杂性是指在所有的解决该问题的算法中最好算法的复杂性。

问题的复杂性不可能通过枚举各种可能算法来得到,一般都是预先估计一个值,然后从理论上证明。

下面引入P类问题的概念:如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。

接下来引入NP问题的概念。

这个就有点难理解了,或者说容易理解错误。

在这里强调,NP问题不是非P类问题。

NP问题是指可以在多项式的时间里验证一个解的问题。

NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题。

简单了说P指确定型图灵机上的具有多项式算法的问题集合,NP指非确定型图灵机上具有多项式算法的问题集合。

举例说明什么是NP问题,有些问题很难找到多项式时间的算法(或许根本不存在),比如找出无向图中的哈米尔顿回路问题,但是我们发现如果给了我们该问题的一个答案,我们可以在多项式时间内判断这个答案是否正确。

8.2节P类与NP类问题

8.2节P类与NP类问题

三,多项式时间验证
• 1.什么是多项式时间验证? • 上述算法的时间复杂度主要取决于第三阶段的验证算法, 若验证部分可在多项式时间内完成,则整个非确定性算法 具有多项式时间复杂性。 • 从而所识别的语言为NP语言
三,多项式时间验证
• 2,如何进行多项式时间验证? 多项式时间可验证语言类VP定义:

排序问题 矩阵连乘问题 最小生成树问题 图搜索问题 ……
二,P类与NP类语言
NP类语言定义: NP={L|L是一个能在多项式时间内被一台NDTM所接受的语 言} 也称为:难解问题 例:旅行售货员问题、团问题 特点: 问题有解,蛮力搜索。 时间复杂性是指数函数时间 还未发现多项式时间DTM算法 引入新的计算能力更强的计算模型
如果是任意一个问题对存在着一个算法它的时间复杂性为on其中n为输入规模k为非负整数就认为存在着一个解问题的多项式时间算法有许多问题从表面上看似乎并丌比排序戒图的搜索等问题更困难然而至今人们还没有找到解决这些问题的多项式时间算法也没有人能够证明这些问题需要超多项式时间下界
P类与NP类问题
POWERPOINT
三,多项式时间验证
• 3,证明定理:VP=NP
1. 证明VPNP 2. L∈NP,L∈VP NPVP
• 例如:(哈密顿回路问题):一个无向图G含有哈密顿回路 吗?无向图G的哈密顿回路是通过G的每个顶点恰好一次的简 单回路。可用语言HAM-CYCLE 定义该问题如下:HAMCYCLE={G|G含有哈密顿回路}。 • 之所以要学习NP类问题,是因为通常只有NP问题才能找到 多项式的算法。
一, 非确定性图灵机

在图灵机计算模型中,移动函数δ是单值的,即对 于 QTk 中的每一个值,当它属于 δ 的定义域时, Q(T{L,R,S})k 中只有唯一的值与之对应, 称 这种图灵机为确定性图灵机,简记为 DTM(Deterministic Turin二,P类与NP类语言

图论中P、NP、NPC和NP难问题详解

图论中P、NP、NPC和NP难问题详解
注:我们所说的“可约化”是指的可“多项式地”约化 (Polynomial-time Reducible),即变换输入的方法是能在 多项式的时间里完成的。约化的过程只有用多项式的时 间完成才有意义。

NPC问题(三)
NPC问题
约化
NP问题
约化
p问题
p问题
P问题
NPC问题(四)
总结:
定义:同时满足下面两个条件的问题就是NPC问题。 首先,它得是一个NP问题;然后,所有的NP问题都 可以约化到它。
时间复杂度
时间复杂度
多项式级的复杂 度。 如 O(1),
O(log(n)),O(n^a) 等 ——因为它的 规模n出现在底 数的位置 !
非多项式级的
如:O(a^n)和 O(n!)等!
P (Polynomial,多项式)问题
P问题是可以在多项式时间内被确定机(通常意义的计算 机)解决的问题.
如果一个问题可以找到一个能在多项式的时间里解决它 的算法,那么这个问题就属于P问题。
当然有不是NP问题的问题,即咱猜到了解但是没用,因为咱不能在多项式的时 间里去验证它。 如下面这个:
我们已经知道Hamilton回路是NP问题,因为验证一条路是否恰好经过了每 一个顶点非常容易。但我们把问题换成这样:试问一个图中是否不存在 Hamilton回路。这样问题就没法在多项式的时间里进行验证了,因为除非你试 过所有的路,否则你不敢断定它“没有Hamilton回路”。
逻辑电路问题属于NPC问题——它显然属于NP问题, 并且可以证明所有的NP问题都可以约化到它 。
NPC问题(补充)
NPC问题存在吗?


NPC问题(补充)
逻辑电路问题: 给定一个逻辑电路,问是否存在一种输入使 输出为True。

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

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

P问题、NP问题、NPC问题‎的概念这或许是众‎多OIer‎最大的误区‎之一。

你会经常看‎到网上出现‎“这怎么做,这不是NP‎问题吗”、“这个只有搜‎了,这已经被证‎明是NP问‎题了”之类的话。

你要知道,大多数人此‎时所说的N‎P问题其实‎都是指的N‎P C问题。

他们没有搞‎清楚NP问‎题和NPC‎问题的概念‎。

NP问题并‎不是那种“只有搜才行‎”的问题,NPC 问题‎才是。

好,行了,基本上这个‎误解已经被‎澄清了。

下面的内容‎都是在讲什‎么是P问题‎,什么是NP‎问题,什么是NP‎C问题,你如果不是‎很感兴趣就‎可以不看了‎。

接下来你可‎以看到,把NP问题‎当成是NP‎C问题是一‎个多大的错‎误。

还是先用几‎句话简单说‎明一下时间‎复杂度。

时间复杂度‎并不是表示‎一个程序解‎决问题需要‎花多少时间‎,而是当问题‎规模扩大后‎,程序需要的‎时间长度增‎长得有多快‎。

也就是说,对于高速处‎理数据的计‎算机来说,处理某一个‎特定数据的‎效率不能衡‎量一个程序‎的好坏,而应该看当‎这个数据的‎规模变大到‎数百倍后,程序运行时‎间是否还是‎一样,或者也跟着‎慢了数百倍‎,或者变慢了‎数万倍。

不管数据有‎多大,程序处理花‎的时间始终‎是那么多的‎,我们就说这‎个程序很好‎,具有O(1)的时间复杂‎度,也称常数级‎复杂度;数据规模变‎得有多大,花的时间也‎跟着变得有‎多长,这个程序的‎时间复杂度‎就是O(n),比如找n个‎数中的最大‎值;而像冒泡排‎序、插入排序等‎,数据扩大2‎倍,时间变慢4‎倍的,属于O(n^2)的复杂度。

还有一些穷‎举类的算法‎,所需时间长‎度成几何阶‎数上涨,这就是O(a^n)的指数级复‎杂度,甚至O(n!)的阶乘级复‎杂度。

不会存在O‎(2*n^2)的复杂度,因为前面的‎那个“2”是系数,根本不会影‎响到整个程‎序的时间增‎长。

同样地,O(n^3+n^2)的复杂度也‎就是O(n^3)的复杂度。

对p和np问题的介绍

对p和np问题的介绍
对P和NP问题的介绍 NP问题的介绍
P/NP问题是史提芬·古克于1971年首次提出 ,P/NP问题是 克雷数学研究所高额悬赏的七个千禧年难题之一,同时也是计 算机科学领域的最大难题,关系到计算机完成一项任务的速度 到底有多快。 2010年8月7日,来自惠普实验室的科学家Vinay Deolalikar声称已经解决了“P/NP问题” ,并公开了证明文件。 但其后被其他学者发mial ) P是一个判定问题类,这些问题可以用一个确定性算法在多项式 时间内判定或解出。如果一个判定性问题的复杂度是该问题的一个 实例的规模n的多项式函数,则我们说这种可以在多项式时间内解 决的判定性问题属于P类问题。P类问题就是所有复杂度为多项式 时间的问题的集合。 2 NP NP问题(Non-deterministic Polynomial ) Non-deterministic NP是一个判定问题类,这些问题可以用一个确定算法在多项式 时间内检查或验证出它们的解 ,也可以说是这些问题可以在非确定 性多项式时间内解决,它并不要求给出一个算法来求解问题本身,而 只是要求给出一个确定性算法在多项式时间内验证它的解。显然, 所有的P类问题都是属于NP问题的,但是现在的问题是,P是否等 于NP?这个问题至今还未解决 。
假如P=NP,世界将会怎样? 假如P=NP,世界将会怎样?
P是否等于NP是计算机科学领域中最突出的问题, 在千禧年七大难题中排在首位。虽然人们大多相信P问 题不等于NP问题,但人们目前既不能证明它,也不能推 翻它。科学家们普遍认为P≠NP是有原因的,让我们来看 一看,如果哪一天科学家证明了P=NP,那这个世界将会 变得怎样?
证明的难度
虽然百万美元的奖金和大量投入巨大却没有实质性结果的研究足以 显示该问题是困难的,还有一些形式化的结果证明为什么该问题可能很 难解决。 最常被引用的结果之一设计神喻。假想你有一个魔法机器可以解决 单个问题,例如决定一个给定的数字是否为质数,但可以瞬间解决这个 问题。我们的新问题是,若我们被允许任意利用这个机器,是否存在我 们可以在多项式时间内验证但无法在多项式时间内解决的问题?结果是, 依赖于机器能解决的问题,P = NP和P ≠ NP二者都可以证明。这个结论 的后果是,任何可以修改来证明该机器的存在性的结果不能解决问题。 不幸的是,几乎所有经典的方法和大部分已知的方法可以这样修改(我 们称它们在相对化)。 如果这还不算太糟的话,1993年Razborov和Rudich证明的一个结 果表明,给定一个特定的可信的假设,在某种意义下“自然”的证明不 能解决P = NP问题。这表明一些现在似乎最有希望的方法不太可能成功。 随着更多这类的定理得到证明,该定理的可能证明有越来越多的陷阱要 规避。

什么是P、NP、NPC、NP

什么是P、NP、NPC、NP

什么是P、NP、NPC、NP优化问题在磕盐的时候经常会遇到,其中经常涉及到某某问题是NP的之类的论断,因此花了一点时间整理了一下NP问题的相关知识,在研究过程中看到一篇很好的文章,因此下面的整理主要基于这篇文章《什么是P问题、NP问题和NPC问题》,有兴趣的同学可以仔细阅读原文,时间紧张的话可以直接看下面我整理的内容。

author: @Huji预备知识时间复杂度表明问题规模扩大后,程序需要的时间长度增长得有多快。

程序的时间复杂度一般可以分为两种级别:- 多项式级的复杂度,如O(1),O(log(n))、O(n^a)等,- 非多项式级的,如O(a^n)、O(n!)等。

后者的复杂度计算机往往不能承受。

约化(Reducibility)简单的说,一个问题A可以约化为问题B的含义是,可以用问题B的解法解决问题A。

(个人感觉也就是说,问题A是B的一种特殊情况。

)标准化的定义是,如果能找到一个变化法则,对任意一个A 程序的输入,都能按照这个法则变换成B程序的输入,使两程序的输出相同,那么我们说,问题A可以约化为问题B。

例如求解一元一次方程这个问题可以约化为求解一元二次方程,即可以令对应项系数不变,二次项的系数为0,将A的问题的输入参数带入到B问题的求解程序去求解。

另外,约化还具有传递性,A可以化约为B,B可以约化为C,那么A也可以约化为C。

基本概念•P Problem: 对于任意的输入规模n,问题都可以在n的多项式时间内得到解决;•NP(Non-deterministic Polynomial)Problem: 可以在多项式的时间里验证一个解的问题;•NPC(Non-deterministic PolynomialComplete) Problem: 满足两个条件 (1)是一个NP问题(2)所有的NP问题都可以约化到它•NP-Hard Problem: 满足NPC问题的第二条,但不一定要满足第一条详解P Problem如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题,即算法的时间复杂度是多项式级的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机算法设计与分析
1
4 2 6
5 3
2018/12/14
11
第18讲 P类问题和NP类问题
非确定性图灵机计算模型

非确定性图灵机NDTM

提出了另一个能力更强的计算模型
非确定性图灵机完全是一种假想的机器 非确定性图灵机允许移动函数δ 具有不确定性


δ :QTk→(Q(T{L,R,S})k)
NDTM算法

不确定性算法

猜想阶段


在多项式时间内产生一个任 意字符串y y可能对应输入实例的解,也 可能不是解 使用确定性算法验证字符串y 是否解 验证算法要求在多项式时间 内完成
计算机算法设计与分析
T(n)

验证阶段

接受

拒绝
2018/12/14
15
第18讲 P类问题和NP类问题
NDTM算法
(Q(T{L,R,S})k为Q(T{L,R,S})k 的一个子集。 δ (q;x1,x2,…,xk)可在该子集中中随意选定一个值作为它的函 数值。
2018/12/14
计算机算法设计与分析
12
第18讲 P类问题和NP类问题
非确定性图灵机的理解
(1) 初始阶段 …. -3 b -2 b -1 b w
*

DTM算法时间复杂性函数


多项式时间DTM算法

2018/12/14
计算机算法设计与分析
9
第18讲 P类问题和NP类问题
P类问题

P类问题

P={DTM能在多项式时间内所接受的语言类} 对于所有与DTM等价的计算模型来说,P是不变的。
P大致对应计算机上实际可解的那类问题


NDTM接受的语言

NDTM 程序M接受字符串



LM={x∈∑ :M接受x}
对于每个字符串x∈∑*,对应若干包含一系列计 算步的计算路径。 若这些计算路径中至少存在一个可接受计算路径, 即NDTM程序最终进入可接受状态qf
*
2018/12/14
计算机算法设计与分析
14
第18讲 P类问题和NP类问题
GM
0 b
1 r/w
FCS
2
3 ...
…. |x| b ...
inactive 1 2 b 3 b 4 ... b ...
(2) 猜想阶段 b
w
... ...
GM
-2
-1
0 b
0
q0
FCS
(3) 验证阶段
变为DTM
2018/12/14 计算机算法设计与分析 13
第18讲 P类问题和NP类问题
NDTM的语言识别
例:旅行售货员问题—TSP

优化问题

给定一个赋权完全无向图G=(V,E),求G的最小 费用哈密顿回路。 给定一个赋权完全无向图G=(V,E)和一个数k, 图G是否存在一条费用不超过k的哈密顿回路?

判定问题

2018/12/14
计算机算法设计与分析
5
第18讲 P类问题和NP类问题
判定问题与语言

计算机算法设计与分析 8

DTM程序M接受的语言

2018/12/14
第18讲 P类问题和NP类问题
DTM算法

DTM算法的定义

DTM算法

只有当一个DTM程序对定义于其输入字符表上的所有 可能字符串均停机时,才称其为一个算法。 TM(n)=max{t: x∈∑ , |x|=n, M识别x所需的计算时间t} 存在多项式函数f(n),使得TM(n)≤ f(n)
排序问题 矩阵连乘问题
最小生成树问题
图搜索问题 ……
10
2018/12/14
计算机算法设计与分析
第18讲 P类问题和NP类问题
NP类问题

难解问题



例:旅行售货员问题、团问 题 问题有解,蛮力搜索。 时间复杂性是指数函数时间 还未发现多项式时间DTM算 法 引入新的计算能力更强的计 算模型
算法设计分析
第18讲 P类问题与NP类问题
杨明 指挥信息系统学院软件工程教研中心 yangming@lgdx.mtn 2018/12/14
第18讲 P类问题和NP类问题
内容

判定问题与语言识别问题 P类问题 NP类问题
2018/12/14
计算机算法设计与分析
2
第18讲 P类问题和NP类问题
最优化问题与判定问题

最优化问题

寻找一个有最优目标函数值的可行解 许多最优化问题是难解问题 判定模式 最优值模式

最优化问题的三个层次

最优解模式

三个层次的难度是依序增加的
判定模式 最优值模式 最优解模式
2018/12/14
计算机算法设计与分析
3
第18讲 P类问题和NP类问题
最优化问题与判定问题

NDTM算法

NDTM算法M时间复杂性函数

TM(n)=max{t: x∈∑*, |x|=n, M接受x所需的计算时 间t } 存在多项式函数f(n),使得TM(n)≤ f(n)

多项式时间的NDTM算法
计算机算法设计与分析 6
* *
*


判定问题与语言




2018/12/14
第18讲 P类问题和NP类问题
语言识别问题

语言识别问题

给定x∈∑ ,判定x∈L? 语言识别问题很适合TM和RAM 计算模型 算法A接受语言L: x∈L , A(x)=1; 算法A判定语言L: x∈L , A(x)=1; xL , A(x)=0; 对于某些问题,存在接受算法,不存在判定算法。 判定语言类是接受语言类的子集
*

图灵机进行语言识别时的两个情况


两者关系

2018/12/14
计算机算法设计与分析
7
第18讲 P类问题和NP类问题
DTM计算模型下的语言识别

DTM计算模型

移动函数为单值函数 终止态qf的区分

接受停机状态qy和拒绝停机状态qn
M接受的字符串 LM={x∈∑*:M识别x} M对中LM的字符串停机

判定问题


输出仅为“是”或“否”的一类问题
可抽象为所有输入到{yes, no}的映射 最优化问题可简化为判定问题 以简单的判定问题为研究对象

最优化问题与判定问题

若判定问题是难解问题,则更为复杂的优化 问题也定是难解问题
计算机算法设计与分析 4
2018/12/14
第18讲 P类问题和NP类问题
语言

对于有限字符集∑,用∑ 表示由中字符所组成的所有有限长度 字符串的集合。 若L 是∑ 的一个子集,则称L为字符集∑上的一个语言。 通过适当的编码,任何判定问题Q可形式化为语言L L={x∈∑ :Q(x)=1} PATH={<G, u, v, k>: G=(V,E), u,v∈V, k∈Z, G中存在一条长 度至多为k的路径}
相关文档
最新文档