算法相关概念

计算复杂性理论:是理论计算机科学和数学的一个分支,它致力于将可计算问题根据它们本身的复杂性分类,以及将这些类别联系起来。一个可计算问题被认为是一个原则上可以用计算机解决的问题,亦即这个问题可以用一系列机械的数学步骤解决,例如算法。
复杂性类:复杂性类使得我们可以忽略多项式阶的不同而专注于多项式时间和指数时间的差别
P:“在确定性图灵机上有多项式时间算法的问题”的集合。可以在决定型依序机器上(例如图灵机)以多项式时间解决的决定性问题,其属于的复杂度类被称为P。
NP:“在非确定性图灵机上有多项式时间算法的问题”的集合。可以在多项式时间验证答案的决定性问题称为NP。
参考:维基百科-计算复杂性理论
多项式时间:在计算复杂度理论中,指的是一个问题的计算时间 m ( n ) 不大于问题大小n的多项式倍数。以数学描述的话,则可说 m ( n ) = O ( n k ) ,此 k 为一常数值(依问题而定)。包括:
- 常数时间: O ( 1 )
- 线性时间: O ( n )
- 平方时间: O ( n 2 )
- 立方时间: O ( n 3 )
- O ( n l o g ( n ) )
常数时间:在计算复杂度理论中,常量时间是一种时间复杂度,它表示某个算法求出解答的时间在固定范围内,而不依照问题输入数据大小变化。常量时间记为 O ( 1 ) (采用大O符号)。数字 1 可以替换为任意常数。
线性时间:在计算复杂性理论,一个被称为线性时间或 Ο(n)时间的算法,表示此算法解题所需时间与输入资料的大小成正比,通常以n表示。换句话说,执行时间与输入资料大小为线性比例。例如将一列数字加总的所需时间,正比于串列的长度。
参考:维基百科-多项式时间
指数时间:在计算复杂度理论中,指数时间指的是一个问题求解所需要的计算时间 m ( n ) ,依输入数据的大小 n 而呈指数成长(即输入数据的数量依线性成长,所花的时间将会以指数成长)。
参考:维基百科-指数时间
计算机科学家认为多项式时间是快的,而其他类型的计算时间是慢的。指数时间因此被认为是慢的类型。有很多算法计算时间慢过多项式时间,因此被称为超多项式时间,但又快过指数时间,也因此又被称为次指数时间,它们也被认为是慢的算法。
对于“NP难问题”的理解

猜你喜欢

转载自blog.csdn.net/famirtse/article/details/80236153