NP的原理及定义和解释

合集下载

NP,NPC和NP-hard概念

NP,NPC和NP-hard概念
若A1多项式转换为A2,且A2∈NP,则A1∈NP
16
问题A2的难度不低于问题A1
2.1.4 NP完全问题类(NPC)
Cook在1971年给出并证明了有一类问题具有下述性质: (1)这类问题中任何一个问题至今未找到多项式时间算法; (2)如果这类问题中存在一个问题有多项式时间算法,则这 类问题都有多项式时间算法。
显 然 有 : P NP
构造字符串(解)的过程及验证算法 H 一起构成一个算法, 称为非确定多项式(时间)算法。
9
说明: 由定义可知,要证明一个判定问题是非确定多项式的, 有两处用到了多项式的限制: (1)S 的输入长度 d(S) 不超过 g(d(I))
(2) 对于算法 H,其计算时间 f(H) 不超过 g(d(I))。
网 络 优 化
Network Optimization
第 2 章
2.1
算法基础
NP,NPC和NP-hard概念
1
2.1.1 问题、实例与输入规模
问题 TSP 背包问题 整数线性规划 实例 问题中各参数:100个城市,城市间距离 d ij 已知. 问题中各参数: 4个物品,大小分别为4,3,2,2. 价 值分别为8,7,5,7. 包的大小为6. 问题中的n,A,b,c已知.
15
在 0-1 背包问题中,若 c j a j ( j 1, 2 , , n ) ,即体积=价值,得到一个特 殊 0-1 背包,也称为子集和问题(subset sum problem) 。其判定问题为:
对给定的整数 c j ( j 1, 2 , , n ) 和 b ,是否存在 {1, 2, , n } 的子集 B ,使 得
例2.7
适定性问题多项式转换为整数(0-1)线性规划问题.

算法设计与分析 NP完全问题

算法设计与分析 NP完全问题

NP 完全问题研究P=NP 的问题有两条基本思路:1.证明NP 类中的某些问题是难解的,从而得到NP ≠P 。

但是要证明这一点几乎同证明P=NP 一样困难。

2.考察NP 类中问题之间的关系,从中找到一些具有特殊性质的、与P 类问题显著不同的问题。

沿着这一路线人们已经证明了在NP 类中存在被称为NP 完全的子类,简称NPC 问题,并由此发展了一套著名的NP 完全理论。

本节简要先介绍NP 完全性理论。

为此,首先给出各语言之间的多项式变换的概念。

定义 1 所谓从一个语言*11∑⊆L 到另一个语言*22∑⊆L 的多项式变换是指满足下面两个条件的函数*2*1:∑→∑f ,(1) 存在计算f 的一个多项式时间DTM 程序;(2) 对于所有的*1∑∈x 有:1L x ∈当且仅当2)(L x f ∈。

用21L L ∝表示存在一个从语言1L 到语言2L 的多项式变换。

相应地,对于判定问题21,∏∏,设e 1和e 2是相应的编码策略。

若],[],[2211e L e L ∏∝∏,则记为21∏∝∏。

也可以从问题的层次来叙述:由判定问题1∏到判定问题2∏的多项式变换是满足下列条件的函数21:∏∏→D D f ,(1) f 可由一个多项式时间的确定性算法来计算;(2) 对于所有的1∏∈I D 有:1∏∈I D 当且仅当2)(∏∈I Y f 。

定义2 称一个语言L (判定问题∏)为NP 完全的(NPC ),如果)(NP NP L ∈∏∈,且对于所有别的语言NP L ∈'(判定问题NP ∈∏')均有)'('∏∝∏∝L L 。

按照定义2,要证明问题∏是NP 完全的,需要证明所有的NP 问题均能够经多项式变换变成∏。

这几乎是很难做到的。

如果NP 完全问题比较多,我们也不能对每一个这样的问题都这样验证。

为此我们讨论一些NPC 问题的有用的性质。

性质1 如果L L ∝',则P L ∈意味着P L ∈'。

【转】谈“P=NP?”

【转】谈“P=NP?”

【转】谈“P=NP?”“P=NP?” 通常被认为是计算机科学最重要的问题。

有⼀个叫的研究所,甚⾄悬赏 100 万美元给解决它的⼈。

可是我今天要告诉你的是,这个问题其实是不存在的,它根本不需要解决。

我并不是第⼀个这样认为的⼈。

在很早的时候就有个毫不客⽓的指出,P=NP? 是个愚蠢的问题,并且为了嘲笑它,专门在愚⼈节写了⼀篇“”,称⾃⼰证明了 P=NP。

我⾝边有⼀些⾮常聪明的⼈,他们基本也都不把这问题当回事。

如果我对他们讲这些东西,恐怕是 TOO OLD。

可是我发现国内的计算机专业学⽣,提到这个问题总是奉为神圣,⼀点玩笑也开不得,所以我打算在这⾥科普⼀下。

这是⼀个不⼤好解释的问题。

⾸先,你要搞清楚什么是“P=NP?” 为此,你必须先了解⼀下什么是“算法复杂度”。

为此,你⼜必须先了解什么是“算法”。

你可以简单的把“算法”想象成⼀台机器,就跟绞⾁机似的。

你给它⼀些“输⼊”,它就给你⼀些“输出”。

