浅谈计算复杂性理论
算法分析和计算复杂性分析

算法分析与评估1.概述在查找引擎优化范畴里边有一个疑问常常让人感受捉摸不透,到底是什么样的排序要素结尾决定了网页的排名。
而每个查找引擎公司都将其的查找引擎算法维护的极端严密,只有很少很少的一些的公司能有时机看到这些算法的全貌。
并且就算是有时机看到这些算法的真实容貌,要想领悟到话,还得具有深沉的数学功底。
这使得对查找引擎优化整个概念的晓得变得很艰难。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。
一个算法得出一个解,那么这个解是最优解还是可行解?如果是可行解,与最优解的偏差有多大?对于算法的效果,存在两种评价方法——证明方法和仿真分析方法。
证明方法是指利用数学方法对于算法进行评估,证明它的解的类型。
仿真分析方法是指产生或选取大量的、具有代表性的问题实例,利用该算法对这些问题实例进行求解,并对算法产生的结果进行统计分析。
例如对于TSP问题贪心算法的模拟与分析,关于贪心算法的正确性,直观上只需检查算法的输出结果中,每个城市出现且只出现一次,该结果即是TSP问题的可行解,说明算法正确的求解了这些问题。
关于它的效果,如果实例的最优解一直(问题规模小或问题已被成功求解),利用统计方法对若干问题实例的算法结果与最优解进行对比分析,即可对其进行效果评价。
而对于较大规模的问题实例,其最优解往往是未知的,因此,算法的效果评价只能借助于与前人算法的结果的比较。
2.复杂度评价一个算法时另一个问题是,算法能够执行的了吗?有限的时间和空间上这个算法能够执行吗?这就需要对算法的复杂性进行分析。
算法的时间复杂度和空间复杂度合称为算法的复杂度。
2.1.时间复杂度(1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。
但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。
并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。
算法的复杂性

算法的复杂性算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
⼀个算法的复杂性的⾼低体现在运⾏该算法所需要的计算机资源的多少上⾯,所需的资源越多,我们就说该算法的复杂性越⾼;反之,所需的资源越低,则该算法的复杂性越低。
计算机的资源,最重要的是时间和空间(即存储器)资源。
因⽽,算法的复杂性有时间复杂性和空间复杂性之分。
不⾔⽽喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的⼀个重要⽬标;另⼀⽅⾯,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选⽤算法适应遵循的⼀个重要准则。
因此,算法的复杂性分析对算法的设计或选⽤有着重要的指导意义和实⽤价值。
1.时间复杂性:如果⼀个问题的规模是n,解这⼀问题的某⼀算法所需要的时间为T(n),它是n的某⼀函数 T(n)称为这⼀算法的“时间复杂性”例1:设⼀程序段如下for (int i = 0; i < n; i++) // (i = 0) 1次 (i < n) n次 (i++) n次{for (int j = 0; j < n; j++) // (j = 0) n次 (j < n) n*n次 (j++) n*n次{x++; //(i++) n*n次}}可见,这段程序总的执⾏次数是:T(n)=1+3n+3n*n。
因为时间复杂度是不考虑系数的所以 T(n)=O(n^2)2.空间复杂性:包括程序代码所占⽤的空间,输⼊数据所占⽤的空间和辅助变量所占⽤的空间这三个⽅⾯。
⼀个算法的空间复杂度只考虑在运⾏过程中为局部变量分配的存储空间的⼤⼩只要不超过内存,尽可能⽤空间换时间。
柯尔莫哥洛夫复杂性

柯尔莫哥洛夫复杂性柯尔莫哥洛夫复杂度于1960年代由美国数学家格里戈里.蔡廷、俄罗斯数学家安德烈.科尔莫哥洛夫和计算机科学家雷.索罗门诺夫分别独立发现,因此也称为柯尔莫哥洛夫﹣索罗门诺夫﹣蔡廷复杂度。
2、复杂很复杂。
复杂是一个复杂议题,定义有几十种,但科学家至今还没找到一个公认定义。
每个定义基于不同视角,各有道理。
比如,复杂度是根据量来定义的。
对比碱基对的数量,人类基因组大约有30亿个碱基对,酵母有2000万个碱基对,所以人类比酵母复杂250倍。
例如,根据信息熵来定义复杂性。
一个信息,如果克服越大不确定性,信息熵越大,信息量就越大,就越复杂,信息价值也就越大。
反之,则相反。
例如,根据逻辑层次来定义复杂性。
层次越多,就越复杂;层次越少,就越简单。
例如,多细胞生命比单细胞生命逻辑层次更多,就更复杂。
前瞻性思维也指一种定义方式。
如果系统机制可以用有限的简单规则来描述,即使表面复杂,也是简单的;如果不能,就像一个复杂的适应系统,内部和表面一样复杂,真的很复杂。
诸如此类,每一种定义都能反映复杂性某个侧面,都有优点和缺点。
柯尔莫哥洛夫复杂度也这是一个可供参考的定义和测量方法。
今天的词条介绍安德雷·柯尔莫哥洛夫的复杂性,供读者参考,以提高对复杂现象的把握能力。
柯尔莫哥洛夫复杂性 3A :1、理解涵义。
柯尔莫哥洛夫复杂度定义为,用生成字符串最短算法长度,来表征字符串复杂度。
接下来,我们来看3个实例,以增强感性理解。
字符串1:字符串2:2,3,5,8,13,21,34,55字符串3:35j8o1d93id78mcdkOjiwwuetcn读者可以这样想:如果要用最短的描述,你会怎么描述上面的三串?像上面这样,老老实实把每一个字符读出来或者写下来,自然是一种描述,但未必是最简短描述。
例如,第1个字符串,读友们很容易观察出规律:01重复出现。
我们可以描述为:01重复出现12次。
如是描述比把24个字符逐一描述要简短。
第一讲:计算复杂性理论

大多数研究者认可 的包容关系
L m
计算复杂度的影响因素
简化模型:模型2
计算复杂度的影响因素
简化模型:模型3。
计算复杂度的影响因素
建模假设 例:高空抛球的运动轨迹。 ----抛物线模型 假设1.没有空气阻力; 假设2.地面是平面。 ----椭圆模型
计算复杂度的影响因素
探索空间1 探索空间1---解的近似度、满意度
例:0—10之间的整数解:1-9共9个可行解(一维) 0—10之间的实数解:精确到小数点后6位 共有107个可行解(一维); 107n个可行解(n维)
n! 10141世紀 → 10120世紀 102551世紀 → 102530世紀
问题与算法
每个問題都可能有多个算法存在. 每个算法的计算量(速度)都不同。 例: 赝品金币問題: 问题:9個外观完全一样的金币.,有一个是假的 (重量轻). 提问:用天秤来鉴别真伪,天秤需要使用几次?
贋品金币問題算法 問題算法
优化技术与方法
計算量(1) 計算量
+,-,×,÷ 比較:≠,≤,≥,<,> 5种基本演算都是用1step 可以实现. 実際上,×比+多占用時間. 「四舍五入」不算基本演算.
計算量(2) 計算量
{a1, a2,..., an}:n個整数 Q1. 求和(1): a1+a2+・・・+an. 1 + +a n-1 steps → O(n)算法. Q2. 求和(2): (1) 2×a1+・・・+ 2×an , 2n-1 steps→ O(n)算法. (2) 2×(a1+・・・+an) , n steps→ O(n)算法.
尚未确信能否用多項式時間算法求解的问题的 集合称为NP (non-deterministic polynomial)问题 某一个问题不属于NP问题的証明 如能够找到一个多項式時間算法 (簡単) 某一个问题属于NP问题的証明 可以归结为某一类既知的NP类问题(现阶段7类))
复杂性理论 理论

