知识大全

知识大全

这个关于阶的估计大O符号的关系对吗?

HUBERT

这个关于阶的估计大O符号的关系对吗?

大O符号的常用的函数阶

下面是在分析算法的时候常见的函数分类列表。所有这些函数都处于 n 趋近于无穷大的情况下,增长得慢的函数列在上面。 c 是一个任意常数。 符号 名称 O(1) 常数(阶,下同) O(log*n) 迭代对数 O(log n) 对数 O[(log n)^c] 多对数 O(n) 线性,次线性 O(n log n) 线性对数,或对数线性、拟线性、超线性 O(n^2) 平方 O(n^c),Integer(c>1) 多项式,有时叫作“代数”(阶) O(c^n) 指数,有时叫作“几何”(阶) O(n!) 阶乘,有时叫做“组合”(阶)

为什么见周围人描述算法复杂度都用大 O 符号而不是大 Θ

因为更多时候复杂度都是一个上限值,比如说冒泡排序,O(n^2),但细心的你会发现在优化算法并给入特定输入参数的时候,该排序的复杂度可以达到O(n).

详见《算法导论》第三版(机械工业出版社),第27页O记号。

算法中描述复杂度的大O是什么意思

在“计算机算法复杂性分析”课程中,通常使用大 O 符号表述时间复杂度。常见的有:(1)、O(n²):表示当 n 呈线性增长时,计算量按 n² 规律增大。该种算法是效率最低的一种。

(2)、再例如:要在一个大小为 n 的整数数组中,找到一个该数组里面的最大的一个整数,因此你需要把 n 个整数都扫描一遍,操作次数为 n,那么该时间复杂度就是O(n)。

有了解大O符号(big-Onotation)的吗?能给出不同数据结构的例子么?

大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好。

大O符号也可用来描述其他的行为,比如:内存消耗。因为集合类实际上是数据结构,一般使用大O符号基于时间,内存和性能来选择最好的实现。大O符号可以对大量数据的性能给出一个很好的说明。

大O表示法的简介

渐进分析法最常用的表示方法是用于描述函数渐近行为的数学符号,更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。大O符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》(Analytische Zahlentheorie)首先引入的。

我们常用大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。

通常我们需要一种方法来对不同的算法来进行比较,一般来说,解决同样的问题有多种算法,那么在不同的客观条件下如何对不同的算法进行取舍呢?

标签: 符号 高等数学 数学分析