zoukankan      html  css  js  c++  java
  • 算法导论笔记:03渐进符号

    1:Θ记号:

            对一个给定的函数g(n),用Θ(g(n))来表示以下函数的集合

    Θ(g(n))={f(n):存在正常量c1、c2 和 n0,使得对所有nn0,有0≤c1g(n)≤f(n)≤c2g(n)}

            g(n)是f(n)的一个渐近紧确界(asymptotically tight bound)。

     

    2:O符号

            当只有一个渐近上界时,使用O记号。对于给定的函数g(n),用O(g(n))示以下函数的集合:
    O(g(n))={f(n):存在正常量c和n0,使得对所有n≥n0,有0≤f(n)≤cg(n)}

            当我们说“运行时间为O(n^2)”时,意指存在一个O(n^2)的函数f(n),使得对n的任意值,不管选择什么特定的规模为n的输入,其运行时间的上界都是f(n)。这也就是说最坏情况运行时间为O(n^2)

     

    3:Ω记号

            Ω记号提供了渐近下界。对于给定的函数g(n),用Ω(g(n))来表示以下函数的集合:

    Ω(g(n))={f(n):存在正常量c和n0,使得对所有n≥n0,有0≤cg(n)≤f(n)}

            当称一个算法的运行时间(无修饰语)为Ω(g(n))时,我们意指对每个n值,不管选择什么特定的规模为n的输入,只要n足够大,对那个输入的运行时间至少是g(n)的常量倍。等价地,我们再对一个算法的最好情况运行时间给出一个下界。例如,插入排序的最好情况运行时间为Ω(n),这蕴涵着插入排序的运行时间为Ω(n)。


    4:o记号

            由O记号提供的渐近上界可能是也可能不是渐近紧确的。界2n^2=O(n^2)是渐近紧确的,但是界2n=O(n^2)却不是。我们使用o记号来表示一个非渐近紧确的上界。形式化地定义o(g(n))为以下集合:
    o(g(n))={f(n):对任意正常量c>0,存在常量n0>0,使得对所有n≥n0,有0≤f(n)<cg(n)}。


    5:ω记号

            ω记号与Ω记号的关系类似于o记号与O记号的关系。我们使用ω记号来表示一个非渐近紧确的下界。定义它的一种方式是:f(n)∈ω(g(n))当且仅当g(n)∈o(f(n))

            然而,我们形式化地定义ω(g(n)):为以下集合:

    ω(g(n))={f(n):对任意正常量c>0,存在常量n0>0,使得对所有n≥n0,有0≤cg(n)f(n)}


    6:一般来说,对任意多项式p(n)=,其中为常量且>0,我们有p(n)=Θ(n^d)。

  • 相关阅读:
    Retrofit源码分析
    Android异步消息机制
    崩溃bug日志总结3
    单例模式
    总结(第一段)
    mysql日期类型比较
    mysql记录(一)
    JSONObject/JSONArray的区别
    java 正则表达式(Pattern ,Matcher)的使用
    javaweb开发中的权限管理的方法
  • 原文地址:https://www.cnblogs.com/gqtcgq/p/7247245.html
Copyright © 2011-2022 走看看