算法分析作业
算法分析与设计(线下作业二)

算法分析与设计(线下作业⼆)《算法分析与设计》学习中⼼:专业:学号:姓名:作业练习⼆⼀、名词解释1、MST性质2、⼦问题的重叠性质递归算法求解问题时,每次产⽣的⼦问题并不总是新问题,有些⼦问题被反复计算多次,这种性质称为⼦问题的重叠性质。
⼆、简答题1、简述动态规划算法求解的基本要素。
答:动态规划算法求解的基本要素包括:1)最优⼦结构是问题能⽤动态规划算法求解的前提;2)动态规划算法,对每⼀个⼦问题只解⼀次,⽽后将其解保存在⼀个表格中,当再次需要解此⼦问题时,只是简单地⽤常数时间查看⼀下结果,即重叠⼦问题。
2、备忘录⽅法和动态规划算法相⽐有何异同简述之。
答:备忘录⽅法是动态规划算法的变形。
与动态规划算法⼀样,备忘录⽅法⽤表格保存已解决的⼦问题的答案,在下次需要解此问题时,只要简单地查看该⼦问题的解答,⽽不必重新计算。
备忘录⽅法与动态规划算法不同的是,备忘录⽅法的递归⽅式是⾃顶向下的,⽽动态规划算法则是⾃底向上递归的。
因此,备忘录⽅法的控制结构与直接递归⽅法的控制结构相同,区别在于备忘录⽅法为每个解过的⼦问题建⽴了备忘录以备需要时查看,避免了相同的⼦问题的重复求解,⽽直接递归⽅法没有此功能。
3、贪⼼算法求解的问题主要具有哪些性质简述之。
答:贪⼼算法求解的问题⼀般具有⼆个重要的性质:⼀是贪⼼选择性质,这是贪⼼算法可⾏的第⼀个基本要素;另⼀个是最优⼦结构性质,问题的最优⼦结构性质是该问题可⽤贪⼼算法求解的关键特征。
三、算法编写及算法应⽤分析题1、设计求解如下最⼤⼦段和问题的动态规划算法。
只需给出其递推计算公式即可。
最⼤⼦段和问题:给定由n 个整数(可能为负整数)组成的序列a1a2 … an,求该序列形如Σi≤k≤j ak的⼦段和的最⼤值。
当所有整数均为负整数时定义其最⼤⼦段和为0。
依次定义,所求的最优值为max{0, max1≤i≤j≤n Σi≤k≤j ak }。
2、关于多段图问题。
设G =(V ,E)是⼀个赋权有向图,其顶点集V 被划分成k>2个不相交的⼦集V i :1i k ≤≤,其中,V 1和V k 分别只有⼀个顶点s (称为源)和⼀个顶点t (称为汇),图中所有的边(u,v ),i u V ∈,1i v V +∈。
年月考试算法设计分析第一次作业.doc

2013年4月考试算法设计分析第一次作业一、单项选择题(本大题共30分,共15小题,每小题2分)1.算法分析的两个主要方面是()。
A.空间复杂度和时间复杂度B,正确性和简单性C,可读性和文档性D.数据复杂度和程序复杂度2.计算机算法指的是()。
A.计算方法B.排序方法C.解决问题的方法和过程D.调度方法3.多阶段决策问题,就是要在可以选择的那些策略中间,选取一个()策略,使在预定的标准下达到最好的效果。
A.最优B.最差C.平衡D.任意4.根据排序元素所在位置的不同,排序分()。
A.内排序和外排序B.首排序和尾排序C.顺序排序和逆序排序D.堆排序和栈排序5.算法必须具备输入、输出和()等5个特性。
A.可执行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性6.与分治法不同的是,适合于用动态规划求解的问题()A.经分解得到子问题往往不是互相独立的B.经分解得到子问题往往是互相独立的C.经分解得到子问题往往是互相交叉的D.经分解得到子问题往往是任意的7.二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2] 与x进行比较:如果(),则只要在数组a的左半部继续搜索X。
A.x<a[n/2]B.x=a[n/2]C.x>a[n/2]D.x>=a[n/2]8.活动安排问题就是在所给的活动集合中,选出()的相容活子集。
A.最小B.任意C.最大D.一个9.在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是()A.回溯法B.分支限界法C.回溯法和分支限界法D.回溯法求解子集树问题10.适用动态规划的问题必须满足()A,最优化原理B.无前效性C,最优化原理和后效性D.最优化原理和无后效性11.算法的每种运算必须要有确切的定义,不能有二义性,以下符合算法确定性运算的是()A.5/0B.将6或7与x相加C.未赋值变量参与运算D.f(n)=f(n-l)+2,F(l)=10,n 为自然数12.直接或间接的调用自身的算法称为()。
算法分析与设计作业及参考答案样本