⽐如,绞⾁机的输⼊是⾁末,输出是⾁渣。

⽜的输⼊是草,输出是奶(或者⽜⽶⽥共)。

“加法器”的输⼊是两个整数,输出是这两个整数的和。

“算法理论”所讨论的问题,就是如何设计这些机器,让它们更加有效的⼯作。

就像是说如何培育出优质的奶⽜,吃进相同数量的草,更快的产出更多的奶。

通常所谓的“计算问题”,都需要算法经过⼀定时间的⼯作(也叫“计算”),才能得到结果。

计算所需要的时间,往往跟输⼊的⼤⼩有关系。

你的⽜吃的草越多,它就需要越长时间,才能把草都变成奶。

这种草和奶的转换速度,通常被叫做“算法复杂度”。

算法复杂度通常被表⽰为⼀个函数 f(n),其中 n 是输⼊的⼤⼩。

这个函数的值,通常是某种资源的需求量,⽐如时间或者空间。

⽐如,如果你的算法时间复杂度为 n2,那么当输⼊10个东西的时候,它需要 100 个单元的时间才能完成计算。

当输⼊ 100 个东西的时候,它需要10000 个单元的时间才能完成。

当输⼊ 1000 个数据的时候,它需要 1000000 个单元的时间。

NP的原理及定义和解释

NP的原理及定义和解释

NP的原理及定义和解释NP是非确定性多项式(Non-deterministic Polynomial)的简称,是计算机科学中的一个复杂性类。

NP问题是指可以在多项式时间内验证解的正确性的问题。

NP问题的解可以通过非确定性多项式算法在多项式时间内验证,但没有有效的多项式算法可以在多项式时间内求解。

因此,NP问题的求解是非常困难的,往往需要使用暴力或近似算法等方法。

定义:NP问题的定义可以分为两个方面:1. 证书存在性:对于一个给定的问题,如果存在一个证书(certificate),可以在多项式时间内验证其正确性,则该问题属于NP 问题。

2.多项式时间验证:对于给定的问题和一个潜在的解,可以在多项式时间内验证这个解是否是正确的。

NP问题的解法可以由以下两种形式描述:1.非确定性算法:对于一个给定的问题,非确定性算法可以通过猜测和尝试的方式,在多项式时间内找到问题的解。

这个算法可以通过多次猜测和尝试来验证潜在的解是否是正确的,但并没有给出一个确定性的步骤来找到解。

2.多项式时间验证算法:对于一个给定的问题和一个潜在的解,可以通过一个多项式时间的验证算法,验证这个解是否是正确的。

原理:NP问题的原理基于两个关键概念:证书存在性和多项式时间验证。

证书存在性是指对于一个给定的问题,存在一个证书(或称为证明)可以在多项式时间内验证其正确性。

证书可以是一组状态、数字、字符串等,通过这个证书可以验证一个给定的解是否正确。

这个证书可以被看作是一个“快速验证器”,它能够在多项式时间内验证问题的解的正确性。

多项式时间验证是指对于给定的问题和一个潜在的解,可以在多项式时间内验证这个解是否是正确的。

多项式时间验证算法可以通过一系列的计算和判断,来验证一个给定的解是否满足问题的条件。

这个验证算法的运行时间是一个多项式,在实际应用中可以被认为是“快速”的。

基于以上两个概念,可以得到一个重要的结论:如果一个问题是NP 问题,那么可以把它的解转换成一个证书,并使用多项式时间验证算法,来验证这个证书的正确性。

p,np,npc问题的通俗化解释和详细区分

p,np,npc问题的通俗化解释和详细区分

你会经常看到网上出现“这怎么做,这不是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)的复杂度。

NP完全问题详解

NP完全问题详解
2、特性: P 类判定问题是由具有多项式时间的确定性算法来解的判定问题
精品课件
12.1.1 P类问题
例: 最短路径判定问题 SHORTEST PATH:
给定有向赋权图G (V , E )(权为正整数)、正整数k 、及两个顶 点s,t V ,是否存在着一条由s到t 、长度至多为k 的路径。 可排序的判定问题 SORT: 给定n个元素的数组,是否可以按非降顺序排序。
精品课件
12.1.2 NP类问题
一、非确定性算法 1、问题的非确定性算法的两个阶段:推测阶段和验证阶段。 2、推测阶段:对规模为n的输入实例 x,以多项式时间O(ni )产生输出 y, 而不管 y的正确性 3、验证阶段:以多项式时间O( n j )的确定性算法验证两件事情: 1)检查上一阶段的输出 y是否具有正确的形式。 如果 y不具正确的形式,算法就以答案no结束; 2)如果 y具有正确的形式,则继续检查 y是否是问题的输入实例 x的解。 如果它确实是问题实例 x的解,则以答案 yes结束,否则,以答案no结束。
精品课件
12.1.2 NP类问题
例 解货郎担判定问题 TRAVELING SALESMAN 的算法 A是 NP类判定问题: A可在推测阶段用多项式时间推测出一条回路,并假定它是问题的解; 在验证阶段用多项式时间的确定性算法, 检查所推测的回路是否恰好每个城市经过一次, 如果是,再进一步判断这条回路的长度是否小于或等于l , 如果是,答案为 yes,否则,答案为no。 存在多项式时间的确定性算法,对推测阶段所作出的推测进行检查和验证。 因此,货郎担判定问题是 NP类判定问题。
精品课件
12.1.2 NP类问题
3、P类问题和 NP类问题的差别: P类问题可以用多项式时间的确定性算法来进行判定或求解; NP 类问题可以用多项式时间的确定性算法来检查和验证它的解。 P,必然有 NP,所以,P NP。 猜测 NP P。该不等式是否成立、至今还没有得到证明。