复杂性理论理论复杂性理论:1. 什么是复杂性理论?复杂性理论是一种研究复杂系统的理论模式,通过对复杂系统中的网络结构、行为等进行探究,旨在找出复杂系统发展、演化及调节的机制,它把系统看作一个慢慢组装的社会、经济、文化及自然制度,以此来分析和预测它的未来发展和演变的趋势。
它的主要特点是:遵循自组织规律,发展出多样性;对复杂自一组元件和实体中产生有规律的新组织和新行为;系统发展中伴有异质性、不可控性和准确性等概念;以及它所存在的发展性质,趋于复杂化,发展规律。
2. 复杂性理论的基本特点①异质性:指的是一个复杂系统有多个不同的部分,这些部分通过复杂的相互关系作用在一起,形成一个不同的系统。
②多样性:指的是一个复杂系统的组件具有各种不同的特性,组成元素的结构特点和构成系统的网络形状也各不相同。
③互相衔接:指的是一个复杂系统中不同的部件之间存在有互相衔接、影响关系,通过衔接就可以调节系统发展的方向与节奏。
④不可控性:系统发展过程的规律除了被自身的互相衔接约束之外,还受外在边界和内部因素的影响,因此在系统路径、过程等方面具有不尽相同的结果,而且受外部环境影响,这些结果都是无法把握的。
⑤自组织特性:指的是在特定环境中,复杂系统会随着过程而产生有规律的新组织形态及僵化状态。
3. 复杂性理论的应用①未来发展预测:复杂性理论可以用来研究我们所处的环境及未来的发展趋势,如全球变暖的问题、全球经济危机的原因及趋势等问题。
②组织管理:复杂性理论也可以用在组织管理领域,帮助管理者深入理解组织内部复杂体系,发现组织变化的趋势,并积极把握组织未来发展的方向和节奏。
③人际关系:复杂性理论还可以用于研究及解释社会网络中的人际关系变化,如群体内某个个体对社会未来发展趋势的影响。
4. 结论复杂性理论是一种基于网络的理论研究,主要探究复杂系统的发展、演化及调控机制。
它的基本特点是异质性、多样性、互相衔接、不可控性和自组织特性。
它在未来发展预测、组织管理、人际关系研究等领域都有广泛的应用,可以帮助我们分析、预测,实现对复杂环境的发掘和掌控。
可计算性与计算复杂性

