算法复杂性分析
㈠ 计算复杂性包括什么
计算复杂性理论(Computational complexity theory)是理论计算机科学和数学的一个分支,它致力于将可计算问题根据它们本身的复杂性分类,以及将这些类别联系起来。一个可计算问题被认为是一个原则上可以用计算机解决的问题,亦即这个问题可以用一系列机械的数学步骤解决,例如算法。 如果一个问题的求解需要相当多的资源(无论用什么算法),则被认为是难解的。计算复杂性理论通过引入数学计算模型来研究这些问题以及定量计算解决问题所需的资源(时间和空间),从而将资源的确定方法正式化了。其他复杂性测度同样被运用,比如通信量(应用于通信复杂性),电路中门的数量(应用于电路复杂性)以及中央处理器的数量(应用于并行计算)。计算复杂性理论的一个作用就是确定一个能或不能被计算机求解的问题的所具有的实际限制。 在理论计算机科学领域,与此相关的概念有算法分析和可计算性理论。两者之间一个关键的区别是前者致力于分析用一个确定的算法来求解一个问题所需的资源量,而后者则是在更广泛意义上研究用所有可能的算法来解决相同问题。更精确地说,它尝试将问题分成能或不能在现有的适当受限的资源条件下解决这两类。相应地,在现有资源条件下的限制正是区分计算复杂性理论和可计算性理论的一个重要指标:后者关心的是何种问题原则上可以用算法解决。
简介
计算复杂性理论所研究的资源中最常见的是时间(要通过多少步演算才能解决问题)和空间(在解决问题时需要多少内存)。其他资源亦可考虑,例如在并行计算中,需要多少并行处理器才能解决问题。
时间复杂度是指在计算机科学与工程领域完成一个算法所需要的时间,是衡量一个算法优劣的重要参数。时间复杂度越小,说明该算法效率越高,则该算法越有价值。
空间复杂度是指计算机科学领域完成一个算法所需要占用的存储空间,一般是输入参数的函数。它是算法优劣的重要度量指标,一般来说,空间复杂度越小,算法越好。我们假设有一个图灵机来解决某一类语言的某一问题,设有个字(word)属于这个问题,把放入这个图灵机的输入端,这个图灵机为解决此问题所需要的工作带格子数总和称为空间。
复杂度理论和可计算性理论不同,可计算性理论的重心在于问题能否解决,不管需要多少资源。而复杂性理论作为计算理论的分支,某种程度上被认为和算法理论是一种“矛”与“盾”的关系,即算法理论专注于设计有效的算法,而复杂性理论专注于理解为什么对于某类问题,不存在有效的算法
㈡ 名词解释——算法的复杂性
算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。
㈢ 算法的复杂性分析包括哪些内容
在算法的复杂性表示中,O记号表示复杂度的上限。
即:O(g(n)) =
单向链表没有指向前节点的指针,必须从头指针开始遍历到p的前节点,最坏的情况为p指向的是链表的尾节点,应此为O(n)。
㈣ 如何分析算法的复杂度
算法的复杂性
算法的复杂性是算法效率度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。
计算机的资源,最重要的是时间和空间(即存储器)资源。因而,算法的复杂性有时间复杂性和空间复杂性之分。
不言而喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。
简言之,在算法学习过程中,我们必须首先学会对算法的分析,以确定或判断算法的优劣。
1.时间复杂性:
例1:设一程序段如下(为讨论方便,每行前加一行号)
(1) for i:=1 to n do
(2) for j:=1 to n do
(3) x:=x+1
......
试问在程序运行中各步执行的次数各为多少?
解答:
行号 次数(频度)
(1) n+1
(2) n*(n+1)
(3) n*n
可见,这段程序总的执行次数是:f(n)=2n2+2n+1。在这里,n可以表示问题的规模,当n趋向无穷大时,如果 f(n)的值很小,则算法优。作为初学者,我们可以用f(n)的数量级O来粗略地判断算法的时间复杂性,如上例中的时间复杂性可粗略地表示为T(n)=O(n2)。
㈤ 算法在最坏情况,最好情况和平均情况下的计算复杂性概念及对三者时间复杂性的分析
计算复杂性目前主要用计算所消耗的资源数量来量度。由于算法在计算时所消耗的资源与问题规模有关,所以通常用递增函数来估计。另外,对具体问题实例,算法的资源消耗量是不同的,通常可以估计出最坏、最好和平均三种情形下对资源消耗的数量。对上述三者作时间复杂性分析的具体做法如下:以顺序查找为例,最坏情况是指需要搜索完所有的数据;最好情况是指搜索的第一个数据就是所要的数据;平均情况是指所获得的数据按其实际分布而言,平均需要查找比较的次数。
㈥ 算法复杂度分析
时间复杂度:O(n*2^k)
空间复杂度不多说了
循环体执行次数:
㈦ 计算机最重要的资源是什么算法的复杂性主要分析什么的耗费
最重要的资源当然是内存空间了,算法的复杂性分为时间复杂性和空间复杂性,时间复杂性分析算法的完成需要什么多少时间,和问题的规模有关系;空间复杂性分析的是对计算机存储资源的耗费,当然也就是前面说的内存了