算法分析(2)
电子科技大学研究生算法设计与分析拟考题及答案评分细则 (2)

一、Please answer T or F for each of the following statements to indicate whether thestatement is true or false1. An algorithm is an instance, or concrete representation, for a computer programin some programming language. ( F )2. The following problem is a Decision Problem: What is the value of a bestpossible solution? ( F )3. The dynamic programming method can not solve a problem in polynomial time.( F)4. Assume that there is a polynomial reduction from problem A to problem B. Ifwe can prove that A is NP-hard, then we know that B is NP-hard. ( F )5. If one can give a polynomial-time algorithm for a problem in NP, then all theproblems NP can be solved in polynomial time. ( F )6. In an undirected graph, the minimum cut between any two vertices a and b isunique. ( F)7. Linear programming can be solved in polynomial time, but integer linearprogramming can not be solved in polynomial time. ( T )8. We can solve the maximum independent set problem in a graph with at most100 vertices in polynomial time. ( T ) 结论9. If an algorithm solves a problem of size n by dividing it into two subproblems ofsize n/2, recursively solving each subproblems, and then combine the solutions in linear time. Then the algorithm runs in O(n log n) time. ( T )10. Neural Computation, Fuzzy Computation and Evolution Computing are thethree research fields of Computational Intelligence. ( T )二、Given the following seven functions f1(n) = n5+ 10n4, f2(n) = n2+ 3n, f3(n) =f4(n) = log n + (2log n)3, f5(n) = 2n+n!+ 5e n, f6(n) = 3log(2n) + 5log n, f7(n) = 2n log n+log n n. Please answer the questions:第 1 页共5 页(a) Give the tight asymptotic growth rate (asymptotic expression with θ) to eachof them; (7分)(b) Arrange them in ascending order of asymptotic growth rate。
13算法案例(二)

v5=v4x+7=534×5+7=2677
例1:用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值. 解法一:首先将原多项式改写成如下形式 : f(x)=((((2x-5)x-4)x+3)x-6)x+7 然后由内向外逐层计算一次多项式的值,即
v0=2
v1=v0x-5=2×5-5=5
例2:把89化为二进制的数. 我们可以用下面的除法算式表示除2取余法: 余数 1 0 0 1 1 0 1
2 89 2 44 2 22 2 11 2 5 2 2 21 0
把算式中各步所得的余数 从下到上排列,得到 89=1011001(2).
这种方法也可以推广为把 十进制数化为k进制数的 算法,称为除k取余法.
二进制:可使用的数字有0和1,基数是2;
十进制:可使用的数字有0,1,2,…,8,9等十个数字, 基数是10; 注意:为了区分不同的进位制,常在数字的右 下脚标明基数,. 如111001(2)表示 ? 进制数,34(5)表示?进制数. 十进制数一般不标注基数.
练习.下列有可能是 4 进制数的是( A.5 123 C.3 103
3 -6 0 605 3040 15170 608 3034 15170 所以,当x=5时,多项式的值是15170. 注意:n次多项式有n+1项,因此缺少哪一项 应将其系数补0. 列表 2 x=5 2 -5 10 5 0 -4 25 125 25 121
一般地,对于一个n次多项式 f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0. 我们可以改写成如下形式: f(x)=(…(anx+an-1)x+an-2)x+…+a1)x+a0. 求多项式的值时,首先计算最内层括号内一 次多项式的值,即 v1=anx+an-1,
第二章算法效率分析基础