P与NP问题

P与NP问题

P/NP问题P/NP问题是在理论信息学中计算复杂度理论领域里至今没有解决的问题,它被“克雷数学研究所”(Clay Mathematics Institute, 简称CMI)在千禧年大奖难题中收录。

P/NP问题中包含了复杂度类P与NP的关系。

1971年史提芬·古克(Stephen A. Cook) 和Leonid Levin 相对独立的提出了下面的问题,即是否两个复杂度类P和NP是恒等的(P=NP?)。

P和NP复杂度类P包含所有那些可以由一个确定型图灵机在多项式表达的时间内解决的问题;类NP由所有其肯定解可以在给定正确信息的多项式时间内验证的决定问题组成,或者等效的说,那些解可以在非确定图灵机上在多项式时间内找出的问题的集合。

很可能,计算理论最大的未解决问题就是关于这两类的关系的:P和NP相等吗?在2002年对于100研究者的调查,61人相信答案是否定的,9个相信答案是肯定的,22个不确定,而8个相信该问题可能和现在所接受的公理独立,所以不可能证明或证否。

[1] 对于正确的解答,有一个,000,000美元的奖励。

NP-完全问题(或者叫NPC)的集合在这个讨论中有重大作用,它们可以大致的被描述为那些在NP中最不像在P中的。

(确切定义细节请参看NP-完全)理论计算机科学家现在相信P, NP,和NPC类之间的关系如图中所示,其中P和NPC类不交。

假设P ≠ NP的复杂度类的图解.如P = NP则三个类相同.本质上,P = NP问题问道:如果是/不是问题的正面答案可以很快验证,其答案是否也可以很快计算?这里有一个给你找点这个问题的感觉的例子。

给定一个大数Y,我们可以问Y是否是复合数。

例如,我们可能问53308290611是否有非平凡的因子。

回答是肯定的,虽然手工找出一个因子很麻烦。

从另一个方面讲,如果有人声称答案是"对,因为224737可以整除53308290611",则我们可以很快用一个除法来验证。

p问题和np问题

p问题和np问题

p问题和np问题
P/NP问题是在理论信息学中计算复杂度理论领域里没有解决的问题,它被“克雷数学研究所”在千禧年大奖难题中收录。

P/NP问题中包含了复杂度类P与NP的关系。

复杂度类P包含所有那些可以由一个确定型图灵机在多项式表达的时间内解决的问题;类NP由所有其肯定解可以在给定正确信息的多项式时间内验证的决定问题组成,或者等效的说,那些解可以在非确定图灵机上在多项式时间内找出的问题的集合。

P问题就是能在多项式时间内解决的问题,NP问题就是能在多项式时间验证答案正确与否的问题。

用大白话讲大概就是这样。

所以P是否等于NP实质上就是在问,如果对于一个问题我能在多项式时间内验证其答案的正确性,那么我是否能在多项式时间内解决它?这个表述不太严谨,但通俗来讲就是如此。

第九章 NP完全理论

第九章 NP完全理论

9.2.1 P 类问题
★定义 1 设 A 是问题 的一个算法。如果在处理问题 的实例时,在算法的执行过 程中,每一步只有一个确定的选择,则称算法 A 是确定性算法。因此,确定性算法对于同 样的输入实例一遍又一遍地执行,其输出从不改变。通常在写程序时,用到的都是一些确定 性算法,比如说排序算法和查找算法等。 ★定义 2 如果对于某个判定问题 ’,存在一个非负整数 k,对于输入规模为 n 的实 例,能够以 O(nk)的时间运行一个确定性算法,得到是或否的答案,则该判定问题 ’是一个 P(polynomial)类问题。
9.1 易解问题和难解问题
无论是计算机专业人士还是计算机科学家, 在研究问题的计算复杂性时, 它们首先考虑 的都是一个给定的问题是不是能够用某些算法在多项式时间内求解, 即算法的时间复杂性是 k 不是 O(n ),其中,n 是问题规模,k 是一个非负整数。Ednonds 于 1965 年指出只有多项式 时间算法才称得上是 “好”算法,他还认为有的问题可能不存在求解它们的这种“好”算法。 其实,多项式时间复杂性并不一定就意味着较低的时间要求,例如:1099n8 和 n100 都是 多项式函数,但它们的值却大得惊人。既然如此,为什么科学家还要用它作标准去定义问题 呢?原因可能有以下几条: (1) 这样做可以为有过多时间要求的那类问题提供一个很好的标准。 (2) 多项式函数在加、乘运算下是自封闭的,并且在那些可以作为有用的分析算法 复杂性的函数类中,多项式函数是具有这种性质的最小函数类。 (3) 多项式时间复杂性的分析结果,对于常用的各种计算机形式模型,具有不变性。 应该说明,对于能找到多项式时间算法的实际问题,它们的多项式时间复杂性函数,一 般都不含有特大系数或较高幂指数的项。
9.2 P 类和 NP 类问题