《算法分析与设计》作业( 一)本课程作业由两部分组成。
第一部分为”客观题部分”, 由15个选择题组成, 每题1分, 共15分。
第二部分为”主观题部分”,由简答题和论述题组成, 共15分。
作业总分30分, 将作为平时成绩记入课程总成绩。
客观题部分:一、选择题( 每题1分, 共15题)1、递归算法: ( C )A、直接调用自身B、间接调用自身C、直接或间接调用自身 D、不调用自身2、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的字问题, 这些子问题: ( D )A、相互独立B、与原问题相同C、相互依赖D、相互独立且与原问题相同3、备忘录方法的递归方式是:( C )A、自顶向下B、自底向上C、和动态规划算法相同D、非递归的4、回溯法的求解目标是找出解空间中满足约束条件的:( A )A、所有解B、一些解C、极大解D、极小解5、贪心算法和动态规划算法共有特点是: ( A )A、最优子结构B、重叠子问题C、贪心选择D、形函数6、哈夫曼编码是: ( B)A、定长编码B、变长编码C、随机编码D、定长或变长编码7、多机调度的贪心策略是: ( A)A、最长处理时间作业优先B、最短处理时间作业优先C、随机调度D、最优调度8、程序能够不满足如下性质: ( D )A、零个或多个外部输入B、至少一个输出C、指令的确定性D、指令的有限性9、用分治法设计出的程序一般是: ( A )A、递归算法B、动态规划算法C、贪心算法D、回溯法10、采用动态规划算法分解得到的子问题:( C )A、相互独立B、与原问题相同C、相互依赖D、相互独立且与原问题相同11、回溯法搜索解空间的方法是: ( A )A、深度优先B、广度优先C、最小耗费优先D、随机搜索12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策有可能导致算法: ( C )A、所需时间变化B、一定找到解C、找不到所需的解D、性能变差13、贪心算法能得到: ( C )A、全局最优解B、 0-1背包问题的解C、背包问题的解 D、无解14、能求解单源最短路径问题的算法是: ( A )A、分支限界法B、动态规划C、线形规划D、蒙特卡罗算法15、快速排序算法和线性时间选择算法的随机化版本是:( A )A、舍伍德算法B、蒙特卡罗算法C、拉斯维加斯算法D、数值随机化算法主观题部分:二、写出下列程序的答案( 每题2.5分, 共2题)1、请写出批处理作业调度的回溯算法。
《算法分析与设计》课后作业

《算法分析与设计》各章课后作业第一章 课后作业1. 设某算法在输入规模为n 时的计算时间为T(n)=10*2n。
若在甲台计算机上实现并完成该算法的时间为t 秒,现有一台运行速度是甲的64倍的另一台计算机乙,问在乙计算机上用同一算法在t 秒内能解决的问题的规模是多大?2.按照渐近阶从低到高的顺序排列以下表达式:4n 2,logn ,3n,20n ,2,n 2/3。
又n!应该排在哪一位?第二章 课后作业1. 用展开法求解下列递推关系:T(n)=⎩⎨⎧>+=1n )()2/(20n )1(n O n T O,写出T(n)的大O 记号表示。
2. 下面是实现在a[0]<=a[1]<=…<=a[n-1]中搜索x 的二分搜索算法,请根据二分 搜索技术在下划线处填充语句。
算法描述如下: template<class Type>public static int BinarySearch(int []a, int x, int n) { //在a[0]<=a[1]<=…<=a[n-1]中搜索 x // 找到x 时返回其在数组中的位置,否则返回-1 int left = 0; int right = n - 1; while ( ) {int middle = ;if(x == a[middle]) return ; if(x > a[middle]) left = middle + 1; else right= ; }return -1; // 未找到x}第三章课后作业1、选择题。
(1)下列算法中通常以自底向上的方式求解最优解的是()。
A、备忘录法B、动态规划法C、贪心法D、回溯法(2)备忘录方法是那种算法的变形。
()A、分治法B、动态规划法C、贪心法D、回溯法(3)矩阵连乘问题的算法可由()设计实现。
A、分支界限算法B、动态规划算法C、贪心算法D、回溯算法2.计算题。
算法分析作业

算法分析作业 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】算法分析练习题(一)一、选择题1、二分搜索算法是利用(A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是(A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3.下列算法中通常以自底向上的方式求解最优解的是(B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法4、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短5、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题6. 实现循环赛日程表利用的算法是(A )。
A、分治策略B、动态规划法C、贪心法D、回溯法7.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法8.最长公共子序列算法利用的算法是(B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法9.实现棋盘覆盖算法利用的算法是(A )。
A、分治法B、动态规划法C、贪心法D、回溯法10. 矩阵连乘问题的算法可由(B)设计实现。
A、分支界限算法B、动态规划算法C、贪心算法D、回溯算法11、Strassen矩阵乘法是利用(A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法12、使用分治法求解不需要满足的条件是(A )。
A 子问题必须是一样的B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解13、下列算法中不能解决0/1背包问题的是(A )A 贪心法B 动态规划C 回溯法D 分支限界法14.实现合并排序利用的算法是(A )。
A、分治策略B、动态规划法C、贪心法D、回溯法15.下列是动态规划算法基本要素的是(D )。
A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质16.下列算法中通常以自底向下的方式求解最优解的是(B )。
【图文】算法分析与设计大作业

算法理论、教改类题目学习大量相关算法(程序),总结出对应方法的一些特点,将其写成论文形式,并以足够的例子作为佐证。
24.论分治法、动态规划、贪心法的区别 25.论递归程序向非递归程序的转换 26.论应用型本科院校算法课程的教学目标和教学方法 27.论二叉树在计算机科学与技术中的应用 28.数据库索引的算法解释 29.论贪心法的适用范围 30.解空间搜索方法的选择依据 31.分治法算法分析综述
算法应用、算法研究类题目查阅大量相关资料,对相关内容给出初步的结果。
31.基于UCCI的中国象棋对弈引擎开发技术研究 32.五子棋对弈关键技术研究33.黑白棋对弈关键技术研究 34.数独初始局面生成算法研究 35.支持按文件名搜索的索引构造技术研究 36.通用回溯算法演示系统设计 37.通用分支限界算法演示系统设计 38.通用排序算法演示系统设计 39.通用动态规划算法演示系统设计
40.论文阅读和翻译类题目• 给出一个英文文献,用准确的语言将其翻译为中文,不需要逐字逐句翻译,但主要观点、算法思想和算法过程表述清楚、准确、充分。
格式要求• 论文正文中不得出现大段代码(超过10行)• 标题样式需规范• 参考文献不低于10篇,参考文献格式和标注位置须规范。
中科院计算机算法设计与分析各章作业+历年习题

5.下面那些规则是正确的?为什么? 1). f (n) O( F (n)), g (n) O(G(n)) f (n) / g (n) O( F (n) / G(n)) ;错 2). f (n) O( F (n)), g (n) O(G(n)) f (n) / g (n) ( F (n) / G(n)) ;错 3). f (n) O( F (n)), g (n) O(G(n)) f (n) / g (n) ( F (n) / G(n)) ;错 4). f (n) ( F (n)), g (n) (G(n)) f (n) / g (n) ( F (n) / G(n)) ;错 5). f (n) ( F (n)), g (n) (G(n)) f (n) / g (n) ( F (n) / G(n)) 。错 6).
7
对顶点个数进行归纳。 当顶点数|v(D)|=2 时,因为每个点的入度和出度相等,易得构成有向 Euler 环游。 假设顶点数|v(D)|=k 时结论成立,则 当顶点数|v(D)|=k + 1 时,任取 v∈v(D).设 S={以 v 为终点的边},K={以 v 为始点的边},因为 v 的入度和出度相等,故 S 和 K 中边数相等。记 G=D-v.对 G 做如下操作: 任取 S 和 K 中各一条边 e1、e2 ,设在 D 中 e1 v1v , e2 vv2 ,则对 G 和 S 做如下操作 G G v1v2 , S S {e2} ,重复此步骤直到 S 为空。这个过程最终 得到的 G 有 k 个顶点,且每个顶点的度与在 G 中完全一样。由归纳假设,G 中 存在有向 Euler 环游,设为 C。在 G 中从任一点出发沿 C 的对应边前行,每当遇 到上述添加边 v1v2 时, 都用对应的两条边 e1, e2 代替, 这样可以获得有向 Euler 环游。 3)G 是至少有三个顶点的无向图,则 G 包含 Euler 环游等价于 G 中无奇度顶 点。 (即任意顶点的度为偶数) 。 3. 设 G 是具有 n 个顶点和 m 条边的无向图, 如果 G 是连通的, 而且满足 m = n-1, 证明 G 是树。
东师算法分析与设计21春在线作业1【标准答案】

