渐进最优性

作用:

渐进最优是用以评价算法的效率

定义:

如果已经证实一个问题需要使用Ω(f(n))的资源来解决,而某个算法用O(f(n))的资源来解决这个问题,则该算法就是渐进最优的。

解释:

(1) O符号表示函数在增长到一定程度时总小于一个特定函数的常数倍,大Ω符号则表示总大于。

(2) 用数学语言描述即是:

f(ν)=Ω[g(ν)]{\displaystyle f(\nu )=\Omega [g(\nu )]}的含义为:

若存在x1,κ{\displaystyle x_{1},\kappa } 使得:对于所有x>x1,f(x)>κg(x){\displaystyle \forall x>x_{1},f(x)>\kappa g(x)}.

(3) 大Ω符号与大O符号正好相反,即:

{f(ν)=O[g(ν)]g(ν)=Ω[f(ν)]{\displaystyle {\begin{cases}f(\nu )=\mathrm {O} [g(\nu )]\\g(\nu )=\Omega [f(\nu )]\end{cases}}}

渐进最优的例子包括数据结构动态数组[1],能够在常数时间内索引,但性能在多数机器上不如普通数组的索引。另外,在所有基于比较的排序算法中,归并排序和堆排序是渐进最优的,说到渐进这些算法是依赖于n的,并且忽略常数因子,这些算法随n的递增趋于最优。所以在基于比较的排序算法中,它们都是渐进最优的,它们只比较较少的次数,它们的运行时间主要受比较次数的影响,都是O(nlgn)。

参考文献:

[1] 维基百科-渐进最优
[2] 维基百科-Ω符号

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章