当前位置:文档之家› 《算法设计与分析》(全)

《算法设计与分析》(全)

巢湖学院计算机科学与技术系
1.1、算法与程序
程序:是算法用某种程序设计语言的具体实现。 程序可以不满足算法的性质(4)。 例如操作系统,是一个在无限循环中执行的程序, 因而不是一个算法。 操作系统的各种任务可看成是单独的问题,每一个 问题由操作系统中的一个子程序通过特定的算法来实 现。该子程序得到输出结果后便终止。
渐近分析记号的若干性质
(1)传递性: ➢ 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)); (2)反身性: ➢ f(n)= (f(n));f(n)= O(f(n));f(n)= (f(n)). (3)对称性: ➢ f(n)= (g(n)) g(n)= (f(n)) . (4)互对称性: ➢ f(n)= O(g(n)) g(n)= (f(n)) ; ➢ f(n)= o(g(n)) g(n)= (f(n)) ;
巢湖学院计算机科学与技术系
渐近分析记号的若干性质
规则O(f(n))+O(g(n)) = O(max{f(n),g(n)}) 的证明: ➢ 对于任意f1(n) O(f(n)) ,存在正常数c1和自然数n1,使得对
所有n n1,有f1(n) c1f(n) 。 ➢ 类似地,对于任意g1(n) O(g(n)) ,存在正常数c2和自然数
巢湖学院计算机科学与技术系
第1章 算法引论
本章主要知识点:
1.1 算法与程序 1.2 表达算法的抽象机制 1.3 描述算法 1.4 算法复杂性分析
巢湖学院计算机科学与技术系
1.1、算法与程序
算法:是指解决问题的一种方法或一个过程,在计算 机领域是指满足下述性质的指令序列。 (1)输入:有外部提供的量作为算法的输入。 (2)输出:算法产生至少一个量作为输出。 (3)确定性:组成算法的每条指令是清晰,无歧义的。 (4)有限性:算法中每条指令的执行次数是有限的,执 行每条指令的时间也是有限的。
巢湖学院计算机科学与技术系
1.3、算法复杂性分析
算法复杂性是算法运行所需要的计算机资源的量,需要时 间资源的量称为时间复杂性T(N) ,需要的空间资源的量称为空 间复杂性S(N) 。这个量应该只依赖于算法要解的问题的规模、 算法的输入和算法本身的函数。如果分别用N、I和A表示算法 要解问题的规模、算法的输入和算法本身,而且用C表示复杂 性,那么,应该有C=F(N,I,A)。
一般把时间复杂性和空间复杂性分开,分别用T和S来表示 则有: T=T(N,I)和S=S(N,I) 。
(通常,让A隐含在复杂性函数名当中)
巢湖学院计算机科学与技术系
1.3、算法复杂性分析
最坏情况下的时间复杂性:
k
k
Tmax
(N)
max IDN
T(N,I)
max
ID N
tiei (N, I)
i 1
巢湖学院计算机科学与技术系
1.3、算法复杂性分析
(2)渐近下界Ω的定义:如果存在正的常数C和自然数N0,使得 当NN0时有f(N)Cg(N),则称函数f(N)当N充分大时下有界,且 g(N)是它的一个下界,记为f(N)=Ω(g(N))。即f(N)的阶不低于g(N) 的阶。 (3)同阶的定义:定义f(N)= (g(N))当且仅当f(N)=O(g(N))且 f(N)= Ω(g(N)),即(g(n)) = { f(n) | 存在正常数c1,c2和正整数n0使 得对所有n n0有:c1g(n) f(n) c2g(n) },此时称f(N)与g(N)同阶。 定理1: (g(n)) = O (g(n)) (g(n))
n2,使得对所有n n2,有g1(n) c2g(n) 。 ➢ 令c3=max{c1, c2}, n3 =max{n1, n2},h(n)= max{f(n),g(n)} 。 ➢ 则对所有的 n n3,有
f1(n) +g1(n) c1f(n) + c2g(n) c3f(n) + c3g(n)= c3(f(n) + g(n)) c32 max{f(n),g(n)} = 2c3h(n) = O(max{f(n),g(n)}) .
巢湖学院计算机科学与技术系
算法渐近复杂性分析中常用函数
(4)指数函数
对于正整数m,n和实数a>0:
a0=1; a1=a ; a-1=1/a ;
(am)n = amn ; (am)n = (an)m ; aman = am+n ;
a>1 an为单调递增函数;
a>1
lim
n
nb an
0
nb = o(an)
巢湖学院计算机科学与技术系
算法渐近复杂性分析中常用函数
(3)多项式函数
p(n)= a0+a1n+a2n2+…+adnd; ad>0; p(n) = (nd); f(n) = O(nk) f(n)多项式有界; f(n) = O(1) f(n) c; k d p(n) = O(nk) ; k d p(n) = (nk) ; k > d p(n) = o(nk) ; k < d p(n) = (nk) .
巢湖学院计算机科学与技术系
渐近分析中函数比较
➢ f(n)= O(g(n)) a b; ➢ f(n)= (g(n)) a b; ➢ f(n)= (g(n)) a = b; ➢ f(n)= o(g(n)) a < b; ➢ f(n)= (g(n)) a > b;
巢湖学院计算机科学与技术系
巢湖学院计算机科学与技术系
渐近分析记号的若干性质 (5)算术运算: ➢ O(f(n))+O(g(n)) = O(max{f(n),g(n)}) ; ➢ O(f(n))+O(g(n)) = O(f(n)+g(n)) ; ➢ O(f(n))*O(g(n)) = O(f(n)*g(n)) ; ➢ O(cf(n)) = O(f(n)) ; ➢ g(n)= O(f(n)) O(f(n))+O(g(n)) = O(f(n)) 。
(3)高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而 所写出来的程序可植性好、重用率高; (4)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短, 程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。
巢湖学院计算机科学与技术系
1.2、表达算法的抽象机制
2.抽象数据类型
巢湖学院计算机科学与技术系
取整函数的若干性质 x-1 < x x x < x+1; n/2 + n/2 = n; 对于n 0,a,b是大于0的整数,有: n/a /b = n/ab ; n/a /b = n/ab ; a/b (a+(b-1))/b; a/b (a-(b-1))/b; f(x)= x , g(x)= x 为单调递增函数。
中国计算机学会 21世纪大学本科计算机专业系列教材
《算法设计与分析》
王晓东 编著
主要内容介绍
第1章、算法引论 第2章、递归与分治策略 第3章、动态规划 第4章、贪心算法 第5章、回溯法 第6章、分支限界法 第7章、概率算法 第8章、NP完全性理论 第9章、近似算法 第10章、算法优化策略
(1)渐近上界O的定义:如果存在正的常数C和自然数N0,使得 当NN0时有f(N)Cg(N),则称函数f(N)当N充分大时上有界,且 g(N)是它的一个上界,记为f(N)=O(g(N))。即f(N)的阶不高于g(N) 的阶。 根据O的定义,容易证明它有如下运算规则:
(1)O(f)+O(g)=O(max(f,g)); (2)O(f)+O(g)=O(f+g); (3)O(f)O(g)=O(f*g); (4)如果g(N)=O(f(N)),则O(f)+O(g)=O(f); (5)O(Cf(N))=O(f(N)),其中C是一个正的常数; (6)f=O(f)。
ex 1 x x2 x3
xi ;
2! 3!
i0 i!
ex 1 x;
| x | 1 1 x ex 1 x x2;
ex 1 x Θ(x2 ),asx 0;
巢湖学数
抽象数据类型是算法的一个数据模型连同定义在该模型上,并 作为算法构件的一组运算。
抽象数据类型带给算法设计的好处有:
(1)算法顶层设计与底层实现分离; (2)算法设计与数据结构设计隔开,允许数据结构自由选择; (3)数据模型和该模型上的运算统一在ADT中,便于空间和时间耗费的折衷; (4)用抽象数据类型表述的算法具有很好的可维护性; (5)算法自然呈现模块化; (6)为自顶向下逐步求精和模块化提供有效途径和工具; (7)算法结构清晰,层次分明,便于算法正确性的证明和复杂性的分析。
巢湖学院计算机科学与技术系
算法渐近复杂性分析中常用函数
(1)单调函数 单调递增:m n f(m) f(n) ; 单调递减:m n f(m) f(n); 严格单调递增:m < n f(m) < f(n); 严格单调递减:m < n f(m) > f(n). (2)取整函数 x :不大于x的最大整数; x :不小于x的最小整数;
tiei(N,I* )
i1
T(N,I*)
最好情况下的时间复杂性:
Tmin(N)
min
IDN
T(N, I)
min
ID N
k
tiei (N, I)
i 1
k tiei (N, ~I )
相关主题