【算法设计】第2章 分析基础

增长的记号: O渐近上界,o f比g低阶,Ω渐近下界,ω f比g高阶,Θ渐近紧界

【算法设计】第2章 分析基础_第1张图片

算法效率评价的指标:

算法对计算机资源的使用:

        1.计算资源(时间)

                【算法设计】第2章 分析基础_第2张图片

         2.存储资源(内存)

                【算法设计】第2章 分析基础_第3张图片

 计算机资源的计量方法:

设输入数据/问题规模为n。假设算法要用到:

  1. (1)m元运算;
  2. (2)每种元运算执行的时间t1,t2,…,tm
  3. (3)每种元运算执行的次数为e1,e2,…,em
  4. (4)元运算与问题规模的关系:ei (n)1≤i≤m

qwl:

问题:

 【算法设计】第2章 分析基础_第4张图片

 

 算法:
【算法设计】第2章 分析基础_第5张图片

【算法设计】第2章 分析基础_第6张图片

  • 算法时间复杂度:针对指定基本运算,计数算法所做运算次数。
  • 基本运算:比较,加法,乘法,置指针,交换。
  • 输入规模:输入串编码长度。常用下述参数度量:数组元素多少,调度问题的任务个数,图的顶点数与边数。
  • 算法基本运算次数 可表为 输入规模的函数。
  • 给定问题和基本运算就决定了一个算法类。

输入规模:
【算法设计】第2章 分析基础_第7张图片

 基本运算:
【算法设计】第2章 分析基础_第8张图片​​​​​​

 算法的两种时间复杂度:
【算法设计】第2章 分析基础_第9张图片

 【算法设计】第2章 分析基础_第10张图片

 

若用T(n)表示时间复杂度,则有 时间复杂度 = m种元运算的 执行时间*执行次数  的和

【算法设计】第2章 分析基础_第11张图片

数学基础:

函数的渐近的界

问题规模:T(n)

渐近态:T'(n)

增长的阶:

描述算法的效率——增长率。

忽略低阶项,保留最高阶项。

忽略常系数。

利用O(n^2)表示插入排序的最坏运行时间。——表示增长率和n^2相同

渐进效率:

  •         输入规模非常大
  •         忽略低阶项和常系数
  •         只考虑最高阶(增长的阶)
定义2.1 f g 是定义域为自然数集N上的函数。
(1) c>0 n 0 >0 使得所有 n  ≥ n0   , 0 ≤ f(n)  ≤ c*g (n )成立, 则称 f(n) 渐近上界 g(n), 记作 : f(n)=Ο(g(n))
(2) c>0 n 0 >0 使得所有的n  ≥ n0   , 0 ≤ c*g(n) ≤ f(n) ,则 称 f(n) 渐近下界 g(n), 记作 : f(n)=Ω(g(n))
  • 描述运行时间的最好情况。---最小,最起码。
  • 对所有输入都正确。
    • 【算法设计】第2章 分析基础_第12张图片
  • 可以用来描述问题
    • 如,排序问题的时间复杂性是Ω(n)

(3) 若对于 c>0 都存在非负整数 n 0 , 使得当 n≥ n 0 时有0 ≤ f(n) < c*g (n) 成立,则称函数 f(n) n 充分大时, g(n)低阶,记为 f(n)=o(g(n))
(4) c>0 都存在 n 0 >0 ,使得当n≥ n0时有0 ≤ c*g (n ) ≤ f(n)  成立,则称函数f(n) g(n) 高阶,记为 f(n)=ω(g(n))
(5) f(n)=Ο(g(n)) f(n)=Ω(g(n))时,则记 f(n) = Θ(g (n )), 称g(n) f(n) 渐近的紧的界 f(n) g(n)同阶。   c 2 g(n)≤f(n)≤c 1 g(n)

【例 2-2】设有函数 f(n)=n** 2 +3n+1,当n足够大时,试证明下述内容:
(1) f(n)=O(n 2 ) f(n)=O(n 3 ) 成立;
(2) f(n)=o(n 2 ) 不成立。
证明:
(1) f(n)=n** 2 +3n+1< n** 2 +3n** 2 +n** 2 =5n** 2 则存在 c=5 使得当 n≥1时, f(n)=O(n** 2 ) 成立。
又因为 5n** 2 ≤5n** 3 ,所以,存在 c=5 使得当 n≥1 时, f(n)=O(n** 3 ) 成立。
(2) 要使 n** 2 +3n+1 2 就要使 1+3/n+1/n 2 <1 ,显然这不成立。
也就是说,找不到一个 n 0 ,当 n≥n 0 c为任意小时,使得 f(n)=o(n 2 ) 成立。
【算法设计】第2章 分析基础_第13张图片

【算法设计】第2章 分析基础_第14张图片

定理 2.1( 传递性 ) f g h 是定义域为自然数集合,
如果 f=O(g) g=O(h) ,那么 f=O(h)
如果 f=Ω(g) g=Ω(h) ,那么 f=Ω(h)
如果 f=Θ(g) g=Θ(h) ,那么 f=Θ(h)
定理 2.2 f=O(h) g=O(h) ,那么 f+g=O(h)
【算法设计】第2章 分析基础_第15张图片

【算法设计】第2章 分析基础_第16张图片

利用极限求函数渐近的界

【算法设计】第2章 分析基础_第17张图片

 【算法设计】第2章 分析基础_第18张图片

 【算法设计】第2章 分析基础_第19张图片

 【算法设计】第2章 分析基础_第20张图片

 【算法设计】第2章 分析基础_第21张图片

有用的求和级数及推导方法:

【算法设计】第2章 分析基础_第22张图片

 【算法设计】第2章 分析基础_第23张图片

 【算法设计】第2章 分析基础_第24张图片

基本效率类型

【算法设计】第2章 分析基础_第25张图片

你可能感兴趣的:(算法,算法)