计算复杂性理论

计算复杂性理论所研究的资源中最常见的是时间(要通过多少步演算才能解决问题)和空间(在解决问题时需要多少内存)。其他资源亦可考虑,例如在并行计算中,需要多少并行处理器才能解决问题。

时间复杂度是指在计算机科学与工程领域完成一个算法所需要的时间,是衡量一个算法优劣的重要参数。时间复杂度越小,说明该算法效率越高,则该算法越有价值。

空间复杂度是指计算机科学领域完成一个算法所需要占用的存储空间,一般是输入参数的函数。它是算法优劣的重要度量指标,一般来说,空间复杂度越小,算法越好。我们假设有一个图灵机来解决某一类语言的某一问题,设有X个字(word)属于这个问题,把X放入这个图灵机的输入端,这个图灵机为解决此问题所需要的工作带格子数总和称为空间

复杂度理论和可计算性理论不同,可计算性理论的重心在于问题能否解决,不管需要多少资源。而复杂性理论作为计算理论的分支,某种程度上被认为和算法理论是一种“矛”与“盾”的关系,即算法理论专注于设计有效的算法,而复杂性理论专注于理解为什么对于某类问题,不存在有效的算法。



多项式时间( 英语Polynomial time)在 计算复杂度理论中,指的是一个问题的计算时间 m(n)不大于问题大小 n的多项式倍数。任何抽象机器都拥有一 复杂度类,此类包括可于此机器以多项式时间求解的问题。

以数学描述的话,则可说m(n) = O(n^k),此k为一常数值(依问题而定)。

数学家有时把“如多项式时间长的算法”视为快速计算,相对应的是超多项式时间,表示任何多项式时间的输入数目只要够大,超多项式时间所需的解题时间终究会大大超过任何多项式时间的问题。指数时间就是一例。

可以在决定型依序机器上(例如图灵机)以多项式时间解决的决定性问题,其属于的复杂度类被称为P。可以在多项式时间验证答案的决定性问题称为NP。而NP也是可以在非确定型图灵机以多项式时间解决的问题(NP两字为Non-deterministic Polynomial的缩写)。

多项式时间在决定型机器上是最小的复杂度类别,且在机器模型改变时依旧强韧,且也是可在副程式组合过程中保持封闭的类别。

强多项式时间指的是此问题的运算时间不因输入资料的数字大小而变动,而是依照输入资料的结构复杂度(例如中的顶点数量)。

多项式时间的副类别[编辑]

  • \Omicron(n\log(n))
  • 计算复杂度理论中,常数时间是一种时间复杂度,它表示某个算法求出解答的时间在固定范围内,而不依照问题输入数据大小变化。

    常数时间记为 O(1)(采用大O符号)。数字 1 可以替换为任意常数。

    举例:

    想在“访问 数组上的元素”的问题上达到常数时间,只要以元素的序号访问即可。
    然而“在数组上搜索最小值”并不是一个常数时间问题,因为这需要扫描数组上的每一个元素以寻找最小值及其位置,一般需要 O(n)次访问。

    计算复杂性理论,一个被称为线性时间或 Οn)时间的算法,表示此算法解题所需时间与输入资料的大小成正比,通常以n表示。换句话说,执行时间与输入资料大小为线性比例。例如将一列数字加总的所需时间,正比于串行的长度。

    然而实际情况常有差距,真实的执行时间很可能与预期的比率相差甚大,尤其在n的值很小时。在技术讨论时,在足够大的量n之下算法的执行时间从anbn(a、b为正实数)时,就可称线性时间。详情请看大O符号

    达到线性时间的执行效能通常是一个算法的最佳目标[来源请求]。很多学者研究并创造了许多接近线性或更佳的算法,包括了软件或硬件方面的研究。硬件方面,借由诸如平行运算的硬件架构,使得某些数学认为无法在标准计算模型下达到线性时间的算法,现在都可以在线性时间内执行完毕。例如内容可寻址内存Content-addressable memory)。

    某些排序算法可以在特殊的数据结构及排列下拥有线性时间的效率。但在一般情况下以比较元素大小来排序的算法,最多只能到达Ο(nlog(n))。最低限度复杂性的证明已被小O符号含括;通用排序算法被认为是Ω(n log(n))。另外,要找到一个集合中最大的元素是 Ω(n),因为算法必须至少比较过(n-1)次才能找到最大元素。

    任何必须依赖全部输入内容才能得解的问题,它最少也得要线性时间才能得解,因为它至少得花线性时间来读取输入资料。

    计算复杂度理论中,指数时间指的是一个问题求解所需要的计算时间m(n),依输入数据的大小n而呈指数成长(即输入数据的数量依线性成长,所花的时间将会以指数成长)。

    以数学术语来说,便是若存在 k > 1,则此mn) = Θ(kn)且存在c使得mn) = Ο(cn

    计算机科学家认为多项式时间的,而其他类型的计算时间是的。指数时间因此被认为是慢的类型。有很多算法计算时间慢过多项式时间,因此被称为超多项式时间,但又快过指数时间,也因此又被称为次指数时间,它们也被认为是慢的算法。此类问题中最著名的便是整数分解


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值