414
基本的效率类型
•常量(1)、对数(logn)、线性 (n)、nlogn、平方(n2)、立 方(n3)、指数(2n)、阶乘(n!)
515
非递归算法的数学分析
Example 1:讨论下面这个算法(从n个元 素中查找最大元素问题)的效率。
•算法 MaxElement(A[0..n-1]
•//求给定数组中的最大元素 •//输入:实数数组A[0..n-1] •//输出:A中的最大元素
•maxval A[0] •for i 1 to n-1 do • if A[i] > maxval • maxval A[i] •return maxval
• 考虑: 1. 循环中的操作有比较和赋值,取
哪一个作为基本操作? 2. 输入规模是多少?
•基本操作为:比较运算 •输入规模就是数组长度n •算法的效率为:
记为t(n) ∈ Θ(g(n))
•n2+3n+2∈Θ (n2) •n(n-1)/2∈Θ (n2) •4n2+5 ∈Θ (n2)
212
渐进符号的有用特性
定理 如果t1(n) ∈O(g1(n))并且t2(n) ∈O(g2(n)),则 t1(n)+ t2(n) ∈O(max{(g1(n), g2(n)})
99
符号O
定义1 对于足够大的n,t(n)的上界由g(n)的常数倍来确定 ,即:
•t(n) ≤ cg(n),c为常数 记为t(n) ∈O(g(n))
•n ∈O(n2) •100n+5 ∈O(n2) •n(n-1)/2 ∈O(n2)
010
符号Ω
定义2 对于足够大的n,t(n)的下界由g(n)的常数倍来确定 ,即:
818
算法分析(第二版)清华大学出版社 部分习题的参考答案

5.中断、篡改、伪造6.公开密钥
7.链路、端到端8.管理信息库、管理信息结构、管理协议
9.公开密钥密码技术10.身份验证、加密、访问控制
二、选择题
1. C2. C3. D4. D5. D
6. C7. B8. D9. D10. C
网桥1转发表网桥2转发表网桥1网桥2站地址端口站地址端口mac11向端口2转发该帧将mac1端口1登记到转发表mac32mac31向端口1转发该帧将mac3端口2登记到转发表向端口2转发该帧将mac3端口1登记到转发表mac42从转发表中查到目的端口是1向端口1转发该帧将mac4端口2登记到转发表mac21将该帧丢弃同时将mac2端口1登记到转发表第5章一填空题1
MAC4
2
从转发表中查到目的端口是1向端口1转发该帧,将(MAC4,端口2)登记到转发表
MAC2
1
将该帧丢弃,同时将(MAC2,端口1)登记到转发表
第5章
一、填空题
1.ARP、IGMP2.128.11、3.11
3.路由、建立虚电路、路由算法4.泛射路由选择、固定路由选择和随机路由选择
5.IP数据报6.ARP
1.应用进程2.客户/服务器
6.字符代码、数字代码
7.www服务器、www浏览器8.ASCII传输模、二进制数字传输模式
9.A记录、CNAME记录、MX记录10.SMTP
二、选择题
1. D2. C3. B4. A5. B
6. C7. C8. B9. A
2.网络的拓扑结构表示网络传输介质和结点的连接形式,通常有总线型、环形、星形和树形。
3.OSI将整个网络通信的功能划分为七个层次,由低到高分别是物理层、链路层、网络层、传输层、会话层、表示层和应用层。
算法设计与分析(第2版)

出版工作
2018年8月1日,该教材由清华大学出版社出版。
内容简介
内容简介
全书由12章构成,各章的内容如下。
第1章概论:介绍算法的概念、算法分析方法和STL在算法设计中的应用。
教材目录
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
教学资源
该教材配有配套教材——《算法设计与分析(第2版)学习与实验指导》,该配套教材涵盖所有练习题、上 机实验题和在线编程题的参考答案。
该教材每个知识点都配套了视频讲解,提供PPT课件、源码、答案、教学大纲、题库、书中全部源程序代码 (在VC++6.0中调试通过)等教学资源。
算法设计与分析(第2版)
20xx年清华大学出版社出版的图书
01 成书过程
03 教材目录源 06 作者简介
基本信息
《算法设计与分析(第2版)》是由李春葆主编,2018年清华大学出版社出版的高等学校数据结构课程系列 教材。该教材适合作为高等院校“算法设计与分析”课程的教材,也可供ACM和各类程序设计竞赛者参考。
第5章回溯法:介绍解空间概念和回溯法算法框架,讨论采用回溯法求解0/1背包问题、装载问题、子集和问 题、n皇后问题、图的m着色问题、任务分配问题、活动安排问题和流水作业调度问题的典型算法。
第6章分枝限界法:介绍分枝限界法的特点和算法框架、队列式分枝限界法和优先队列式分枝限界法,讨论 采用分枝限界法求解0/1背包问题、图的单源最短路径、任务分配问题和流水作业调度问题的典型算法。
该教材介绍了各种常用的算法设计策略,包括递归、分治法、蛮力法、回溯法、分枝限界法、贪心法、动态 规划、概率算法和近似算法等,并讨论了各种图算法和计算几何设计算法。书中配有图表、练习题、上机实验题 和在线编程题。
算法之2章递归与分治

算法分析(第二章):递归与分治法一、递归的概念知识再现:等比数列求和公式:1、定义:直接或间接地调用自身的算法称为递归算法。
用函数自身给出定义的函数称为递归函数。
2、与分治法的关系:由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。
在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。
这自然导致递归过程的产生。
分治与递归经常同时应用在算法设计之中,并由此产生许多高效算法。
3、递推方程:(1)定义:设序列01,....na a a简记为{na},把n a与某些个()ia i n<联系起来的等式叫做关于该序列的递推方程。
(2)求解:给定关于序列{n a}的递推方程和若干初值,计算n a。
4、应用:阶乘函数、Fibonacci数列、Hanoi塔问题、插入排序5、优缺点:优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。
缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。
二、递归算法改进:1、迭代法:(1)不断用递推方程的右部替代左部(2)每一次替换,随着n的降低在和式中多出一项(3)直到出现初值以后停止迭代(4)将初值代入并对和式求和(5)可用数学归纳法验证解的正确性2、举例:-----------Hanoi塔算法----------- ---------------插入排序算法----------- ()2(1)1(1)1T n T nT=−+=()(1)1W n W n nW=−+−(1)=021n-23()2(1)12[2(2)1]12(2)21...2++2 (121)n n n T n T n T n T n T −−=−+=−++=−++==++=−(1)2 ()(1)1((n-2)+11)1(2)(2)(1)...(1)12...(2)(1)(1)/2W n W n n W n n W n n n W n n n n =−+−=−−+−=−+−+−==++++−+−=−3、换元迭代:(1)将对n 的递推式换成对其他变元k 的递推式 (2)对k 进行迭代(3)将解(关于k 的函数)转换成关于n 的函数4、举例:---------------二分归并排序---------------()2(/2)1W n W n n W =+−(1)=0(1)换元:假设2kn =,递推方程如下()2(/2)1W n W n n W =+−(1)=0 → 1(2)2(2)21k k k W W W−=+−(0)=0(2)迭代求解:12122222321332133212()2(2)212(2(2)21)212(2)22212(2)2*2212(2(2)21)2212(2)222212(2)3*2221...2(0)*2(22...21)22k k k k k k k k k k k k k k k k k k k k k k k k W n W W W W W W W W k k −−−−−−−+−+−−−=+−=+−+−=+−+−=+−−=+−+−−=+−+−−=+−−−==+−++++=−1log 1n n n +=−+(3)解的正确性—归纳验证: 证明递推方程的解是()(1)/2W n n n =−()(1)1W n W n n W =−+−(1)=0,(n 1)=n +n=n(n-1)/2+n =n[(n-1)/2+1]=n(n+1)/2n W W +方法:数学归纳法证 n=1,W(1)=1*(1-1)/2=0假设对于解满足方程,则()---------------快速排序--------------------->>>平均工作量:假设首元素排好序在每个位置是等概率的112()()()(1)0n i T n T i O n n T −==+=∑ >>>对于高阶方程应该先化简,然后迭代(1)差消化简:利用两个方程相减,将右边的项尽可能消去,以达到降阶的目的。
算法-第2章-算法效率分析基础

The Big-O and Related Notations
2.2.7 基本的效率类型
1 log n n n log n n2 n3 2n n! constant logarithmic linear n log n quadratic cubic exponential factorial
思考
2.2.2 符号О
定义1 我们把函数t(n)属于O(g(n)) ,记作t(n) ∈ O(g(n)) ; 它的成立条件是:对于所有足够大的n, t(n) 的上界由g(n) 的常数倍数所确定,也就是说,存在大于0的常数c和非负 的整数n0,使得: 对于所有的n≥ n0来说, t(n) ≤c g(n)
cg(n)
2.2 渐进符号和基本效率类型
2.2.1 非正式的介绍
O(g(n)) 是增长次数小于等于g(n) (以及其常数倍,n趋 向于无穷大)的函数集合。 n∈O(n2),100n+5∈O(n2), n(n-1) /2 ∈O(n2),n3∈/ O(n2), Ω(g(n)),代表增长次数大于等于g(n)(以及其常数倍,n趋 向于无穷大)的函数集合。 n3∈ Ω(n2), n(n-1) /2 ∈ Ω(n2),但是100n+5 ∈/ Ω(n2) Θ(g(n))是增长次数等于g(n) )(以及其常数倍,n趋向于无 穷大)的函数集合。因此,每一个二次方程an2+bn+c在 a>0的情况下都包含在Θ(n2)中,除了无数类似于n2+sin n和n2+log n的函数(你能解释原因吗?)。
t(n) cg(n)
n0之前的情 况无关重要
n n0 符号Ω:t(n)∈Ω(g(n))
2.2.4 符号Θ
定义 3 我们把函数t(n)属于Θ(g(n)) ,记作t(n) ∈Θ(g(n)) ; 它的成立条件是:对于所有足够大的n, t(n) 的上界和下 界都由g(n)的常数倍数所确定,也就是说,存在大于0的 常数c1,c2和和非负的整数n0,使得: 对于所有的n≥ n0来说, c2g(n) ≤t(n) ≤ c1g(n)
第2章 算法分析基础(《算法设计与分析(第3版)》C++版 王红梅 清华大学出版社)

3
Page 11
2.1.2 算法的渐近分析
常见的时间复杂度:
Ο(1)<(log2n)<(n)<(nlog2n)<(n2)<(n3)<…<(2n)<(n!)
多项式时间,易解问题
算
法
指数时间,难解问题
设 计 与
分
析
(
第
时间复杂度是在不同数量级的层面上比较算法
版 )
清
华
大
学
时间复杂度是一种估算技术(信封背面的技术)
Page 7
2.1.2 算法的渐近分析
3
每条语句执行次数之和 = 算法的执行时间 = 每条语句执行时间之和
基本语句的执行次数 for (i = 1; i <= n; i++)
单位时间
算
法
设
计
与
执行次数 × 执行一次的时间
分 析 (
第
for (j = 1; j <= n; j++)
版 )
x++;
指令系统、编译的代码质量
算法设计:面对一个问题,如何设计一个有效的算法
算
法
设
检
指
验
导
评
计 与 分 析 ( 第 版
改
估
) 清
进
华 大
学
出
版
算法分析:对已设计的算法,如何评价或判断其优劣
社
3
Page 3
2.1.1 输入规模与基本语句
如何度量算法的效率呢?
事后统计:将算法实现,测算其时间和空间开销
缺点:(1)编写程序实现算法将花费较多的时间和精力 (2)所得实验结果依赖于计算机的软硬件等环境因素
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
取充分大的c,使f(bi)≤c(ai/bεi) 对所有i成立. T(n)=ahT(1)+∑akf(bh-k),(∑: k=0,…,h-1) T(n)≤ahT(1)+c∑ak(ah-k/bε(h-k))
Examples 1
T(n)=4T(n/2)+n a=4, b=2⇒nloga=n2; f(n)=n. 情形1: f(n)=O(n2–ε) for ε=1. ∴ T(n) =Θ(n2).
Examples 2
T(n)=4T(n/2)+n2 a=4, b=2⇒nloga=n2; f (n)=n2.
Example1
T (n) = 4T (n/2) + n (n=2h)
[Assume that T (1)=Θ(1).] Guess O(n3) :归纳假定为T (n)≤cn3. c是待定常
数. 应用假定有:T (k) ≤ck3 for k < n . 归纳证明: T (n) ≤ cn3 并确定常数c.
Analysis of Algorithms(2)
Pseudocode (伪代码) Solving Recurrences(解递归)
While-循环最坏情形Θ(j). While-循环平均情形Θ(j/2),当插入位置有相同概率时.
Pseudocode-Insertion Sort
“←”表示”赋值“(assignment). 忽略数据类型、变量的说明等与算法无关的
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
Recursion tree
递归树等价于迭代展开
T(n)=4T(n/2)+n =4(4T(n/22)+n/2)+n =42T(n/22)+n+2n =43T(n/23)+n+2n+22n =4hT(n/2h)+n(1+2+┅+2h-1) =n2T(1)+n(2h-1) =Θ(n2)
f(n)的增长渐近地慢于nloga (慢 nε 倍). Solution: T(n)=Θ(nloga) .
The Master Method:情形2
情形2: f(n)=Θ(nloga lgkn) k≥0 为某一常数.
f(n) 和 nloga 几乎有相同的渐近增长率. Solution: T(n)=Θ(nloga lgk+1n) .
Master 方法分析
n=bh, h=logbn,nloga=ah loga 指 logba. T(n)= ahT(1)+∑kakf(n/bk)
=ahT(1)+∑kakf(bh-k) ∑k求和范围:k=0,…,h-1
∑kakf(bh-k)= ∑kah-kf(bk), (后者求和从1到h)
Proof (Case 1)
很多递归式用递归树解不出来,但递归树能提供直 觉,帮助我们用归纳法求解(Guess 归纳假设).
Conclusions
Θ(n lg n)比Θ(n2)增长的慢. 所以,merge sort 渐近(asymptotically)优于插
入排序. 实际上, merge sort 优于 insertion sort 仅当 n
> 30 or so. 1000*nlogn算法当n比较小时未必比n2算法要
快. n足够大时前者才能看出优势.
当n≠2h
2h≤n<2h+1=> n=Θ(2h), h=Θ(logn)
T(2h)≤ T(n) ≤ T(2h+1). 所以,Θ(h2h)≤T(n)≤Θ((h+1)2h+1) Θ((h+1)2h+1)=Θ(h2h+1+2h+1)
T(n)=Θ(1),当 n<n0 ,n0为常数. 因为有常数(n0-1)个T的值:T(1),┅,T(n0-1) 所以可取c足够大,使得T(n)≤cn3, 对n<n0
成立. This bound is not tight!
Example(continued)
We shall prove that T(n)=O(n2). Assume that T(k)≤ck2 for k<n: T(n)=4T(n/2)+n
部分. 允许使用自然语言表示的一些 “macros”. 伪代码突出了程序使用的算法.
Example of insertion sort
插入排序(Insertion sort)分析
最优二叉树(optimized binary tree)
for m ←2 to n
Θ(1)
do
{for i ←0 to n-m
The Master Method:情形3
情形3 f(n)=Ω(nloga +ε) ε>0为一常数.
f(n)多项式地快于nloga (by an nε factor), f(n) 满足以下规则性条件:
af(n/b)≤cf(n), 0<c<1 为常数. Solution: T(n) =Θ(f(n)) .
c=1/2. ∴ T(n)=Θ(n3).
Idea of the Master method
Idea of the Master method
从递归树可知: T(n)= ahT(1)+∑akf(n/bk)
=ahT(1)+∑akf(bh-k) =nlogaT(1)+∑akf(bh-k) T(n)的渐近性质由nloga和∑akf(bh-k)的渐近性 质决定:两者中阶较高的决定! 为什么要比较f(n)和nloga 的原因!
指:可找到足够大常数c1,使得 T(n)<c1 if n<n0.
Recursion tree
解T(n) = 2T(n/2) + cn, 其中 c > 0 为常数. 递归展开到T(n0),会导致推导的麻烦.所以展开到
T(1).然后再从前n0个T(n)的值确定渐近分析的常 数.
Recursion tree
=Θ(h2h+1)=Θ(h2h) 所以T(n)=Θ(h2h)=Θ(nlogn)
较一般的递归式
较一般的递归:T(n)=aT(n/b)+cn, a,b是大于1的 整数,递归树方法仍可使用.
首先考虑n=bh情形: T(n)=ahT(1)+cn(1+(a/b)+┅+(a/b)h-1) = ahT(1)+cbh(1+(a/b)+┅+(a/b)h-1)
所以: ∑akf(n/bk) ≤∑ckf(n) T(n)=ahT(1)+∑akf(n/bk)≤ahT(1)+f(n)∑ck≤ahT(
1)+f(n)(1-c)-1 因为, f(n)=Ω(nloga +ε),量级高于ah , 所以
T(n)=O(f(n)). 又,T(n)>f(n).所以,T(n)=Θ(f(n))
T(n)=4T(n/2)+n
≤4[c1(n/2)2-c2(n/2)]+n
=c1n2-c2n-(c2n-n)
≤c1n2-c2n
if c2>1
Continued
For 1≤n<n0, we have “Θ(1)”≤c1n2-c2n, if we pick c1 big enough.
The Master Method
mini<lj { c(i, l-1) + c (l, j) }: Θ(j-i)=Θ(m)
Inner for-loop:Θ(m(n-m)); Total :Θ(∑2≤m≤nm(n-m))=Θ(n3)
解递归
Solving Recurrences-
(1)Recursion tree
(2)Substitution method (2)Master method
The master method用来解下述递归 T(n)=aT(n/b)+f(n) ,
式中a≥1, b>1, 为整数, f(n)>0. 按f(n)相对于nloga 的渐近性质, 分三种情形进
行分析. 这里loga 指以b为底的a的对数logba.
The Master Method:情形1
情形1. f(n)=O(nloga–ε), ε>0,为某一常数
Example(continued)
T(n)=4T(n/2)+n ≤4c(n/2)3+n =(c/2)n3+n =cn3-((c/2)n3-n) ≤cn3
取 c≥2 and n≥1,不等式(c/2)n3–n≥0成 立,
Example(continued)
还要检验初始条件是否满足归纳假设. 初始条件为:
Θ(1)
do{
j←i+m
Θ(1)
w(i, j) ←w(i, j-1) + P(i) + Q(j)
Θ(1)
c(i, j)←mini<lj { c(i, l-1) + c (l, j) } + w(i, j) }
}Hale Waihona Puke W(n,n),P(n),Q(n),c(n,n) 是算法使用的数组,假定已初始化.
Optimized binary tree
例题2:展开T(n)=T(0.1n)+T(0.9n)+Θ(n)的 递归树并计算递归树的深度和T(n)的渐近值.