可计算性与计算复杂性1.可计算性:可计算性研究的是什么样的问题可以通过其中一种计算模型解决。
早期的计算模型是图灵机(Turing machine),后来发展出其他等效的计算模型,例如递归函数、Lambda演算等。
根据这些计算模型,可以定义一类问题为可计算问题,也就是可以通过计算模型求解的问题。
1.1停机问题:停机问题是可计算性的典型例子,它是指根据给定的程序和输入,判断这个程序是否会在有限的时间内停止运行。
根据图灵在20世纪30年代证明的停机问题的不可判定性,他证明了不存在一个通用的算法能够判断任意程序是否停机,这个结论被称为图灵不可判定性定理。
1.2基本计算问题:除了停机问题,可计算性还研究了一些其他的基本计算问题。
例如,可计算性研究了自动机是否可以接受一些字符串,或者函数是否可以被一个特定的计算模型计算等。
1.3计算模型的等效性:在可计算性理论中,研究了不同计算模型之间的等效性。
图灵机、递归函数和Lambda演算等计算模型之间可以相互转化,这意味着它们的计算能力是等价的。
这个等价性的概念对理解可计算性是至关重要的。
2.计算复杂性:计算复杂性研究的是什么样的问题可以在多项式时间内解决,以及在不同条件下求解问题所需要的计算资源(例如时间、空间等)。
计算复杂性理论的核心是研究问题的复杂度类别和难度。
2.1多项式时间可解问题:计算复杂性理论将问题分为多项式时间可解问题和非多项式时间可解问题。
多项式时间可解问题是指那些可以在多项式时间内求解的问题。
这些问题的解决方法被认为是高效的,因为随着输入规模的增加,所需计算资源的增长是可接受的。
2.2难解问题:非多项式时间可解问题是那些不可以在多项式时间内求解的问题。
例如,图的旅行商问题(TSP)和布尔可满足性问题(SAT)等问题被认为是难解问题。
难解问题的求解需要指数级的时间或空间复杂度,因此在实际中很难找到有效的算法。
2.3复杂度类别:计算复杂性理论还研究了不同问题的复杂度类别。
系统科学中的复杂性理论

