polynomial time
https://en.wikipedia.org/wiki/Time_complexity#Polynomial_time
An algorithm is said to be of polynomial time if its running time is upper bounded by a polynomial expression in the size of the input for the algorithm, i.e., T(n) = O(nk) for some constant k.[1][8] Problems for which a deterministic polynomial time algorithm exists belong to the complexity class P, which is central in the field of computational complexity theory. Cobham's thesis states that polynomial time is a synonym for "tractable", "feasible", "efficient", or "fast".[9]
Some examples of polynomial time algorithms:
- The selection sort sorting algorithm on n integers performs {\displaystyle An^{2}} operations for some constant A. Thus it runs in time {\displaystyle O(n^{2})} and is a polynomial time algorithm.
- All the basic arithmetic operations (addition, subtraction, multiplication, division, and comparison) can be done in polynomial time.
- Maximum matchings in graphs can be found in polynomial time.
Complexity classes[edit]
The concept of polynomial time leads to several complexity classes in computational complexity theory. Some important classes defined using polynomial time are the following.
- P: The complexity class of decision problems that can be solved on a deterministic Turing machine in polynomial time.
- NP: The complexity class of decision problems that can be solved on a non-deterministic Turing machine in polynomial time.
- ZPP: The complexity class of decision problems that can be solved with zero error on a probabilistic Turing machine in polynomial time.
- RP: The complexity class of decision problems that can be solved with 1-sided error on a probabilistic Turing machine in polynomial time.
- BPP: The complexity class of decision problems that can be solved with 2-sided error on a probabilistic Turing machine in polynomial time.
- BQP: The complexity class of decision problems that can be solved with 2-sided error on a quantum Turing machine in polynomial time.
P is the smallest time-complexity class on a deterministic machine which is robust in terms of machine model changes. (For example, a change from a single-tape Turing machine to a multi-tape machine can lead to a quadratic speedup, but any algorithm that runs in polynomial time under one model also does so on the other.) Any given abstract machinewill have a complexity class corresponding to the problems which can be solved in polynomial time on that machine.
复杂度类[编辑]
从多项式时间的概念出发,在计算复杂度理论中可以得到一些复杂度类。以下是一些重要的例子。
- P:包含可以使用确定型图灵机在多项式时间内解决的决定性问题。
- NP:包含可以使用非确定型图灵机在多项式时间内解决的决定性问题。
- ZPP:包含可以使用概率图灵机在多项式时间内零错误解决的决定性问题。
- RP:包含可以使用概率图灵机在多项式时间内解决的决定性问题,但它给出的两种答案中(是或否)只有一种答案是一定正确的,另一种则有几率不正确。
- BPP:包含可以使用概率图灵机在多项式时间内解决的决定性问题,它给出的答案有错误的概率在某个小于0.5的常数之内。
- BQP:包含可以使用量子图灵机在多项式时间内解决的决定性问题,它给出的答案有错误的概率在某个小于0.5的常数之内。
在机器模型可变的情况下,P在确定性机器上是最小的时间复杂度类。例如,将单带图灵机换成多带图灵机可以使算法运行速度以二次阶提升,但所有具有多项式时间的算法依然会以多项式时间运行。一种特定的抽象机器会有自己特定的复杂度类分类。
图灵机(英语:Turing machine),又称确定型图灵机,是英国数学家艾伦·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。
非确定型图灵机和确定型图灵机的不同之处在于,在计算的每一时刻,根据当前状态和读写头所读的符号,机器存在多种状态转移方案,机器将任意地选择其中一种方案继续运作,直到最后停机为止。具体而言,其状态转移函数为
在计算复杂性理论内,概率图灵机是一个非决定型图灵机,在每个转折点根据某种概率分布随机选择某种可行的转变(transition)。
要理解这几个概念,首先要明白几件事:
- 对于NP问题是否存在确定的多项式时间的解,目前还不清楚(即有可能有一天可以证明NP问题=P问题,但目前还证明不出来、也不能证明NP问题≠P问题,目前的结论只是NP问题集⊇P问题集
- 问题之间可以规约,即如果某个NP问题存在确定的多项式时间解,那么另一个NP问题也存在确定的多项式时间解。这个过程是可以证明的、并且已经被证明。
- NP困难问题(NP-hard problems)
- 是指这样的一类问题,它们本身的复杂度是多少无所谓(但由后面的论述可知至少是NP),但是只要这个问题找到确定的多项式时间的解,那么我们可以证明出所有的NP问题都一定存在确定的多项式时间的解。(简单叙述一下就是,只要有一个NP困难问题找到P解,那么所有NP问题都是P问题)
- NP完全问题(NP-complete problems)
- 如果一个问题既是NP困难问题又是NP问题,我们称之为NP完全问题。
最新文章
- gRPC+etcd的优势分析
- 【转】PowerShell 连接SQL Server 数据库 - ADO.NET
- C# ListView 自定义ToolTip 显示
- 快速入门系列--WCF--02消息、会话与服务寄宿
- Audio Session Interruption
- oracle在windows下启动时报错ora-28056
- UESTC 885 方老师买表 --状压DP
- c++基础(二):成员he派生类
- Photoshop:去掉投影
- extjs grid renderer用法【转载】
- (转)javascript中 window.location= window.location;是什么意思
- poj2348(博弈)
- iOS图片缓存框架SDWebImage
- 关于GCD同步组实现多个异步线程的同步执行中的注意点
- php 变量 循环关键词以及方法
- 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】
- 窗口函数解决数据岛问题(mysql暂无窗口函数,可以通过用户变量解决窗口函数问题)
- license
- vmware centos7 网络配置
- LwIP Application Developers Manual3---链路层和网络层协议之ARP,IPV4
热门文章
- 读取Properties文件简易代码
- 2017.9.15 mybatis批量插入后实现主键回填
- 2017.7.1 nginx反向代理服务器域名解析配置(已验证可使用)
- 01.Hello Node.js
- Linux ssh修改文件
- xgboost 特征选择,筛选特征的正要性
- php数组操作,内容相同,键值不同,互换
- Junit内部解密之四: Junit单元测试最佳实践
- TCP粘包处理通用框架--C代码
- Unable to resolve address &;#39; &;#39; service &;#39; &;#39;: Name or service not known