算法分析与设计19春在线作业1-0002
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.下列算法描述所用的方法是() Begin(算法开始)输入 A,B,C IF A>B 则 A→Max 否则B→Max IF C>Max 则 C→Max Print Max End (算法结束)
A.流程图
B.N-S流程图
C.伪代码表示
D.程序设计语言
答案:C
2.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()。
A.n+1
B.n-1
C.2n
D.n/2
答案:A
3.下列叙述中正确的是()
A.线性链表是线性表的链式存储结构
B.栈与队列是非线性结构
C.双向链表是非线性结构
D.只有根结点的二叉树是线性结构
答案:A
4.设有如下函数定义 int fun(int k) { if (k<1) return 0; else if(k==1) return 1; else return fun(k-1)+1; } 若执行调用语句:n=fun(3);,则函数fun 总共被调用的次数是()。
A.2
B.3
C.4
D.5
答案:B
5.strchr()函数用来()。
A.字符串连接
B.比较字符
C.求字符位置
D.求子串位置
答案:C
6.下面4句话中,最准确的表述是()。
A.程序=算法+数据结构
B.程序是使用编程语言实现算法
C.程序的开发方法决定算法设计。
算法设计与分析(王多强)作业参考答案.docx

第二章递归习题导论4.1-17(/?) = 27(b / 2)+ 1=> M = 2T5 /2) + 1%)习题导论4.1-6Tin) = 2T(0) + 1做代换:m=log2n另 S(m)=T(2m )则有: S(/z?) = 2S(zz? / 2) + 1 化简有:S(m)=O(m) 所以 T(n)=O(logn)习题4.2-27(/7)= T(n / 3) + 7(2/7 / 3) + 劲 注意最长分支 2n/3-*(2n/3)2 -*(2n/3)3...-*(2n^)log3/2n 习题4.3-1a) T(n) = 4T(n/2) + nb) T(n) = 4T(n/2) + n 2c 取大于1/2小于1的数即可,如珈习题4.3-4f(n )/nlogba = n 2log n/n'°g"二 log nvn所以不满足规则3直接化简即可,T(n)=O(n 2log 2n)c) T(n) = 4T(n/2) + n 3情况 3, ◎ (r?). 验证 4f(n/2)=4(n/2)3=n 3/2^cn 3,这里7X2")27(2"/彳)+情况4 0(n 2)情况 2, © (n 2logn)第三章习题4.5注意三分Z—和三分Z二分割点的计算ml = (2low+high)^m2 = (low+2high)/3习题4.20主要是验证T(n/r) + T(0)>|« n/r+O的数量级是否小于n的1次方(线性) 利用关系式:\n / r」n (/7 - r - 1) / /进行化简r=3:\r / 2~|~|_/2 / /_] / 2~| > 2 z? / r / 2 = n / r」> (/? 一2) / 3则,刀一卜/2北刀 / 厂」/ 2] < /? - (/? - 2) / 3 = 2/7 / 3 + 2 / 3 则,n〃 +羊n +厉超线性了r=7:\r / 2]\n / r\/ 2〕>/ 7」/2 = 2山 / 7」> 2(刀一6) / 7则,n - \r / i\\n / /」/ 2〕v 刀一2(刀一6) / 7 = 5刀 / 7 + 12 / 7可证,当n>48的时候,上式小于3伙则,n/7+3nA = 25n/28 <n 成立r=9:\r / 2][n / 厂」/ 2〕> 5[刀 / 9」/ 2 = (5 / 2)^/9」> 5(刀-8)/18n一\r / 2\[n / /」/ 2〕< 13/?/18 + 40/18可证,当n>20的时候,上式小于7n/8 则,n/9+7n/8 = 71n/72 <n 成立r=ll习题4.25肓接带入验证即可棋盘覆盖问题角上用一个骨牌覆盖,认为构造有特殊方格的区域,然后在四个区域上递归求解即可第四章中位数中位数习题导论9-2A)比较明显。
算法分析与设计作业及参考答案

