• 算法导论读书笔记(3)


    算法导论读书笔记(3)

    渐近符号

    当输入规模大到使运行时间只和增长的量级有关时,就是在研究算法的 渐近 效率。就是说,从极限角度看,我们只关心算法运行时间如何随着输入规模的无限增长而增长。

    表示算法的渐近运行时间的记号是用定义域为自然数集 N = {0, 1, 2, …} 的函数来定义的。这些记号便于用来表示最坏情况运行时间 T ( n )。

    Θ 记号

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

    对任何一个函数 f ( n ),若存在正常数 c1c2 ,使当 n 充分大时, f ( n )能被夹在 c1 g ( n )和 c2 g ( n )之间,则 f ( n )属于集合 Θ ( g ( n ))。可以写成“ f ( n ) ∈ Θ ( g ( n ))”表示 f ( n )是 Θ ( g ( n ))的元素。不过,通常写成“ f ( n ) = Θ ( g ( n ))”来表示相同的意思。

    上图给出了函数 f ( n )和 g ( n )的直观图示,其中 f ( n ) = Θ ( g ( n ))。对所有位于 n0 右边的 n 值, f ( n )的值落在 c1 g ( n )和 c2 g ( n )之间。换句话说,对所有的 n >= n0f ( n )在一个常数因子范围内与 g ( n )相等。我们说 g ( n )是 f ( n )的一个 渐近确界

    Θ ( g ( n ))的定义要求每个成员 f ( n ) ∈ Θ ( g ( n ))都是 渐近非负 ,就是说当 n 足够大时 f ( n )是非负值。这就要求函数 g ( n )本身也是渐近非负的,否则集合 Θ ( g ( n ))就是空集。

    Θ 记号的效果相当于舍弃了低阶项和忽略了最高阶项的系数。

    O 符号

    Θ 记号渐近地给出了一个函数的上界和下界。当只有 渐近 上界时,使用 O 记号。对一个函数 g ( n ),用 O ( g ( n ))表示一个函数集合:

    上图说明了 O 记号的直观意义。对所有位于 n0 右边的 n 值,函数 f ( n )的值在 g ( n )下。

    Ω 记号

    Ω 记号给出了函数的渐近下界。给定一个函数 g ( n ),用 Ω ( g ( n ))表示一个函数集合:

    上图说明了 Ω 记号的直观意义。对所有在 n0 右边的 n 值,函数 f ( n )的数值等于或大于 c g ( n )。

    定理

    对任意两个函数 f ( n )和 g ( n ), f ( n ) = Θ ( g ( n ))当且仅当 f ( n ) = O ( g ( n ))和 f ( n ) = Ω ( g ( n ))。

    o 记号

    O 记号提供的渐近上界可能是也可能不是渐近紧确的。这里用 o 记号表示非渐近紧确的上界。 o ( g ( n ))的形式定义为集合:

    O 记号与 o 记号的主要区别在于对 f ( n ) = O ( g ( n )),界0 <= f ( n ) <= c g ( n )对某个常数 c > 0成立;但对 f ( n ) = o ( g ( n )),界0 <= f ( n ) <= c g ( n )对所有常数 c > 0都成立。即

    ω 记号

    我们用 ω 记号来表示非渐近紧确的下界。 ω ( g ( n ))的形式定义为集合:

    关系 f ( n ) = ω ( g ( n ))意味着

    如果这个极限存在。也就是说当 n 趋于无穷时, f ( n )相对 g ( n )来说变得任意大了。

    函数间的比较

    f ( n )和 g ( n )是渐近正值函数。

    传递性:
    f ( n ) = Θ ( g ( n ))和 g ( n ) = Θ ( h ( n )) 蕴含 f ( n ) = Θ ( h ( n ))
    f ( n ) = O ( g ( n ))和 g ( n ) = O ( h ( n )) 蕴含 f ( n ) = O ( h ( n ))
    f ( n ) = Ω ( g ( n ))和 g ( n ) = Ω ( h ( n )) 蕴含 f ( n ) = Ω ( h ( n ))
    f ( n ) = o ( g ( n ))和 g ( n ) = o ( h ( n )) 蕴含 f ( n ) = o ( h ( n ))
    f ( n ) = ω ( g ( n ))和 g ( n ) = ω ( h ( n )) 蕴含 f ( n ) = ω ( h ( n ))

    自反性:
    f ( n ) = Θ ( f ( n ))
    f ( n ) = O ( f ( n ))
    f ( n ) = Ω ( f ( n ))

    对称性:
    f ( n ) = Θ ( g ( n ))当且仅当 g ( n ) = Θ ( f ( n ))

    转置对称性:
    f ( n ) = O ( g ( n ))当且仅当 g ( n ) = Ω ( f ( n ))
    f ( n ) = o ( g ( n ))当且仅当 g ( n ) = ω ( f ( n ))

  • 相关阅读:
    python深浅拷贝
    软件开发目录规范
    编码规范
    python进程、线程、协程的介绍及使用
    soket粘包问题及解决方案
    python socket通信
    数据开发_机器学习
    数据开发_开发工具以及工具链
    数据开发_Python读取文件
    数据开发_Java设计模式_IO以及读取资源文件
  • 原文地址:https://www.cnblogs.com/sungoshawk/p/3619780.html
Copyright © 2020-2023  润新知