计算复杂性综述

计算复杂性

目录

前言

  计算,实际上是解决问题的过程。人们希望用计算机能找到解决一切问题的方法,在计算领域建立了算法理论和算法模型,并根据各种问题提出具体算法。即使很多问题理论上可以计算,但是实际情况中考虑到计算复杂性,即问题的时空需求太过复杂,是实际不可行的计算问题。

  符号主义机器学习是人工智能知识工程学派的一个分支,旨在寻找一个终极、通用的强人工智能。20世纪70年代,基于知识的系统取得卓越成绩,而到了80年代,它们迅速传播,后来却消失了。它们消失的主要原因是知识习得瓶颈:文法的不断扩张使设计达到无限、逻辑推理非常困难、找不到通用判断文法,被证明为NP难问题。

  连接主义机器学习的支持者像是经验主义者,认为所有的推理都是不可靠的,知识必须来源于观察及实验。他们构建的人工神经网络达到了极高的深度,所消耗的代价也相当高,谷歌的AlphaGo与李世石下棋的过程,有大量机器在参与运算,仅一场比赛就耗电3000美元。

  由此可见,人工智能未来的发展仍然曲折坎坷,为了评估未来将要出现的算法和模型,有必要弄清问题是否实际可计算以及计算复杂性问题。

正文

一、计算复杂性理论基本问题

(一)时间复杂度

  时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行的效率。

  不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度。
数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。
还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!)的阶乘级复杂度。

(二)Cook-Karp论题

  背景:1971年,Cook和Karp提供了实际可行的计算的标准,即多项式时间算法标准。区分了可计算问题中实际可计算的问题和实际不可计算的问题。实际可计算问题称为多项式时间可计算,实际不可计算的问题称为指数时间可计算。

  内容:一个算法实际可行当且仅当它是多项式时间可计算的。

  时间复杂度: 解决问题需要的时间与问题的规模之间的多项式关系。

  多项式时间复杂度:多项式关系形如O(n^k),k为某个常数,n是问题的输入规模。例如,时间复杂度为O(nlog(n))O(n^3)都是多项式时间复杂度。

  指数时间复杂度:时间复杂度为O(n^log(n))O(2^n)是指数时间复杂度,O(n!)是阶乘时间复杂度。像O(a^n)O(n!)型的时间复杂度,它是非多项式级的,其复杂度计算机往往不能承受。

  因此,将实际可计算问题定义成多项式时间可计算,将实际不可计算问题定义成指数时间可计算,在目前的计算机体系结构下,无法支持这样大量的运算。

(三)Church论题

  概述:邱奇论题是一个关于可计算性理论的假设。该假设论述了关于函数特性的,可有效计算的函数值(用更现代的表述来说–在算法上可计算的)。简单来说,邱奇-图灵论题认为“任何在算法上可计算的问题同样可由图灵机计算”。[1]

  前提:声称一个函数是“可有效计算的”究竟意味着什么–在某种意义上是不甚明确的直觉结果。所以,该论题依然是一个假想。

  有效性:Rosser于1939年对“可有效计算性”进行了如下的解读:“很明显CC和RC(邱奇和Rosser的论据)的成立依赖于对‘有效性’的严格定义

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值