算法分析与设计作业及参考答案作业题目1、请分析冒泡排序算法的时间复杂度和空间复杂度,并举例说明其在实际中的应用场景。
2、设计一个算法,用于在一个未排序的整数数组中找到第二大的元素,并分析其时间复杂度。
3、比较贪心算法和动态规划算法的异同,并分别举例说明它们在解决问题中的应用。
参考答案1、冒泡排序算法时间复杂度:冒泡排序的基本思想是通过相邻元素的比较和交换,将最大的元素逐步“浮”到数组的末尾。
在最坏情况下,数组完全逆序,需要进行 n 1 轮比较和交换,每一轮比较 n i 次(i 表示当前轮数),所以总的比较次数为 n(n 1) / 2,时间复杂度为 O(n^2)。
在最好情况下,数组已经有序,只需要进行一轮比较,时间复杂度为 O(n)。
平均情况下,时间复杂度也为 O(n^2)。
空间复杂度:冒泡排序只在原数组上进行操作,不需要额外的存储空间,空间复杂度为 O(1)。
应用场景:冒泡排序算法简单易懂,对于规模较小的数组,或者对算法的简单性要求较高而对性能要求不是特别苛刻的场景,如对少量数据进行简单排序时,可以使用冒泡排序。
例如,在一个小型的学生成绩管理系统中,需要对一个班级的少量学生成绩进行排序展示,冒泡排序就可以满足需求。
2、找到第二大元素的算法以下是一种使用遍历的方法来找到未排序整数数组中第二大元素的算法:```pythondef find_second_largest(arr):largest = arr0second_largest = float('inf')for num in arr:if num > largest:second_largest = largestlargest = numelif num > second_largest and num!= largest:second_largest = numreturn second_largest```时间复杂度分析:这个算法需要遍历数组一次,所以时间复杂度为O(n)。
《算法分析与设计》作业答案

《算法分析与设计》作业1、考虑,10≤≤i x 而不是x i ∈{0,1}的连续背包问题。
一种可行的贪婪策略是:按价值密度非递减的顺序检查物品,若剩余容量能容下正在考察的物品,将其装入;否则,往背包内装如此物品的一部分。
(a) 对于n=3,w=[100,10,10],p=[20,15,15],以及c=105,上述装入法获得结果是什么?(b)证明这种贪婪算法总能获得最优解。
(c) 用伪代码描述此算法。
答:(a )利用贪婪算法,按价值密度考察的背包为w2,w3,w1;背包w2和w3重20,还可以容纳85,由于10≤≤i x ,背包w1还可以装入x1=0.85,则背包内物品总价值为15+15+20*0.85=47.(b )假设已按价值密度排好序,考察w1,w2,……,wi ,……,对应的价值为p1,p2,……,pi,……如果装到pi-1再装pi 时,恰好要取xi 个wi 。
(,10≤≤i x ) 因为比它价值密度大的都已装载完,所以此时获得的为最优解。
(c )算法描述如下: template <class T>int ContainerLoading( int x[], T w[], T c, int n ) {int *t = new int[n+1]; IndirectSort(w, t, n); for( int i=1; i<=n; i++) x[i] = 0;for(i=1; i<=n && w[t[i]]<=c; i++){ x[t[i]] = 1; c += w[t[i]]; } delete []t; }2、证明当且仅当二分图没有覆盖时,下述算法找不到覆盖。
m=0; //当前覆盖的大小对于A中的所有i,New[i]=Degree[i]对于B中的所有i,Cov[i]=falsewhile(对于A中的某些i,New[i]>0) {设v是具有最大的New[i]的顶点;C[m++]=v;for(所有邻接于v的顶点j) {If(!Cov[j]) {Cov[j] = true;对于所有邻接于j的顶点,使其New[k]减1}}}if (有些顶点未被覆盖) 失败else 找到一个覆盖2)给出一个具有覆盖的二分图,使得上述算法找不到最小覆盖。
算法分析作业--第5章