谈一谈如何理解NP问题

谈一谈如何理解NP问题

谈⼀谈如何理解NP问题⼀概念引⼊1.1时间复杂度在计算机处理⼀个问题时,往往需要⼀定的时间,假设把这个问题复杂化(将这个问题进⾏扩展),那么把计算机处理这类问题的时间变化速率,称为解决这种问题所⽤算法的时间复杂度。

例如,⼀个枚举⼀定范围内的数字的问题,计算机所⽤时间会随着范围的变化⽽线性变化,由于是简单的枚举,所以时间复杂度可以记为O(n),n可以代表这个范围⼤⼩。

在计算机处理问题时,由于算法设计不同,对应的时间复杂度也不⼀定相同。

1.2多项式级时间和⾮多项式级时间在众多的时间复杂度中,根据其表达式的特点,可以⼤致将它们划分为两个范畴,⼀个是多项式级⼀个是⾮多项式级。

它们各⾃表⽰什么意思呢?还记得⾼中数学中学习的函数吗,在学习不同函数时,最常做的⼀件事是观察它们的图像变化,可以发现,x作为底数的图像和x作为指数的图像在后期的变化简直有天壤之别。

这也正是需要将时间复杂度划分的原因(多项式级的时间复杂度在后期变化远⼩于⾮多项式级),将n作为底数的时间复杂度归为多项式级,n作为指数的归为⾮多项式级。

例如O(n)、O(log(n))、O(n^a)等就是多项式级的时间复杂度,像O(n!)和O(a^n)就是⾮多项式级的复杂度。

对于计算机来说需要处理的问题往往是很庞⼤的,如果采⽤⾮多项式级复杂度的算法,那么将浪费很⼤的资源。

1.3 P问题在解释了多项式级和⾮多项式级时间复杂度之后,P问题的概念就简单了。

对于众多的问题,通常把能够使⽤多项式级时间复杂度算法解决的问题称为P问题。

⼆什么叫NP问题2.1 约化⼀般,问题A可以约化为问题的B的解释是可以⽤解决问题B的⽅法解决问题A。

简单的说,也就是问题A是问题B的另⼀种形式,且问题A的复杂程度要⼩于等于问题B。

就像解⽅程组的问题,假如你会解⼆元⼀次⽅程组,那么你⼀定会解⼀元⼀次⽅程,在这个例⼦中,⼀元⼀次⽅程就是问题A,⼆元⼀次⽅程组就是问题B,问题A可以看作是问题B中另⼀个⾃变量系数为零的特殊“⼆元⼀次⽅程组”。

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)。

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

第八章 NP完全问题

第八章 NP完全问题

第八章 NP-完全问题§1 关于问题及算法的描述为了应用算法复杂性理论,首先要对问题、问题的一般描述、计算模型、算法、算法的复杂性给出严格的定义。

但在给出精确定义之前,我们先回顾一下有关概念的粗略解释。

所谓一个问题(problem)是指一个有待回答、通常含有几个取值还未确定的自由变量的一个一般性提问(question)。

它由两部分构成:一是对其关于参数的一般性描述;二是对该问题的答案所应满足的某些特性的说明。

而一个问题的某个实例则可通过指定问题中所有参数的具体取值来得到。

以下用∏表示某个问题,用I 表示其实例。

