算法分析作业
- 格式:docx
- 大小:778.95 KB
- 文档页数:11
东师21秋学期《算法分析与设计》在线作业1(答案)一、单选题1. 字符串”China Beijing”的长度是()A.12B. 13C. 14D. 15正确答案. B2. 一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树的总结点数为()。
A.219B. 221C. 229D. 231正确答案. A3. 栈和队列的共同点是()A.都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点正确答案. C4. 使用简单选择排序法对n个数进行排序要进行()趟比较。
A. NB. n-1C. n+1D. 不一定正确答案. B5. 下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是()。
A. 选择排序法B. 插入排序法C. 快速排序法D. 堆积排序法正确答案. A6. 图中有关路径的定义是()。
A. 由顶点和相邻顶点序偶构成的边所形成的序列B. 由不同顶点所形成的序列C. 由不同边所形成的序列D. 上述定义都不是正确答案. A7. 执行memset(s,'a',4)后,s的值为()。
A. "aaaa"B. "a4"C. "4a"D. "eeee"正确答案. A8. 一个算法的评价主要从空间复杂度和()来考虑。
A. 时间复杂度B. 算法有效性C. 算法有穷性D. 算法可读性正确答案. A9. 下面的时间复杂度按数量级递增的顺序排列,正确的是注释从功能上可以分为()。
A. 平方阶O(n2),对数阶O(log2n),指数阶O(2n)B. 线性对数阶O(nlog2n),指数阶O(2n),立方阶O(n3)C. 常数阶O(1),线性阶O(n),指数阶O(2n)D. k次方阶O(nk),指数阶O(2n),对数阶O(log2n)正确答案. C10. ()嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。
《算法分析与设计》作业( 一)本课程作业由两部分组成。
第一部分为”客观题部分”, 由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、请写出批处理作业调度的回溯算法。
作业调度之最短作业优先算法5例题解析例题一、某系统采用不能移动已在主存储器中作业的可变分区方式管理主存储器,现有供用户使用的主存空间100K,系统配有4台磁带机,有一批作业见下表:作业序号进输入井时间要求计算时间需要主存容量申请磁带机数110:0025分钟15K2台210:2030分钟60K1台310:3010分钟50K3台410:3520分钟10K2台510:4015分钟30K2台按计算时间最短者优先算法如下表:我的解释:系统首先装入1、2、4,但1结束时4沿未到达,因此先执行2;2执行完毕后,资源可以分配给3或5,考虑5的时间短优先分配5并执行,执行完5后,主存中只有4已就绪并等待执行,因此开始执行4,执行4的同时系统会将作业3装入主存,最后自然执行作业3;因此最后的顺序是:1\2\5\4\3作业序号进输入井时间进入主存时间开始计算时间结束计算时间周转时间解释110:0010:1010:00102525此时输入井中只有一个作业且满足资源要求,因此被选中运行。
2102010:2010:2510:5535作业2到达输入井,满足资源要求,装入主存,等到作业1运行完毕进入运行。
510:4010:5510:5511:1030由于作业3要求主存空间无法满足,因此作业4先行一步装入主存,当作业2让出处理器的同时,作业5满足资源要求进入主存就绪。
根据算法作业5先进入处理器运行最后作业3装入主存并运行平均周转时间:(25+35+30+55+70/5=43分钟 [分析]解答本题时应注意如下几个问题:第一,系统采用的是多道程序设计技术,但没有限定并行工作的道数,因此, 只要当前尚未分配的资源可以满足在输入井中等待的某些作业的要求时,作业 调度可以按照给定的算法从中选择一个或多个作业装人主存储器;第二,采用可变分区方式管理主存储器,但没给出主存空间的分配算法,因而,只要有合适的空间就可分配,题中还规定可用移动技术来合并分散的空闲区; 第三,对磁带机采用静态分配;第四,进程调度采用可抢占的最高优先级调度算法,即对已被装人主存储器的作业而言优先级高的作业可抢占处理器执行;第五,虽然作业需要使用磁带机,但题意中已提示忽略磁带机和调度所花的时问,所以,解题时不必考虑外围设备的启动二八D 中断等复杂情况,只需把它们当作纯计算型的作业; 第六,由于没有规定什么时候开始进行作业调度,故在一般情况下只要输入井中有等待处理的作业就可按选定的算法去选择满足必要条件的作业。
《算法分析与设计》各章课后作业第一章 课后作业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篇,参考文献格式和标注位置须规范。
算法分析与设计作业及参考答案作业题目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)。
CS330:Introduction To Algorithm Spring2014Lecture2:Asymptotic AnalysisTF:Xianrui Meng Scribes:Raman Bahdanouski,Ellie VialExercise1Suppose you have algorithms with thefive running times listed below.How much slower do each of these algorithms get when you(a)double the input size,or(b)increase the input size by one?1.n2;2.n3;3.100n2;4.nlog(n);5.2n;SolutionFor doubling the input:1.f(n)=n2;f (2n)=4n2.;So the running time of the algorithm gets4times slower.2.f(n)=n3;f (2n)=8n3.;So the running time of the algorithm gets8times slower.3.f(n)=100n2;f (2n)=400n2.;So the running time of the algorithm gets4times slower.4.f(n)=nlog(n);f (2n)=2n∗log(2n)=2n∗(log(n)+log(2))=2n∗log(n)+2n∗log(2).;So the runningtime of the algorithm increases by2n∗log(n)+2n∗log(2).5.f(n)=2n;f (2n)=22n;f(2n)−f(n)=22n−2n=(2n)∗(2n−1);So the running time of the algorithmgets slower by the factor of(2n−1).For increasing the input by one:1.f(n)=n2;f (n+1)=n2+2n+1.;So the running time of the algorithm increases by2n+1.2.f(n)=n3;f (n+1)=n3+3n2+3n+1.;So the running time of the algorithm increases by3n2+3n+1.3.f(n)=100n2;f (n+1)=100(n2+2n+1).;So the running time of the algorithm increases by100(2n+1).4.f(n)=nlog(n);f(n+1)=(n+1)∗log(n+1);f(n+1)−f(n)=(n+1)∗log(n+1)−nlog(n)=n∗log(n+1)+log(n+1)−nlog(n)=log(n+1)+n∗(log(n+1)−log(n));So the running time increases by log(n+1)+n∗(log(n+1)−log(n)).5.f(n)=2n;f (n+1)=2n+1=2∗2n;So the running time of the algorithm doubles.2-12-2Lecture 2:Asymptotic Analysis Exercise 3Take the following list of functions and arrange them in ascending order of growth rate.That is,if function g(n)immediately follows function f(n)in your list,it should be the case that f(n)is O(g(n)).•f 1(n )=n 2.5•f 2(n )=√2n•f 3(n )=n +10•f 4(n )=10n•f 5(n )=100n•f 6(n )=n 2log (n )SolutionWe can start approaching this problem by putting f 4and f 5at end of the list,because these functions are exponential and will grow the fastest.f 4<f 5because 10<100.Other four functions are polynomial and will grower slower then exponential.We can represent f 1and f 2as:n 2.5=n 2∗√2n ;and √2n =2n 0.5.Now,we can say that out of all polynomial functions f 2will be the slowest because it has the smallest degree.Morover,and will be bounded by f 3because it has a higher degree of 1.Furthermore,f 1and f 6will be beween exponential f 4and f 5and polynomial f 2and f 3,because polynomial functions grow slower and both f 4and f 5and have the highest degree of 2out of all other polynomial functions.And f 6will be bounded by f 1because f 6=n 2log (n )and f 1=n 2√2n and log (n )=O (√2n ).Therefore the final order will be:f 2(n )<f 3(n )<f 6(n )<f 1(n )<f 4(n )<f 5(n )Lecture2:Asymptotic Analysis2-3Exercise5Assume you have functions f and g such that f(n)is O(g(n)).For each of the following statemenets,decided whether you think it is true or false and give a proof or counterexample.1.log f(n)is O(log g(n)).2.2f(n)is O(2g(n)).3.f(n)2is O(g(n)2).Solution1.False.Disprove by counterexample.Suppose f(n)=2and g(n)=1.This holds under the assumtion stated that f(n)is O(g(n))for all n, then2<C1for any constant C>2.However,log f(n)is not in O(log g(n))in the case that f(n)=2 and g(n)=1since log2>C∗log(1)=1>C∗0for any n and any constant C.To make the statement hold,assume there exists n1such that g(n)>2for all n>n1.By this assumption,there exists some n0for all n1>n0,such that f(n)<C∗g(n)for some constant C.Thus,when n>max(n0,n1),then log f(n)<log C+log g(n)<log C∗log O(g(n)),which means that log f(n))=O(log g(n)).2.False.Disprove by counterexample.Suppose f(n)=2n and g(n)=n.This holds under the assumtion that f(n)is O(g(n))for all n, 2n<Cn for any constant C>3.However,22n is not in O(2n)in the case if f(n)=2n and g(n)=n because22n>>C∗2n⇒1>C∗0for any n>0and any constant C.Thus2f(n)>O(2g(n))3.True.∃some n0∀n>n0,s.t.f(n)<C∗g(n)for some constant C,Therefore,for any positive n,f(n)2<(C∗g(n))2because f(n)2<C2∗g(n)2for all C>0.。
算法分析练习题(一)一、选择题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、已知一个分治算法耗费的计算时间T(n) ,T(n) 满足如下递归方程:T ( n) O2T(1)(n / 2) O(n )nn22解得此递归方可得T(n)= O (nlogn )。
18、动态规划算法有一个变形方法备忘录方法。
这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解。
19、递归的二分查找算法在divide 阶段所花的时间是O(1) ,conquer阶段所花的时间是T(n/2) ,算法的时间复杂度是O( log n) 。
20、用动态规划算法计算矩阵连乘问题的最优值所花的时间是O(n3) ,子问题空间大小是O(n2) 。
21、一个算法的优劣可以用(时间复杂度)与(空间复杂度)与来衡量。
22、直接或间接地调用自身的算法称为(递归算法)。
23、记号在算法复杂性的表示法中表示(渐进确界或紧致界)。
24、在分治法中,使子问题规模大致相等的做法是出自一种(平衡子问题)的思想。
25、动态规划算法适用于解(具有某种最优性质)问题。
26、最优子结构性质的含义是(问题的最优解包含其子问题的最优解)。
27、按照符号O的定义O(f)+O(g) 等于O(max{f(n),g(n)}) 。
28、二分搜索技术是运用(分治)策略的典型例子。
29、动态规划算法中,通常不同子问题的个数随问题规模呈(多项式)级增长。
30、(最优子结构性质)和(子问题重叠性质)是采用动态规划算法的两个基本要素。
三、算法填空1. 最大子段和: 动态规划算法int MaxSum(int n, int a[]){int sum=0, b=0 ;//sum 存储当前最大的b[j], b 存储b[j]for(int j=1 ;j<=n ;j++) {if(b>0)b+=a[j] ;else b=a[i] ;//一旦某个区段和为负,则从下一个位置累和if (b>sum) sum=b ;}return sum ;}2. 快速排序template<class Type>void QuickSort (Type a[], int p, int r){if (p<r) {int q=Partition(a,p,r);QuickSort (a,p,q-1); //对左半段排序QuickSort(a,q+1,r) ; //对右半段排序}}四、简答题1、写出下列复杂性函数的偏序关系(即按照渐进阶从低到高排序):n n n n n n n2 n n 3 23 log ! log 102、将所给定序列a[1:n] 分为长度相等的两段a[1:n/2] 和a[n/2+1:n] ,分别求出这两段的最大子段和,则a[1:n] 的最大子段和有哪三种情形?3、请说明动态规划方法为什么需要最优子结构性质。
最优子结构性质是指大问题的最优解包含子问题的最优解。
动态规划方法是自底向上计算各个子问题的最优解,即先计算子问题的最优解,然后再利用子问题的最优解构造大问题的最优解,因此需要最优子结构4、设计动态规划算法的主要步骤是怎么的?请简述。
参考解答:(1 )找出最优解的性质,并刻划其结构特征。
(6 分) (2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
5、分治法所能解决的问题一般具有哪几个特征?请简述。
参考解答:(1)该问题的规模缩小到一定的程度就可以容易地解决;(6 分) (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
6、算法的要特性是什么?参考解答:确定性、可实现性、输入、输出、有穷性7、算法分析的目的是什么?参考解答:分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。
8、算法的时间复杂性与问题的什么因素相关?参考解答:算法的时间复杂性与问题的规模相关,是问题大小n 的函数。
9、算法的渐进时间复杂性的含义?参考解答:当问题的规模n 趋向无穷大时,影响算法效率的重要因素是T(n) 的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n) 的数量级( 阶) 评价算法。
时间复杂度T(n) 的数量级( 阶) 称为渐进时间复杂性。
10 简述渐进时间复杂性上界的定义。
参考解答:T(n) 是某算法的时间复杂性函数,f(n) 是一简单函数,存在正整数No和C,n〉No,有T(n)<f(n) ,这种关系记作T(n)=O(f(n)) 。
11 快速排序算法最坏情况下需要多少次比较运算?参考解答:最坏情况下快速排序退化成冒泡排序,需要比较n2 次。
12 阐述归并排序的分治思路。
参考解答:讲数组一分为二,分别对每个集合单独排序,然后将已排序的两个序列归并成一个含n 个元素的分好类的序列。
如果分割后子问题还很大,则继续分治,直到一个元素。
13 快速排序的基本思想是什么。
参考解答:快速排序的基本思想是在待排序的N个记录中任意取一个记录,把该记录放在最终位置后,数据序列被此记录分成两部分。
所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。
之后重复上述过程,直到每一部分内只有一个记录为止。
14 分治法的基本思想是什么?将一个规模为N 的问题分解为K 个规模较小的子问题,这些子问题相互独立且与原问题性质相同。
求出子问题的解,就可得到原问题的解。
即一种分目标完成程序算法,简单问题可用二分法完成。
15 设计动态规划算法的主要步骤?参考解答:(1 )找出最优解的性质,并刻划其结构特征。
(6 分) (2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
16 分治法与动态规划法的异同共同点:将待求解的问题分解成若干子问题,先求解子问题,然后再从这些子问题的解得到原问题的解。
不同点:1、适合于用动态规划法求解的问题,分解得到的各子问题往往不是相互独立的;而分治法中子问题相互独立。
2、动态规划法用表保存已求解过的子问题的解,再次碰到同样的子问题时不必重新求解,而只需查询答案,故可获得多项式级时间复杂度,效率较高;而分治法中对于每次出现的子问题均求解,导致同样的子问题被反复求解,故产生指数增长的时间复杂度,效率较低。
17 分治法所能解决的问题一般具有的几个特征?参考解答:(1)该问题的规模缩小到一定的程度就可以容易地解决;(6 分) (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。