按l1≥ l2 ≥ l3 ≥ l4 ≥ l5次序得到 A={10,6,5},B={9,8},最大值是21.
若令A={10,9},B={8,6,5},最大值是19. 这种方式更优。
故命题得证。
① 当n=7,(p1 ,…, p7)=(3,5,20,18,1,6,30) 和(d1,…,d7)=(1,3,4,3,2,1,2)时,算法5.4所生 成的解是什么?
将以上数据情况的背包问题记为I。设FG(I)是 物品按pi的非增次序输入时由GREEDYKNAPSACK所生成的解,FO(I)是一个最优解。 问FO(I)/ FG(I)是多少?
当物品按wi的非降次序输入时,重复②的讨 论。
i 1234 5
p 10 5 15 7 6
w2 3 5 7 1
p/w 5 5/3 3 1 6
③ 证明按fi/li的非增次序来存放程序时ERT取最 小值。
I:
(l1,l2)=(10,12) (f1,f2)=(0.4,0.6)
ERT(I)=10*0.4+(10+12)*0.6=17.2 ERT(I’)=12*0.6+(10+12)*0.4=16
I:
(l1,l2)=(2,1) (f1,f2)=(0.6,0.4)
x 1 2/3 1
1
n=7,m=15
根据贪心(x5,x1,x6,x3,x7,x2,x4)= (1,1,1,1,1,2/3,0)即
(x1,x2,x3,x4,x5,x6,x7)=(1,2/3,1,0,1,1,1 ) FO(I)=166/3。
67 18 3 41 9/2 3 11
i 1234 5
算法分析与设计:作业

2021/3/27
CHENLI
6
习题2.5—4,P64
• 4. 爬梯子. 假设每一步可以爬一格或者两格 梯子,爬一部n格梯子一共有几种爬法?
– 解:令C(n)表示总的爬法,则C(n-1)表示第一 步爬一格梯子的爬法,C(n-2)表示第一步爬二 格梯子的爬法,所以有 C(n) = C(n-1)+C(n-2), n>2 C(1) = 1, C(2) = 2 解之得 C(n) = F(n+1),这里F(n)表示Fibonacci数列
2021/3/27
CHENLI
3
习题1.2—5,P13
• 5. 写出十进制正整数转换为二进制整数的 算法
– 解:算法 Binary(n) //输入:十进制正整数n //输出:bkbk-1···b1b0 k←0
while n ≠ 0
bk ← n mod 2 n ← [n/2]
k ← k+1
2021/3/27
CHENLI
4
习题2.1—7,P39
• 7. Gaussian消去法用于求解n个n元线性方 程联立的方程组. 乘法是其基本操作,且大 约需要n3/3乘法运算. 问 a. 解一个1000个方程联立的方程组比解一 个500个方程联立的方程组要多运行多少时 间?
– 解:设cM是一次乘法运行的时间,则 T(n) ≈ cMn3/3,T(2n) ≈ cM(2n)3/3,所以 T(2n)/T(n) ≈ 8
2021/3/27
CHENLI
10
习题3.2-6,P82
• 6. 设文本T长度为n,模式P长度为m,给 出一个蛮力字符串匹配最差的实例,并指 出精确的比较次数
– 解:令T为长度为n个0的字符串,P的前m-1个 字符为0,第m个字符为1,此时总的比较次数 最多,结果为 C(n)=m(n-m+1),当m<<n时,有 C(n)∈Θ(nm)
算法分析与设计作业参考答案