旅行商问题的参数是由所需访问城市的一个有限集合},,,{11m C C C C =和C 中每对城市j i C C ,之间的距离),(j i C C d 所组成。

它的一个解是对所给城市的一个排序(1)(2)(),,,m C C C πππ使得该排序极小化下面表达式(目标函数)的值),(),()1()()1(11)(ππππC C d C C d m i m i i ++-=∑旅行商问题的一个实例是通过指定城市的数目,并指定每两个城市之间的具体距离而得到的。

例如:{}4321,,,C C C C C =,3),(,9),(,6),(,9),(,5),(,10),(434232413121======C C d C C d C C d C C d C C d C C d就是旅行商问题的一个实例,这个实例的一个最优解是排序1342,,,C C C C ,因为四个城市的这个排序所对应旅行路线是所有可能环游路线中长度最小的,其长度为27。

目前广泛采用的描述问题的方法主要有两种:一是将任一问题转化为所谓的可行性检验问题(feasibility problem);二是把问题转化为判定问题(decision problem)。

实际中几乎所有问题都可直接或间接地转述为判定问题。

判定问题是答案只有“是”与“非”两种可能的问题。

世界七大数学难题之NP问题的证明(NP≠P)和一些相关知识

世界七大数学难题之NP问题的证明(NP≠P)和一些相关知识

世界七大数学难题之NP问题的证明(NP≠P)和一些相关知识摘要:本文提出算法公理:公理目标集合不存在非约化约简;判断某类公理待被判断集合问题所需的计算复杂度类最少操作次数,一定大于或等于相应公理目标集合被最简约化后的操作类二级元素的数量。

基于算法公理和本文提出的单点连入问题,本文证明了NPC问题都不存在多项式算法,因此NPC∉P,NP≠P。

关键词:算法公理;单点连入问题;NPC问题;多项式算法;NP≠P第一章定义定义1:“对于一条以A1点为起点、A n点为终点的路、处在该路之外的B点和该路中的两个以上非路上相邻点与B点之间的边来讲,是否存在一种连接方式使该路和该点能够被合并成一条新的以A1点为起点、A n点为终点的路”这一问题又被称为单点连入问题,其中A1点与A n点不同时与B点相连。

上述“路上相邻”指在仅考虑路上的点和边时的相邻;非路上相邻点(边)指除路上相邻点(边)之外的点(边)。

上述路又被称为待连路;上述点又被称为待连点。

上述“被合并成一条新的以A1点为起点、A n点为终点的路”又被称为被连入。

上述“存在一种连接方式使该路和该点能够被合并成一条新的以A1点为起点、A n点为终点的路”又被称为能使待连点被连入;反之则又被称为不能使待连点被连入。

由单点连入问题的所有点和所有边所构成的图又被称为该单点连入问题图。

定义2:待连路的起点又被称为待连路的左固定点或左端点;待连路的终点又被称为待连路的右固定点或右端点;两者又被合称为待连路的固定点和端点。

待连路中除固定点之外的点又被称为待连路的非固定点。

待连路中路上相邻两点之间的边又被称为待连路的内边;待连路中非路上相邻两点之间的边又被称为待连路的外边;待连点被连入后的新路中相应地也有内边和外边。

待连点与待连路中的点之间的边又被称为待连边。

定义3:待连路的起点又被称为该待连路的第1个点;待连路的起点之后的第1个点又被称为该待连路的第2个点;相应地有该待连路的第3个点等。

NP的原理及定义和解释

NP的原理及定义和解释
假设P ≠ NP的复杂度类的图解.如P = NP则三个类相同.本质上,P = NP问题问道:如果是/不是问题的正面答案 可以很快验证,其答案是否也可以很快计算?这里有一个给你找点这个问题的感觉的例子。给定一个大数Y,我们 可以问Y是否是复合数。例如,我们可能问53308290611是否有非平凡的因子。回答是肯定的,虽然手工找出一 个因子很麻烦。从另一个方面讲,如果有人声称答案是"对,因为224737可以整除53308290611",则我们可以很快 用一个除法来验证。验证一个数是除数比首先找出除数来简单得多。用于验证一个正面答案所需的信息也称为证 书。所以我们的结论是,给定 正确的证书,问题的正面答案可以很快的(也就是,在多项式时间内)验证,而这就 是这个问题属于NP的原因。虽然这个特定的问题,最近被证明为也在P类中(参看下面的关于"质数在P中"的参考), 这一点也不明显,而且有很多类似的问题相信不属于类P。
它忽略了指数的大小。一个时间复杂度n1000属于P,但是很难对付。已经证明在P中存在需要任意大的指数的问 题(参看时间等级定理)。一个时间复杂度2n/1000的问题不属于P,但对与n直到几千还是容易应对的。
它只考虑了最坏情况的复杂度。可能现实世界中的有些问题在多数时候可以在时间n中解决,但是很偶尔你会看到 需要时间2n的特例。这个问题可能有一个多项式的平均时间,但最坏情况是指数式的,所以该问题不属于P。
P真的容易处理吗?
上面所有的讨论假设了P表示“容易”而“不在P中”表示“困难”。这是一个在复杂度理论中常见而且有一定准确性的假 设,它在实践中却不总是真的,原因包括如下几点:
它忽略了常数因子。一个需要101000n时间的问题是属于P的(它是线性时间的),但是事实上完全无法处理。一 个需要10-100002n时间的问题不是在P中的(它是指数时间的),但是对于n 取值直到几千时还是很容易处理的 。

NP网络处理器

NP网络处理器

网络处理器(Network Processor,简称NP)的定义
NP技术: 网络处理器(Network Processor,简称NP),根据国际网络处理器会议(Network Processors Conference)的定义:网络处理器是一种可编程器件,它特定的应用于通信领域的各种任务,比如包处理、协议分析、路由查找、声音/数据的汇聚、防火墙、QoS等。网络处理器器件内部通常由若干个微码处理器和若干硬件协处理器组成,多个微码处理器在网络处理器内部并行处理,通过预先编制的微码来控制处理流程。而对于一些复杂的标准操作(如内存操作、路由表查找算法、QoS的拥塞控制算法、流量调度算法等)则采用硬件协处理器来进一步提高处理性能,从而实现了业务灵活性和高性能的有机结合。面对X86的优点: 基于X86架构的防火墙,由于CPU处理能力和PCI总线速度的制约 ,在实际应用中,尤其在小包情况下,这种结构的千兆防火墙远远达不到千兆的转发速度(64字节包长时,双向转发速率一般为百分之二十以下),难以满足千兆骨干网络的应用要求。采用NP架构的防火墙,各种算法可以通过硬件实现 ,在实现复杂的拥塞管理、队列调度、流分类和QoS功能的前提下,还可以达到极高的查找、转发性能,实现“硬转发”。面对ASIC的优点: 纯硬件的ASIC防火墙缺乏可编程性,这使得它缺乏灵活性从而跟不上防火墙功能的快速发展。虽然现代的ASIC技术提高了可编程性,但从开发难度、开发成本和开发周期方面看,仍然困难重重。 NP完全支持编程,编程模式简单,一旦有新的技术或者需求出现,可以很方便地通过微码编程进行实现。提供了更快的技术、功能跟进和更加灵活的扩展能力,特别是在新规格、新标准的支持上 。 网络处理器(NP)是专门为处理数据包而设计的可编程处理器,能够直接完成网络数据处理的一般性任务。硬件体系结构大多采用高速的接口技术和总线规范,具有较高的I/O能力,包处理能力得到了很大提升。网络处理器一般具有以下特点: ● 并行处理器: 采用多内核并行处理器结构。片内处理器按任务大致分为核心处理器和转发引擎。 ● 专用硬件协处理器: 对要求高速处理的通用功能模块采用专用硬件实现以提高系统性能。 ● 专用指令集: 转发引擎通常采用专用的精简指令集,并针对网络协议处理特点优化。 ● 分级存储器组织: NP存储器一般包含多种不同性能的存储结构,对数据进行分类存储以适应不同的应用目的。 ● 高速I/O接口: NP具有丰富的高速I/O接口,包括物理链路接口、交换接口、存储器接口、PCI总线接口等。通过内部高速总线连接在一起,提供很强的硬件并行处理能力。 ● 可扩展性: 多个NP之间还可以互连,构成网络处理器簇,以支持更为大型高速的网络处理。 从网络处理器以上特点可以看出,与通用处理器相比,网络处理器在网络分组数据处理上具有明显的优势。 目前,NP芯片都是由国外厂商设计制造的,从体系结构上主要分为两大类: 一类是以Intel 的IXP系列产品为代表,分为控制和处理(或称数据)两个平面。如Intel公司的IXP1200,控制平面是一个ARM CORE,负责维护系统信息和协调处理部分工作,处理平面由多个微引擎(Micro Engine)和其他专用硬件组成,负责利用控制平面下发的微代码和命令,直接处理网络数据。这类产品在对数据包进行简单过滤时性能较好,但是由于体系结构限制,尤其是微代码的开发相对复杂,导致灵活性较差,难以满足复杂多变的市场需求,一般适合3层(IP层)及以下网络数据的处理。 另一类产品以 SiByte的Mercurian系列产品为代表,它基于MIPS CPU设计,如SB1250。它一方面保持了基于通用CPU设计的灵活性,另一方面通过SOC(System On Chip)的方式消除了传统CPU、总线、设备之间带宽的瓶颈问题。这类产品灵活性较强,易于开发、升级和维护,适于构建速度可与专用ASIC相媲美的、完全可编程的网络处理平台。 目前提供NP芯片的厂家有很多,基本上都符合NPF指定的规范。国内使用比较广泛的则是Intel公司的 IXP xxx系列,主要包括IXP4xx、IXP12xx、IXP24xx、IXP28xx等。 IXP系列NP处理器从体系结构上看基本上都一样,都是由一个RISC处理器加一个微引擎构成的。其中,RISC处理器主要用于控制微引擎的运行,所以又称为控制层面;微引擎完成对网络数据包的处理,以实现高性能,所以又称为数据层面。不同IXP系列处理器的RISC型号和主频不同,微引擎的个数也有所不同,在性能上也有很大差别。 IXP4xx 的市场定位主要在中低端市场,因此基于IXP4xx芯片做出的防火墙也主要定位在中低端市场中。这里需要特别提一下IXP425,它内嵌了一个加密引擎,支持一些公开的密码算法,如3DES、AES、MD5、SHA1,因此,许多安全厂商会使用它生产低端的VPN或防火墙。 不过, 4xx系列芯片产品并不能进行微码编程,而Intel预置的微码又没有完成FW/VPN的处理,使得该芯片所对应的产品对IP报文的处理要通过 533MHz的Xscale来处理的,因而在性能上并没有什么优势。这可能也是一些国内厂商采取变产品不变价格的策略的原因。 IXP12xx 从12xx系列开始已经可以让软件开发人员根据不同的应用定制微引擎上的微码,以实现不同的功能。不过由于IXP12xx其微引擎只有6个,每个微引擎上可以存储条2k×32位的指令,所以该系列NP芯片只能用来做简单的包转发处理和QoS处理,如果用作较为复杂的防火墙处理则会显得力不从心了。因此,基于该系列NP芯片的防火墙要么性能不高,要么功能简单。 IXP24xx 从2003年开始,Intel公司推出了IXP24xx系列的网络处理器,它在性能上有了质的变化,开发起来也要复杂得多。使用它们做出的防火墙可能在单纯包转发上到达线速. IXP28xx IXP28xx的NP处理器从性能上比IXP24XX的性能又增加了很大,单从芯片的性能指标上看,IXP28xx比IXP24xx更有可能做出千兆线速的网络安全设备。不过,由于IXP2800板卡的设计要比IXP2400板卡设计要更加复杂,目前市场上还没有能够支持它得工板。 国内有不少厂商推出了低端基于INTEL IXP 425芯片的NP防火墙,面向百兆级用户.但NP最大的优点在于在高端,425芯片百兆上的处理能力没有同级别X8的技术白皮书规格.而基于2400芯片的高端NP产品代表了业界的最高性能.国内最先推出的神州数码DCFW-1800E -NP产品在千兆环境下的小包双向吞吐率可以达到93%以上.真正的实现了骨干网络的高速安全.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Intel推出的IXP2000系列芯片支持微码开发,在性能上有了长足的提高,如IXP2400理论上最多可支持2.5Gbps的 应用,IXP2800则支持10Gbps以上的应用。其SDK开发包一般功能十分齐全,模块化很好,便于开发人员控制。 不足的是,IXP2400每个微引擎仅能存储4k*32位的指令,比较适合开发路由器和交换机这类产品;IXP2800每个 微引擎能存储8k*32位的指令,基本可以满足防火墙功能开发的需要,但是,由于其性能提高带来了产品设计与应 用复杂度的成倍提高,造成价格十分昂贵。此外,该系列产品的硬件查表功能比较弱,这对于防火墙这类需要大 量查表操作的设备来讲,是致命的弱点。
P真的容易处理吗?
上面所有的讨论假设了P表示“容易”而“不在P中”表示“困难”。这是一个在复杂度理论中常见而且有一定准确性的假 设,它在实践中却不总是真的,原因包括如下几点:
它忽略了常数因子。一个需要101000n时间的问题是属于P的(它是线性时间的),但是事实上完全无法处理。一 个需要10-100002n时间的问题不是在P中的(它是指数时间的),但是对于n 取值直到几千时还是很容易处理的 。
假设P ≠ NP的复杂度类的图解.如P = NP则三个类相同.本质上,P = NP问题问道:如果是/不是问题的正面答案 可以很快验证,其答案是否也可以很快计算?这里有一个给你找点这个问题的感觉的例子。给定一个大数Y,我们 可以问Y是否是复合数。例如,我们可能问53308290611是否有非平凡的因子。回答是肯定的,虽然手工找出一 个因子很麻烦。从另一个方面讲,如果有人声称答案是"对,因为224737可以整除53308290611",则我们可以很快 用一个除法来验证。验证一个数是除数比首先找出除数来简单得多。用于验证一个正面答案所需的信息也称为证 书。所以我们的结论是,给定 正确的证书,问题的正面答案可以很快的(也就是,在多项式时间内)验证,而这就 是这个问题属于NP的原因。虽然这个特定的问题,最近被证明为也在P类中(参看下面的关于"质数在P中"的参考), 这一点也不明显,而且有很多类似的问题相信不属于类P。
P和NP
复杂度类P包含所有那些可以由一个确定型图灵机在多项式表达的时间内解决的问题;类NP由所有其肯定解可以 在给定正确信息的多项式时间内验证的决定问题组成,或者等效的说,那些解可以在非确定图灵机上在多项式时 间内找出的问题的集合。很可能,计算理论最大的未解决问题就是关于这两类的关系的:
P和NP相等吗?
更难的问题
虽然是否P=NP还是未知的,在P之外的问题是已经知道存在的。寻找国际象棋或围棋最佳走法(在n乘n棋盘上) 是指数时间完全的。因为可以证明P ≠ EXPTIME(指数时间),这些问题位于P之外,所以需要比多项式时间更 多的时间。判定Presburger算术中的命题是否为真的问题更加困难。Fischer和Rabin于1974年证明每个决定Pres burger命题的真伪性的算法有最少2^(2^(cn))的运行时间,c为某个常数。这里,n是Presburger命题的长度。因此 ,该命题已知需要比指数时间更多的运行时间。不可判定问题是更加困难的,例如停机问题。它们无法在任何给 定时间内解决。
NP
目录 [隐藏]
网络处理器 镎Neptunium NP问题 NP在游戏中 语言学研究常用术语NP NP—>netwok provider NP有生态学中的定义 其他含义
网络处理器
[编辑本段]
NP是Network Processor的缩写,意为网络处理器。根据“国际网络处理器会议”的定义:网络处理器是一种可编程 器件,它特定地应用于通信领域的各种任务,比如包处理、协议分析、路由查找、防火墙、QoS 等。
计算机科学家为什么认为P ≠ NP?
多数计算机科学家相信P≠NP。该信念的一个关键原因是经过数十年对这些问题的研究,没有人能够发现一个NP 完全问题的多项式时间算法。而且,人们早在NP完全的概念出现前就开始寻求这些算法了(Karp的21个NP完全 问题,在最早发现的一批中,有所有著名的已经存在的问题]])。进一步地,P = NP这样的结果会导出很多惊人 的结果,那些结果现在被相信是不成立的,例如NP = 余NP和P = PH。
多种技术并存 NP不是万能的,它并不会完全取代通用处理器和ASIC在网络设备中的应用。在对处理性能需求很高的高端设备 中,ASIC仍然具有很强的生命力,可以预见的是,在数据层面、控制层面和管理层,通用处理器、NP和ASIC将 各司其职,共同为防火墙应用提供灵活的服务。
实现标准化 NP技术的开发与应用直接促成了网络处理器论坛(NPF)的诞生。NPF的成立,将进一步推动NP的发展,实现 标准化,解决产品互连互通和软件可移植性等问题。
涌现庞大的第三方开发队伍
随着标准化工作的深入,再加上网络处理器本身具有模块化结构的特点,将涌现出一支庞大的第三方队伍,在硬 件组件、NP操作系统、开发工具、软件应用等方面努力。 总之,防火墙技术与NP技术开始紧密地联系在一起,NP技术的变革将推动防火墙技术向着更高性能、更多功能 以及标准化的方向发展。
NP防火墙将大步前行
随着新一代网络的继续发展,NP将更加倚重线速、智能化的包处理技术,而不仅仅是简单的基本性能,NP技术 的发展将直接影响到NP防火墙的发展。据业内专家调查分析,NP技术将向着更高的性能、更多功能支持、多种 技术并存和标准化等特征发展,基于NP的防火墙产品将随着NP的发展大步前行。
更高的性能
限制到是/不是问题并没有改变问题;即使我们允许更复杂的答案,最后的问题(是否FP = FNP)是等价的。
形式化定义
更正式一些,一个决定问题是一个取一些字符串为输入并要求输出为是或否的问题。若有一个算法(譬如图灵机 ,或一个LISP或Pascal的程序并有无限的内存)能够在最多nk步内对一个串长度为n的输入给出正确答案,其中k 是某个不依赖于输入串的常数,则我们称该问题可以在多项式时间内解决,并且将它置入类P。直观的讲,我们将 P中的问题视为可以较快解决的问题。
网络处理器器件内部通常由若干个微码处理器和若干硬件协处理器组成,且多个微码处理器在NP内部并行处理, 通过预先编制的微码来控制处理流程。对于某些复杂的标准操作,如内存操作、路由表查找算法、QoS 的拥塞控 制算法、流量调度算法等,则采用硬件协处理器来进一步提高处理性能,从而实现了业务灵活性和高性能的有机 结合。
哪种NP技术更适合防火墙
我们不难了解,由于各厂商所专注的NP技术领域不同,决定了NP产品之间的差异。目前,国内多数安全厂商在N P技术上大都选择了IBM或Intel的NP技术。其实,具体选用哪种NP技术开发防火墙,因素有很多,包括所选NP技 术的性能和成熟度、提供NP技术的厂商实力和重视程度,以及NP技术厂商可提供的支持力度及价格。
IBM研发的Power NP系列芯片不仅支持多线程,且每个线程都有充足的指令空间,在一个线程里完成防火墙功能 绰绰有余。其系列产品中,以NP4GS3为代表,该芯片最高端口速率可达OC-48,并具有4.5Mbps的报文处理能 力和最大4G的端口容量,并且,其拥有IBM创新的带宽分配技术(BAT),是进行下一代系统设计的强大部件。而 且,IBM还为开发者提供了软件架构的解决方案和仿真平台,大大缩短了开发难度和周期。目前,已经有不少厂 家采用IBM的芯片开发高端防火墙产品,如联想网御于2003年10月推出了国内第一款基于NP技术的千兆线速防火 墙;2005年,在解决了多项基于多NP协同工作的技术难题的基础上,联想网御成功推出了万兆级的超性能防火墙 。
在2002年对于100研究者的调查,61人相信答案是否定的,9个相信答案是肯定的,22个不确定,而8个相信该问 题可能和现在所接受的公理独立,所以不可能证明或证否。[1] 对于正确的解答,有一个1,000,000美元的奖励。
NP-完全问题(或者叫NPC)的集合在这个讨论中有重大作用,它们可以大致的被描述为那些在NP中最不像在P中 的。(确切定义细节请参看NP-完全)理论计算机科学家现在相信P, NP,和NPC类之间的关系如图中所示,其中P和 NPC类不交。
NP的多种产品形态
目前NP主要用于网络骨干设备和网络接入设备,用来开发从网络第2层到第7层的各种服务和应用。目前,采用N P处理分组交换的厂家,既有第一梯队的网络公司,如思科、北电和朗讯等,也有不少后起之秀,如华为、中兴、 港湾等。但是,其NP用途却不尽相同:思科宽带汇聚系列产品使用了思科的并行快速转发(PXF)NP,它被业 内称为“NP的鼻祖”;华为在“第五代路由器”NE80/40/20系列产品中全面采用了NP;港湾的高端路由器、核心交换 机,如NetHammer G系列采用了NP相关技术;UT斯达康公司选择了Motorola的NP作为几项3G无线接入网产品 的封包转发引擎……
它只考虑确定性解。可能有一个问题你可以很快解决如果你可以接受出现一点误差的可能,但是确保正确的答案 会难得多。这个问题不会属于P,虽然事实上它可以很快求解。这实际上是解决属于NP而还不知道是否属于P的 问题的一个办法(参看RP, BPP)。
新的诸如量子电脑这样的计算模型,可能可以快速的解决一些尚未知道是否属于P的问题;但是,没有一个它们已 知能够解决的问题是NP完全的。不过,必须注意到P和NP问题的定义是采用象图灵机这样的经典计算模型的属于 表述的。所以,即使一个量子计算机算法被发现能够有效的解决一个NP完全问题,我们只是有了一个快速解决困 难问题的实际方法,而不是数学类P和NP相等的证明。
NPБайду номын сангаас题
P/NP问题是在理论信息学中计算复杂度理论领域里至今没有解决的问题,它被“克雷数学研究所”(Clay Mathema tics Institute, 简称CMI)在千禧年大奖难题中收录。P/NP问题中包含了复杂度类P与NP的关系。1971年史提芬· 古克(Stephen A. Cook) 和 Leonid Levin 相对独立的提出了下面的问题,即是否两个复杂度类P和NP是恒等的(P= NP?)。
相关文档
最新文档