系统科学中的复杂性理论一、引人们时常被生活中复杂的现象所困扰或激发灵光。
从科学的角度来看,复杂性正是我们需要解决或研究的难题之一。
而复杂性理论便从整体性和相互影响的角度来对复杂现象进行研究。
二、什么是复杂性理论?复杂性理论是一项时下热门的跨学科研究领域,它探讨的是包括自然以及人造系统在内的高度关联的现象和现象之间的相互作用。
在自然系统中,这些相互关联的现象可以是分子之间的相互作用、植物和动物之间的生态交换,以及来自天空的能量等等。
在人造系统中,复杂性可以体现为物流、网络、金融系统或者城市设计等各种领域的应用。
三、如何理解复杂性理论?要理解复杂性理论,我们需要通过系统性的思维方式去研究各种复杂的系统。
这个思维模式要求我们把系统当做一个整体,研究它的特性和组成部分之间的相互关系,而非仅关注它的个别部分。
这种思维方式可以帮助我们更好地解释那些因为各种因素交织在一起而变得复杂的现象。
举个例子,我们可以试着研究一个生态系统,它包括大量的生物种类、天气变化以及物种交互作用等,这些组成部分的相互作用会导致整个生态系统发生变化。
通过这种思维方式,我们不仅可以学到什么是复杂性理论,还可以了解到复杂性理论如何解释这个世界上各种复杂的质量和运动方式。
四、复杂性理论的应用复杂性理论的应用领域非常广泛。
我们可以将其应用于各种不同类型的系统,例如心理、社会和生态系统以及信息系统、机器人等等。
以下列举一些领域及其应用的例子:1. 在天气预报中,复杂性理论可以用来帮助珍情数据,了解天气模式的变化,并预测未来的天气走势。
2. 在金融市场中,复杂性理论可以用来分析股票和经济数据,并预测市场波动。
3. 在医学领域中,复杂性理论可以用来研究人类的疾病,包括神经系统和心血管系统中的疾病。
4. 在交通流动中,复杂性理论可以用来优化交通流量,例如降低交通拥堵和安排更高效的航班。
5. 在生态学中,复杂性理论可以用来预测种群变化并优化自然资源的管理。
计算复杂性理论总结报告