《算法分析与设计》作业参考答案作业一一、名词解释:1.递归算法:直接或间接地调用自身的算法称为递归算法。
2.程序:程序是算法用某种程序设计语言的具体实现。
二、简答题:1.算法需要满足哪些性质?简述之。
答:算法是若干指令的有穷序列,满足性质:(1)输入:有零个或多个外部量作为算法的输入。
(2)输出:算法产生至少一个量作为输出。
(3)确定性:组成算法的每条指令清晰、无歧义。
(4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。
2.简要分析分治法能解决的问题具有的特征。
答:分析分治法能解决的问题主要具有如下特征:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。
答:将递归算法转化为非递归算法的方法主要有:(1)采用一个用户定义的栈来模拟系统的递归调用工作栈。
该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。
(2)用递推来实现递归函数。
(3)通过Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。
后两种方法在时空复杂度上均有较大改善,但其适用范围有限。
三、算法编写及算法应用分析题: 1.冒泡排序算法的基本运算如下: for i ←1 to n-1 dofor j ←1 to n-i do if a[j]<a[j+1] then交换a[j]、a[j+1];分析该算法的时间复杂性。
答:排序算法的基本运算步为元素比较,冒泡排序算法的时间复杂性就是求比较次数与n 的关系。
(1)设比较一次花时间1;(2)内循环次数为:n-i 次,(i=1,…n ),花时间为:∑-=-=in j i n 1)(1(3)外循环次数为:n-1,花时间为:2.设计一个分治算法计算一棵二叉树的高度。
十六皇后-《算法分析与设计》作业报告

十六皇后问题【问题描述】八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。
该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
高斯认为有76种方案。
1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。
计算机发明后,有多种计算机语言可以解决此问题。
十六皇后是对八皇后的一个延伸,只不过是皇后的数目增多。
【基本要求】设计16皇后的程序,要求如下:⏹输出其中的一个解⏹输出其总共有多少个解⏹要有计时器,计算并显示运行时间。
【问题求解】1 需求规格说明要求根据已学的回溯算法,在原有8皇后的回溯算法基础上加以改进,从而提高效率,降低时间复杂度或是空间复杂度。
2 总体分析与设计2.1 设计思想:皇后问题是回溯算法的典型应用,我们试探性的在每一行放置一个皇后,皇后位置要求与其他皇后在不同一列和正负45°对角线上,如果某一行没有合适的位置,那么需要回溯到上一行,上一行重新选择一个合法的位置,当所有的行都正确放置了皇后,那么这便是一个合法解。
算法1:利用一个二维数组保存整个棋盘,元素可以放置皇后置为1,不能放置皇后置为0。
判断某一位置能否放置皇后需要进行如下判断(1)一列上只能有一个皇后;(2)135°斜对角线上只能有一个皇后;(3)45°对角线上只能有一个皇后。
算法2:算法1可以找到正确解,但是发现大可不必利用二维数组保存皇后位置,可以改进为用一维数组来存储结果,数组下标代表行,数组中值代表当前行的皇后位置,便可节省大量空间。
判断某一位置能否放置皇后只需要一遍循环。
改进算法:当计算出一个解之后,便可根据矩阵列对称性找到另一个解,那么时间和空间会节省一半。
2.2 算法流程:图 1. 算法流程3 算法实现3.1 类图设计:图 2. 类图⏹NQueenTestMain:测试类,控制台界面,提供用户选择算法,输入皇后数目,是否打印结果,以及运行时间显示。
算法分析期末试题集答案

算法分析期末试题集答案1.应⽤Johnson法则的流⽔作业调度采⽤的算法是(D)A. 贪⼼算法B. 分⽀限界法C.分治法D. 动态规划算法2.Hanoi塔问题如下图所⽰。
现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。
移动圆盘时遵守Hanoi塔问题的移动规则。
由此设计出解Hanoi塔问题的递归算法正确的为:(B)Hanoi塔3. 动态规划算法的基本要素为(C)A. 最优⼦结构性质与贪⼼选择性质B.重叠⼦问题性质与贪⼼选择性质C.最优⼦结构性质与重叠⼦问题性质D. 预排序与递归调⽤4. 算法分析中,记号O表⽰(B),记号Ω表⽰(A),记号Θ表⽰(D)。
A.渐进下界B.渐进上界C.⾮紧上界D.紧渐进界E.⾮紧下界5. 以下关于渐进记号的性质是正确的有:(A)A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ?=ΘB. f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==?=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D. f(n)O(g(n))g(n)O(f(n))=?=6.能采⽤贪⼼算法求最优解的问题,⼀般具有的重要性质为:(A)A. 最优⼦结构性质与贪⼼选择性质B.重叠⼦问题性质与贪⼼选择性质C.最优⼦结构性质与重叠⼦问题性质D. 预排序与递归调⽤7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。
A.⼴度优先B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分⽀限界法在问题的解空间树中,按(A)策略,从根结点出发搜索解空间树。
A.⼴度优先B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。
A.10. 回溯法的效率不依赖于以下哪⼀个因素?(C )A.产⽣x[k]的时间;B.满⾜显约束的x[k]值的个数;C.问题的解空间的形式;D.计算上界函数bound的时间;E.满⾜约束函数和上界函数约束的所有x[k]的个数。
算法分析期末考试集答案(套)

算法分析期末考试集答案(套)《算法分析与设计》⼀、解答题 1. 机器调度问题。
问题描述:现在有n 件任务和⽆限多台的机器,任务可以在机器上得到处理。
每件任务的开始时间为s i ,完成时间为f i ,s i问题实例:若任务占⽤的时间范围是{[1,4],[2,5],[4,5],[2,6],[4,7]},则按时完成所有任务最少需要⼏台机器?(提⽰:使⽤贪⼼算法)画出⼯作在对应的机器上的分配情况。
2. 已知⾮齐次递归⽅程:f (n)bf (n 1)g(n)f (0)c =-+??=? ,其中,b 、c 是常数,g(n)是n 的某⼀个函数。
则f(n)的⾮递归表达式为:nnn i i 1f (n)cb b g(i)-==+∑。
现有Hanoi 塔问题的递归⽅程为:h(n)2h(n 1)1h(1)1=-+??=? ,求h(n)的⾮递归表达式。
解:利⽤给出的关系式,此时有:b=2, c=1, g(n)=1, 从n 递推到1,有:n 1n 1n 1i i 1n 1n 22n h(n)cbb g(i)22 (22121)----=--=+=+++++=-∑3. 单源最短路径的求解。
问题的描述:给定带权有向图(如下图所⽰)G =(V,E),其中每条边的权是⾮负实数。
另外,还给定V 中的⼀个顶点,称为源。
现在要计算从源到所有其它各顶点的最短路长度。
这⾥路的长度是指路上各边权之和。
这个问题通常称为单源最短路径问题。
解法:现采⽤Dijkstra 算法计算从源顶点1到其它顶点间最短路径。
请将此过程填⼊下表中。
4. 请写出⽤回溯法解装载问题的函数。
装载问题:有⼀批共n 个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i 的重量为wi ,且121nii w c c=≤+∑。
装载问题要求确定是否有⼀个合理的装载⽅案可将这n 个集装箱装上这2艘轮船。
如果有,找出⼀种装载⽅案。
解:void backtrack (int i){// 搜索第i 层结点if (i > n) // 到达叶结点更新最优解bestx,bestw;return; r -= w[i];if (cw + w[i] <= c) {// 搜索左⼦树43 2 1 100 30 maxint10 - {1} 初始 dist[5] dist[4] dist[3] dist[2] u S 迭代x[i] = 1;cw += w[i];backtrack(i + 1);cw -= w[i]; }if (cw + r > bestw) {x[i] = 0; // 搜索右⼦树backtrack(i + 1); }r += w[i];}5. ⽤分⽀限界法解装载问题时,对算法进⾏了⼀些改进,下⾯的程序段给出了改进部分;试说明斜线部分完成什么功能,以及这样做的原因,即采⽤这样的⽅式,算法在执⾏上有什么不同。
中科大算法设计与分析分布式算法部分作业部分答案

1. 分析在同步和异步模型下汇集算法的复杂性。 分析在同步和异步模型下பைடு நூலகம்集算法的复杂性。
解:与广播算法分析时间复杂性的步骤一致,一两句的说明 与广播算法分析时间复杂性的步骤一致, 不是分析。 不是分析。 <1> 同步模型 引理:在汇集算法的每个容许执行里, 引理:在汇集算法的每个容许执行里,树中每个高为 t 轮里收到所有孩子的msg。 子树根结点在第 t 轮里收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 定理: 存在一个时间复杂度为O(d)的 同步汇集算法。 同步汇集算法。 <2> 异步模型 引理:在汇集算法的每个容许的执行里, 引理:在汇集算法的每个容许的执行里,树中每个高为 t 收到所有孩子的msg。 的子树根结点在时刻 t 收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理: 存在一个时间复杂度为O(d)的 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 异步汇集算法。 异步汇集算法。
6.
证明同步环上不存在匿名的、 证明同步环上不存在匿名的、一致性的 Leader选举算法 Leader选举算法。 选举算法。
解:由Lemma3.1可得。 解:由Lemma3.1可得。 假设R是大小为n>1的环(非均匀),A 假设R是大小为n>1的环(非均匀),A是其上的一 个匿名算法,它选中某处理器为leader。因为环是 个匿名算法,它选中某处理器为leader。因为环是 同步的且只有一种初始配置,故在R 同步的且只有一种初始配置,故在R上A只有唯一的 合法执行。 Lemma3.1: 在环R上算法A Lemma3.1: 在环R上算法A的容许执行里,对于每 轮k,所有处理器的状态在第k轮结束时是相同的。 ,所有处理器的状态在第k Note:每个处理器同时宣布自己是Leader! Note:每个处理器同时宣布自己是Leader!
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法分析练习题一
一、选择题
1、二分搜索算法是利用A 实现的算法;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
2、下列不是动态规划算法基本步骤的是A ;
A、找出最优解的性质
B、构造最优解
C、算出最优解
D、定义最优解
3.下列算法中通常以自底向上的方式求解最优解的是B ;
A、备忘录法
B、动态规划法
C、贪心法
D、回溯法
4、衡量一个算法好坏的标准是C ;
A 运行速度快
B 占用空间少
C 时间复杂度低
D 代码短
5、以下不可以使用分治法求解的是D ;
A 棋盘覆盖问题
B 选择问题
C 归并排序
D 0/1背包问题
6. 实现循环赛日程表利用的算法是A ;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
7.备忘录方法是那种算法的变形; B
A、分治法
B、动态规划法
C、贪心法
D、回溯法8.最长公共子序列算法利用的算法是B ;
A、分支界限法
B、动态规划法
C、贪心法
D、回溯法9.实现棋盘覆盖算法利用的算法是A ;
A、分治法
B、动态规划法
C、贪心法
D、回溯法
10. 矩阵连乘问题的算法可由B设计实现;
A、分支界限算法
B、动态规划算法
C、贪心算法
D、回溯算法
11、Strassen矩阵乘法是利用A 实现的算法;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
12、使用分治法求解不需要满足的条件是A ;
A 子问题必须是一样的
B 子问题不能够重复
C 子问题的解可以合并
D 原问题和子问题使用相同的方法解
13、下列算法中不能解决0/1背包问题的是A
A 贪心法
B 动态规划
C 回溯法
D 分支限界法
14.实现合并排序利用的算法是A ;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
15.下列是动态规划算法基本要素的是D ;
A、定义最优解
B、构造最优解
C、算出最优解
D、子问题重叠性质16.下列算法中通常以自底向下的方式求解最优解的是B ;
A、分治法
B、动态规划法
C、贪心法
D、回溯法
17、合并排序算法是利用A 实现的算法;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
18.实现大整数的乘法是利用的算法C ;
A、贪心法
B、动态规划法
C、分治策略
D、回溯法
19. 实现最大子段和利用的算法是B ;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
20. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的B ;
A、重叠子问题
B、最优子结构性质
C、贪心选择性质
D、定义最优解
21. 实现最长公共子序列利用的算法是B ;
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
二、填空题
1.算法的复杂性有时间复杂性和空间复杂性之分;
2、程序是算法用某种程序设计语言的具体实现;
3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的;
4.矩阵连乘问题的算法可由动态规划设计实现;
5、算法是指解决问题的一种方法或一个过程 ;
6、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法 ;
7、矩阵连乘问题的算法可由动态规划设计实现;
8. 动态规划算法的基本思想是将待求解问题分解成若干子问题 ,先求解子问题 ,然后从这些子问题的解得到原问题的解;
9.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质;
10、大整数乘积算法是用分治法来设计的;
11.快速排序算法是基于分治策略的一种排序算法;
12.动态规划算法的两个基本要素是. 性质和性质 ;
13.任何可用计算机求解的问题所需的时间都与其规模有关;
14.快速排序算法的性能取决于划分的对称性 ;
15、出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致相同 ;
16、使用二分搜索算法在n个有序元素表中搜索一个特定元素,在最佳情况下,搜索的时间复杂性为O,在最坏情况下,搜索的时间复杂性为O logn ;
17、已知一个分治算法耗费的计算时间Tn,Tn满足如下递归方程:
解得此递归方可得Tn= O nlogn ;
18、动态规划算法有一个变形方法备忘录方法 ;这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解;
19、递归的二分查找算法在divide阶段所花的时间是 O1 ,conquer阶段所花的时间是 Tn/2 ,算法的时间复杂度是 Ologn ;
20、用动态规划算法计算矩阵连乘问题的最优值所花的时间是 On3 , 子问题空间大
小是 On2 ;
21、一个算法的优劣可以用时间复杂度与空间复杂度与来衡量;
22、直接或间接地调用自身的算法称为递归算法;
23、记号在算法复杂性的表示法中表示渐进确界或紧致界;
24、在分治法中,使子问题规模大致相等的做法是出自一种平衡子问题的思想;
25、动态规划算法适用于解具有某种最优性质问题;
26、最优子结构性质的含义是问题的最优解包含其子问题的最优解;
27、按照符号O的定义Of+Og等于Omax{fn,gn};
28、二分搜索技术是运用分治策略的典型例子;
29、动态规划算法中,通常不同子问题的个数随问题规模呈多项式级增长;
30、最优子结构性质和子问题重叠性质是采用动态规划算法的两个基本要素;
三、算法填空
1.最大子段和: 动态规划算法
int MaxSumint n, int a
{
int sum=0, b=0; 速排序
template<class Type>
void QuickSort Type a, int p, int r
{
if p<r {
int q=Partitiona,p,r;
QuickSorta,p,q-1 ; 最长上升子序列问题—— 提示:此题可采用动态规划算法实现
对于给定的一个序列12(,,
,)N a a a ,11000N ≤≤;我们可以得到一些递增上升的子序列12(,,,)i i iK a a a ,这里121K i i i N ≤<<<≤;比如,对于序列1, 7, 3, 5, 9, 4, 8,有它的一
些上升子序列,如1, 7, 3, 4, 8等等;这些子序列中最长的长度是4,比如子序列1, 3, 5, 8;你的任务:就是对于给定的序列,求出最长上升子序列的长度;要求写出你设计的算法思想及递推函数的公式表达;.
2.Gray码构造问题——提示:此题可采用分治递归算法实现
问题描述:“格雷码”是一个长度为n2的序列,满足:
a每个元素都是长度为n比特的串
b序列中无相同元素
c连续的两个元素恰好只有1个比特不同
例如:n=2时,格雷码为{00,01,11,10};
Gray码是一种编码,这种编码可以避免在读取时,因各数据位时序上的差异造成的误读;格雷码在工程上有广泛应用;但格雷码不便于运算,请你设计一种构造方法,输入长度序列n,输出格雷码你只要做出一种构造方案即可,格雷码并不唯一;
3.现在有8位运动员要进行网球循环赛,要设计一个满足以下要求的比赛日程表:
(1)每个选手必须与其他选手各赛一次;
(2)每个选手一天只能赛一次;
(3)循环赛一共进行n – 1天;
请利用分治法的思想,给这8位运动员设计一个合理的比赛日程;
4.对于矩阵连乘所需最少数乘次数问题,其递归关系式为:
其中mi,j为计算矩阵连乘Ai…Aj所需的最少数乘次数,p
i-1为矩阵Ai的行,
i
p为矩阵Ai的
列;现有四个矩阵,其中各矩阵维数分别为:
请根据以上的递归关系,计算出矩阵连乘积A
1A
2
A
3
A
4
所需要的最少数乘次数;
5.有这样一类特殊0-1背包问题:可选物品重量越轻的物品价值越高;
n=6,c=20,P=4,8,15,1,6,3,W=5,3,2,10,4,8;
其中n为物品个数,c为背包载重量,P表示物品的价值,W表示物品的重量;请问对于此0-1背包问题,应如何选择放进去的物品,才能使到放进背包的物品总价值最大,能获得的最大总价值多少
6.归并排序算法对下列实例排序,写出算法执行过程;
A=48,12,61,3,5,19,32,7
7.规则证明: Ofn+Ogn = Omax{fn,gn}
8. 给定已按升序排好序的n个元素a0:n-1,现要在这n个元素中找出一特定元素x,返回其在
数组中的位置,如果未找到返回-1;
写出二分搜索的算法,并分析其时间复杂度;
9. 利用分治算法写出合并排序的算法,并分析其时间复杂度。