人生有几件绝对不能失去的东西:自制的力量,冷静的头脑,希望和信心 1计算复杂性理论总结报告一、 图灵机(1) 图灵机基本模型图灵机是山图灵(Alan Mathisom Turing)在1936年提出的,它是一个通用的计算 模型。
通过图灵机,来研究递归可枚举集和部分递归函数,对算法和可计算性进行研究 提供了形式化描述工具。
图灵机的基本模型包括一个有穷控制器,一条含有无数个带方格的输入带和一个读 写头。
其直观物理模型如下图1所示。
基本图灵动作有以下三种:(1) 改写被扫描带方格内容,控制器转化为下一状态。
(2) 读写头向左移一个带方格,控制器转化为下一状态。
(3) 读写头向左移一个带方格,控制器转化为下一状态。
图1图灵机(2) 图灵机形式化定义,图灵机演算过程及语言描述定义:一个基本图灵机定义为一个七元组TM={Q,C,6,A.B,ql,F)o 其中Q 是状态集合,(图灵机所有的状态)非空有限集;C 是带符号表,(放在带方格中的符号集合)非空集;6是控制函数或过程转换函数(定义控制器)6: QxCTQxCU (R.L); A 是输入字母表,ACC ;B 是空白符,BGC :ql 是初始状态,qlSQ ;F 是终态集,F £ Q.TM 的扫描符号串主要山6来确定:(1)5 (q, s)二(q‘,s'); (2)8 (q, s) =(q* , R); (3)8 (q, s) =(q* , L); (4) 6 (q, s)无效,对应无定义时图灵机终止。
TM 的工作用“格局”的转换来描述。
格局:6 ala2a3...aj-lqajaj+l...其中 qWQ, aiGC ;帯(1)若8 (q, ai)无定义,称o为停机格局;(2)若qEF,称o为接受格局;人生有几件绝对不能失去的东西:自制的力量,冷静的头脑,希望和信心__(3) 若q为初始状态,称o为初始格局;格局O到格局T的转换a 卜mt 若成立go 1 |~mlo2 卜m2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈计算复杂性理论
任忠
乌鲁木齐石化公司计控中心
摘要:本文阐述了计算复杂性理论的产生、定义、研究内容和发展。
关键词:算法分析;计算复杂性;起源;发展
1.计算法复杂性理论的起源
在几千年的数学发展中,人们研究了各式各样的计算,创立了许多算法。
但是,以计算或算法本身的性质为研究对象的数学理论,却是在20世纪30年代才发展起来的。
1936年,为了讨论对于每个问题是否都有求解算法,数理逻辑学家提出了几种不同的计算模型的定义。
K.Godel和S.C.Kleene等人创立了递归函数论,将数论函数的算法、可计算性刻画为递归可枚举性。
A.M.Turing和E.L.Post提出了理想计算机的概念,将问题算法可解性刻画为在具有严格定义的理想计算机上的可解性。
40年代以后,随着计算机科学技术的发展,研究的焦点从理论可计算法转移到现实可计算性上。
人们不仅需要研究理论上的、原则上的可计算性,还要研究现实的可计算性,即研究计算一个问题类需要多少时间,多少存储空间,研究哪些问题是现实可计算的,哪些问题虽然原则上可计算,但由于计算的量太大而实际上无法计算等。
因而一般算法设计方法研究和对一类问题算法解的难度分析便成为计算机科学的热点。
此后,计算复杂性的研究等不断有所发展。
由此产生了算法学和计算复杂性理论等新兴研究领域。
计算复杂性大的进展始于50年代末、60年代初,当时在美国有两个并行的中心,一个是通用电气公司设立于纽约州Schenectady的研究实验室,核心人物是J.Hartmanis和R.Stearns。
1964年11月,他们在普林斯顿举行的第五届开关电路理论和逻辑设计学术年会上发表了论文"Computational Complexity of recursivese quences",论文中首次使用了"计算复杂性"这一术语,由此开辟了计算机科学中的一个新领域,并为之奠定了理论基础。
他们两人是1993年度图灵奖获得者。
另一个中心是麻省理工学院MIT,在那里,加州大学伯克利分校著名的计算机科学家Manuel Blum与前述两人互相独立地进行着相关问题的研究,并完成了他的博士论文:"Amachine independent theory of the complexity of recur- sive functions",Blum是受以色列学者M.O.Rabin的启发而开始这方面的研究的。
Rabin 是希伯莱大学的教授,是研究计算复杂性问题的先驱,并在1976年荣获图灵奖。
Blum的论文不但提出了有关计算复杂性的一些公理,而且在对复杂性类的归纳上也比其他学者有更高的抽象度。
因此布、哈、斯三人被学术界公认为计算复杂性理论的主要奠基人。
2.计算复杂性的定义、研究内容及发展
算法学是系统研究算法的设计、分析和验证的学科。
算法分析是为了确定算法的效用或算法的复杂性,以便比较求解同一问题的各种算法优劣。
而算法分析的理论基础就是计算法复杂性。
所谓"计算复杂性",通俗说来,就是用计算机求解问题的难易程度。
其度量标准:一是计算所需的步数或指令条数即时间复杂度,二是计算所需的存储单元数量即空间复杂度。
我们当然不可能也不必要就一个个具体问题去研究它的计算复杂性,而是依据难度去研究各种计算问题之间的联系,按复杂性把问题分成不同的类,即ComplexityClass。
计算复杂性理论是计算机科学中研究各类问题计算复杂性的分支学科,它使用数学方法对计算中所需的各种资源的耗费作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质,是算法分析的理论基础。
算法复杂性是针对特定算法而言。
而计算复杂性则是对特定问题而言。
后者是反映问题的固有难度。
计算复杂性等于最佳算法复杂性。
计算复杂性理论的主要研究内容是对复杂度函数增长的阶作分析,探讨它们对于不同的计算模型在一定意义下的无关性,根据复杂度的阶对被计算的问题分类,研究各种不同资源耗费之间的关系,对一些基本问题的资源耗费情况的上、下界作估计等。
它含四个层次:第一个层次是具体复杂性。
研究问题的时间复杂度和空间复杂度。
这一类研究通常包括在算法设计和分析学科分支中。
第二层是问题复杂度的上界和下界研究。
再上一层是研究语言复杂性类。
研究确定性和非确定性对复杂度的影响。
最后研究完全性、相对性和相似性。
由于篇幅所限,下面仅对P、NP类问题,常用的复杂性度量即时间复杂度和空间复杂度,问题的上下界及复杂性类等主要内容做简要阐述。
P类、NP类问题。
用图灵机作为标准的计算模型情况下,可以非形式化地定义如下几类计算问题:P类问题:由确定型图灵机在多项式时间内可解的一切判定问题所组成的集合;NP类问题:由非确定型图灵机在多项式时间内可计算的判定问题所组成的集合;NP完全问题:如果判定问题π∈NP,并且对所有其他判定问题π∈NP,都有π'多项式变换到π(记为π'∞π),则称判定问题π是NP完全的。
对P类,NP类及NP完全问题的研究推动了计算复杂性理论的发展,产生了许多新概念,提出了许多新方法。
但是还有许多难题至今没有解决,该学科一个基本问题:在计算时间多项式有界时,确定型机器与非确定型机器的解题能力是否相同,即P是否等于NP?就是其中之一。
许多学者猜想P≠NP,但无法证明。
时间复杂度和空间复杂度。
计算过程最重要的资源是所占时间和空间。
计算过程所耗费资源与问题规模有关。
例如,N个数排序,N越大,所需时间越多。
在计算复杂性理论中,算法所需时间和空间都是问题规模N的函数T(N),S(N)称为时间复杂度函数和空间复杂度函数。
当N确定后,可能有多种不同的实例,不同实例的计算时间仍可能不同。
如果选用所有规模为N的实例,所用最长时间作为T(N),则称之为最坏情况时间复杂度。
如果选用各实例所用时间的平均值作为T(N),则称之为平均时间复杂度。
计算复杂性的上界和下界。
它用以估计问题所需资源的复杂程度的界限函数。
研究计算复杂性的一个重要目的是要为各种问题寻求最优算法。
这就要先知问题的固有复杂度。
目前对于大多的问题而言,还只知道它最多需要多少、至少需要多少某种资源。
以时间为例:前者称为该问题的时间复杂度上界,后者称为下界。
上界越小越好,下界越大越好。
一旦对某问题,其上下界相等或接近了,就知道该问题的固有复杂度。
寻找问题的上界没有固定方法。
找到问题的一个算法,若其时间为T(N),则T(N)即为该问题复杂度的一个上界。
因为这表明解决问题用T(N)时间就足够了。
更小的上界,取决于设计更好的算法。
例:两个N维矩阵的乘积需要O(N3)时间。
用分治法设计的一个算法,使时间下降到o(N2.81),经过一系列工作,时间上界已降到o( N 2.376 )。
寻找问题的下界则困难的多。
因为必须证明,该问题的一切算法(包括已知和未知的)都至少需要这么多资源。
证明下界的常用方法有计数论证法和归纳方法。
目前下界的结果多集中在语言理论和逻辑理论中。
下面是两个通常问题的下界结果。
“N个数排序,其基于数的比较的时间复杂度至少是NlogN。
”“为了在图灵机上判断一个长度为N的数是否是某数的完全平方,其时间和空间复杂度的乘积至少正比于N2。
复杂性类。
根据识别时资源耗费的复杂程度而对形式语言所作的分类。
在多项式时间内用确定型机器可识别的语言可归入一类,记为P。
把那些用非确定型机器在多项式的串行时间内可识别的语言归入一类,记为NP。
在这种条件下无需说明采用什么计算模型,因为根据相似性原理,不论采用何种模型,P和NP的意义是不变的。
皮彭格提出P的一个重要子类称为NC,它由所有同时可在多项式的空间和对数多项式的并行时间内可计算的函数组成。
如果说P代表现实可计算的问题,那么NC即代表其中用多项式处理机在对数多项式时间内计算的问题。
整数的加减乘除运算、整序、图联通性、矩阵的乘法、除法、行列式、多项式的最大公因子、上下文无关语言识别、找图的最小张开树等问题都属于NC。
计算复杂性是计算机科学的一个重要分支。
图灵奖至今的39位得主中有6位是由于在计算复杂性方面的杰出贡献而获此殊荣。
目前,计算复杂性理论又进入了一个新的发展阶段。
一方面,随着科学技术的发展,计算复杂性理论将深入到各个数学分支中去。
另一方面,日益占据重要地位的并行计算推动了并行计算复杂性理论的发展,特别是人工智能和智能计算机的研究涉及人类行为的模拟及海量信息的处理,对计算复杂性理论提出了崭新的研究课题。