2014年12月中南大学网络教育课程考试:算法分析与设计作业参考答案

合集下载

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

A.广度优先B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A)策略,从根结点出发搜索解空间树。

A.广度优先B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。

A.B.C.D. void backtrack (int t){if (t>n) output(x);elsefor (int i=t;i<=n;i++) {swap(x[t], x[i]);if (legal(t)) backtrack(t+1); swap(x[t], x[i]);}}void backtrack (int t){if (t>n) output(x);elsefor (int i=0;i<=1;i++) {x[t]=i;if (legal(t)) backtrack(t+1); }}10. 回溯法的效率不依赖于以下哪一个因素?(C )A.产生x[k]的时间;B.满足显约束的x[k]值的个数;C.问题的解空间的形式;D.计算上界函数bound的时间;E.满足约束函数和上界函数约束的所有x[k]的个数。

F.计算约束函数constraint的时间;11. 常见的两种分支限界法为(D)A. 广度优先分支限界法与深度优先分支限界法;B. 队列式(FIFO)分支限界法与堆栈式分支限界法;C. 排列树法与子集树法;D. 队列式(FIFO)分支限界法与优先队列式分支限界法;12. k带图灵机的空间复杂性S(n)是指(B)A.k带图灵机处理所有长度为n的输入时,在某条带上所使用过的最大方格数。

B.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的方格数的总和。

C.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的平均方格数。

算法设计与分析-习题参考答案

算法设计与分析-习题参考答案

算法设计与分析基础习题1.15..证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立.Hint:根据除法的定义不难证明:●如果d整除u和v, 那么d一定能整除u±v;●如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n。

数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。

故gcd(m,n)=gcd(n,r)6.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?Hint:对于任何形如0<=m<n的一对数字,Euclid算法在第一次叠代时交换m和n, 即gcd(m,n)=gcd(n,m)并且这种交换处理只发生一次.7.a.对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?(1次)b. 对于所有1≤m,n≤10的输入, Euclid算法最多要做几次除法?(5次)gcd(5,8)习题1.21.(农夫过河)P—农夫W—狼G—山羊C—白菜2.(过桥问题)1,2,5,10---分别代表4个人, f—手电筒4. 对于任意实系数a,b,c, 某个算法能求方程ax^2+bx+c=0的实根,写出上述算法的伪代码(可以假设sqrt(x)是求平方根的函数)算法Quadratic(a,b,c)//求方程ax^2+bx+c=0的实根的算法//输入:实系数a,b,c//输出:实根或者无解信息If a≠0D←b*b-4*a*cIf D>0temp←2*ax1←(-b+sqrt(D))/tempx2←(-b-sqrt(D))/tempreturn x1,x2else if D=0 return –b/(2*a)else return “no real roots”else //a=0if b≠0 return –c/belse //a=b=0if c=0 return “no real numbers”else return “no real roots”5.描述将十进制整数表达为二进制整数的标准算法a.用文字描述b.用伪代码描述解答:a.将十进制整数转换为二进制整数的算法输入:一个正整数n输出:正整数n相应的二进制数第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n第二步:如果n=0,则到第三步,否则重复第一步第三步:将Ki按照i从高到低的顺序输出b.伪代码算法DectoBin(n)//将十进制整数n转换为二进制整数的算法//输入:正整数n//输出:该正整数相应的二进制数,该数存放于数组Bin[1...n]中i=1while n!=0 do {Bin[i]=n%2;n=(int)n/2;i++;}while i!=0 do{print Bin[i];i--;}9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.(算法略) 对这个算法做尽可能多的改进.算法MinDistance(A[0..n-1])//输入:数组A[0..n-1]//输出:the smallest distance d between two of its elements习题1.31.考虑这样一个排序算法,该算法对于待排序的数组中的每一个元素,计算比它小的元素个数,然后利用这个信息,将各个元素放到有序数组的相应位置上去.a.应用该算法对列表‖60,35,81,98,14,47‖排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表‖60,35,81,98,14,47‖排序的过程如下所示:b.该算法不稳定.比如对列表‖2,2*‖排序c.该算法不在位.额外空间for S and Count[] 4.(古老的七桥问题)习题1.41.请分别描述一下应该如何实现下列对数组的操作,使得操作时间不依赖数组的长度. a.删除数组的第i 个元素(1<=i<=n)b.删除有序数组的第i 个元素(依然有序) hints:a. Replace the i th element with the last element and decrease the array size of 1b. Replace the ith element with a special symbol that cannot be a value of the array ’s element(e.g., 0 for an array of positive numbers ) to mark the i th position is empty. (―lazy deletion ‖)第2章 习题2.17.对下列断言进行证明:(如果是错误的,请举例) a. 如果t(n )∈O(g(n),则g(n)∈Ω(t(n)) b.α>0时,Θ(αg(n))= Θ(g(n)) 解:a. 这个断言是正确的。

中南大学现代远程教育课程考试复习题及参考答案.

中南大学现代远程教育课程考试复习题及参考答案.

中南大学现代远程教育课程考试复习题及参考答案数据结构一、判断题:(判断下列各题是否正确,正确在括号内打“√”,错的找“×”。

)1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

()2.链式存储在插人和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。

()3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。

()4.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。

()5.一个广义表的表尾总是一个广义表。

()6.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。

()7.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。

()8.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。

()9.直接选择排序是一种稳定的排序方法。

()10.30、闭散列法通常比开散列法时间效率更高。

()11.有n个结点的不同的二叉树有n!棵。

( )12.直接选择排序是一种不稳定的排序方法。

( )13.在2048个互不相同的关键码中选择最小的5个关键码,用堆排序比用锦标赛排序更快。

( )14.当3阶B_树中有255个关键码时,其最大高度(包括失败结点层)不超过8。

( )15.一棵3阶B_树是平衡的3路搜索树,反之,一棵平衡的3路搜索树是3阶非B_树。

( )16.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。

在设计再散列函数时,要求计算出的值与表的大小m互质。

( )17.在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k 的结点有nk个,则有n0=nk+1。

( )18.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。

( )19.如果两个串含有相同的字符,则这两个串相等。

算法分析与设计作业(一)及参考答案

算法分析与设计作业(一)及参考答案

《算法分析与设计》作业(一)本课程作业由两部分组成。

第一部分为“客观题部分”,由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、请写出批处理作业调度的回溯算法。

生命与环境-中南大学网络教育2014年12月课程考试复习资料

生命与环境-中南大学网络教育2014年12月课程考试复习资料

(一)单选题1.人体中含量最高的元素是(),达到()。

(A)氧,60%(B)碳,50%(C)氢,60%(D)氮,50%参考答案:(A)2.细胞膜的结构为()。

(A)两面是磷脂分子,中间是蛋白质和糖(B)两面是蛋白质和糖,中间是磷脂分子(C)两面是蛋白质,中间是磷脂分子和糖(D)两面是磷脂分子和糖,中间是蛋白质参考答案:(A)3.地球离开太阳最近的日期是每年的()前后,离开太阳最远的日期是每年的()前后。

(A)7月5日,1月4日(B)1月4日,7月5日(C)夏至日,冬至日(D)冬至日,夏至日参考答案:(B)4.DNA全称(),RNA全称();碱基对有两种组合,一种是(),另一种是()。

(A)脱氧核糖核酸,核糖核酸;腺嘌呤A和胞嘧啶C,鸟嘌呤G和胸腺嘧啶T(B)核糖核酸,脱氧核糖核酸;腺嘌呤A和胞嘧啶C,鸟嘌呤G和胸腺嘧啶T(C)脱氧核糖核酸,核糖核酸;腺嘌呤A和胸腺嘧啶T,鸟嘌呤G和胞嘧啶C(D)核糖核酸,脱氧核糖核酸;腺嘌呤A和胸腺嘧啶T,鸟嘌呤G和胞嘧啶C参考答案:(C)5.太阳距离地球(),光从太阳到达地球的时间大约是()。

(A)1.1亿公里,600秒(B)1.3亿公里,550秒(C)1.5亿公里,500秒(D)1.7亿公里,450秒参考答案:(C)6.如果父亲、母亲均患有抗维生素D佝偻病,那么他们的后代将遗传此病,女儿的患病率为(),儿子的患病率为()。

(A)100%,50%(B)50%,100%(C)50%,50%(D)100%,100%参考答案:(A)7.《齐民要术》的作者是()。

(A)张仲景(B)贾思勰(C)孙思邈(D)李时珍参考答案:(C)8.体细胞的分裂方式是(),性细胞的分裂方式是()。

(A)减数分裂,有丝分裂(B)有丝分裂,有丝分裂(C)减数分裂,减数分裂(D)有丝分裂,减数分裂参考答案:(D)9.所谓基因,是指()。

(A)DNA和RNA中带有遗传效应的片段(B)碱基对中带有遗传效应的部分(C)DNA中带有遗传效应的片段(D)RNA中带有遗传效应的片段参考答案:(C)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)。

【最新版】中南大学2014年12月网络教育课程考试《计算机基础》复习资料

【最新版】中南大学2014年12月网络教育课程考试《计算机基础》复习资料

中南大学2014年12月网络教育课程考试复习资料《计算机基础》(2套)第一套一. 单选题(共3题,共6分)1. Outlook Express中设置唯一的电子邮件账号:kao@,现成功接收到一封来自shi@的邮件,则发送完成后()。

(2分)A.发件箱中有kao@邮件B.发件箱中有shi@邮件C.已发送邮件中有kao@邮件D.已发送邮件中有shi@邮件答案:D2. Internet Explorer浏览器本质上是一个()。

(2分)A.连入Internet的TCP/IP 程序B.连入Internet的SNMP程序C.浏览Internet上的Web页面的服务器程序D.浏览Internet上Web页面的客户程序答案:D3. 关于Internet,以下说法正确的是()。

(2分)A.Internet属于美国B. Internet属于联合国C.Internet属于国际红十字会D.Internet不属于某个国家或组织答案:D二. 多选题(共1题,共5分)1. 拨号入网必须的硬件设备包括( )。

(5分)A.计算机B.电话线路C.调制解调器D.声卡E.网卡ABD答案:ABD三. 判断题(共2题,共4分)1. 协议总是指某一层协议,既是对同等实体之间的通信制定的有关通信规则约定的集合。

(2分)答案:正确2. 将文件从FTP服务器传输到客户机的过程称为上载。

(2分)答案:错误四. 单选题(共2题,共4分)1. 冯·诺依曼计算机的基本原理是()。

(2分)A.程序外接B.逻辑连接C.数据内置D.程序存储答案:D2. 个人计算机属于()。

(2分)A.微型计算机B.小型计算机C.中型计算机D.小巨型计算机考生答案:A五. 多选题(共1题,共5分)1. 可以作为输入设备的是()。

(5分)A.只读光盘B.扫描仪C.绘图仪D.显示器E.激光打印机答案:A.B,C六. 判断题(共2题,共4分)1. 运算器的主要功能是进行算术运算,不能进行逻辑运算。

中南大学2014年12月网络教育课程考试中南大学《中国近现代史纲要 》复习资料

中南大学2014年12月网络教育课程考试中南大学《中国近现代史纲要 》复习资料
D.社会建设
★标准答案:A,B,C,D
2.在国民党统治时期,属于四大家族垄断的大银行有()。(3分)A.中国银行
B.交通银行
C.中央银行
D.中国农民银行
★标准答案:A,B,C,D
3. 1967年,在所谓“二月逆流”中与中央文革小组错误做法进行抗争的有( )。(3分)A.谭震林
B.陈毅
C.叶剑英
D.徐向前
正确
★标准答案:正确
4.太平天国的《天朝田亩制度》和《资政新篇》都是具有资本主义色彩的社会改革方案。(3分)错误
正确
★标准答案:错误
5.百日维新颁布的新政措施在一定程度上代表了资产阶级的利益和愿望,促进了资本主义工商业的发展,但这些措施并未触及封建制度的根本。(3分)错误
★标准答案:B,C,D
10.近代以来中国人民面临的历史任务有( )。(3分)A.争得民族独立和人民解放
B.发展资本主义
C.实现国家富强和人民富裕
D.建立民主自由的国家
★标准答案:A,C
三.判断题(共10题,共30分)
1.中国资产阶级及其代表人物提出在中国建立资产阶级共和国的方案,对于地主阶级与买办性的大资产阶级专政的政治现实是一种批判,但在实际上却不具备现实的可行性。(3分)错误
中南大学2014年12月网络教育课程考试复习资料《中国近现代史纲要》
(总共40题共100分)
一.单选题(共20题,共40分)
1.新文化运动是一场( )的文化运动。(2分)A.资产阶级
B.无产阶级
C.新民主主义
D.马克思主义
★标准答案:A
2.中华苏维埃临时中央政府第一任主席是( )。(2分)A.毛泽东
B.资产阶级与农民阶级
C.工人阶级与资产阶级
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《算法分析与设计》作业参考答案作业一一、名词解释:1.递归算法:直接或间接地调用自身的算法称为递归算法。

2.程序:程序是算法用某种程序设计语言的具体实现。

二、简答题:1.算法需要满足哪些性质?简述之。

答:算法是若干指令的有穷序列,满足性质:(1)输入:有零个或多个外部量作为算法的输入。

(2)输出:算法产生至少一个量作为输出。

(3)确定性:组成算法的每条指令清晰、无歧义。

(4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。

2.简要分析分治法能解决的问题具有的特征。

答:分析分治法能解决的问题主要具有如下特征:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。

答:将递归算法转化为非递归算法的方法主要有:(1)采用一个用户定义的栈来模拟系统的递归调用工作栈。

该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。

(2)用递推来实现递归函数。

(3)通过Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。

后两种方法在时空复杂度上均有较大改善,但其适用范围有限。

三、算法编写及算法应用分析题: 1.冒泡排序算法的基本运算如下:for i ←1 to n-1 do for 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.设计一个分治算法计算一棵二叉树的高度。

答:算法思想:对于二叉树T ,若为空树,则其高度为0;否则,分别求其左子树和右子树的高度,最大者加1 即为树T 的高度。

其描述如下:)1(2)()(1-=-=∑=n ni n n T niint BTLength(BT T)//为了便于描述,假定二叉树类型为BT。

T 的左子树为T.lchild,右子树为T.rchild。

{if(T= =NULL) return 0; //T为空树return max(BTLength(T.lchild),BTLength(T.rchild)) +1}3.设计一个分治算法来判定给定的两棵二叉树T1 和T2 是否相同。

答:算法思想:对于两棵二叉树T1 和T2,若其根结点值相同,且其左右子树分别对应相同,则T1=T2;否则T1≠T2。

其描述如下:boolean BTEQUAL(BT T1,BT T2)//为了便于描述,假定二叉树类型为BT。

二叉树T的左子树为T.lchild,右子树为T.rchild。

二叉树T的根结点值T.data。

{if(T1= =NULL&& T2= =NULL) return True; //均为空树if(T1&&T2&&T1.data==T2.data&&BTEQUAL(T1.lchild,T2.lchild)&&BTEQUAL (T1.rchild, T2.rchild))return True;return False;}4.给出一个分治算法来找出n 个元素的序列中的第2大元素,并分析算法的时间复杂度。

答:算法思想:当序列A[1..n]中元素的个数n=2 时,通过直接比较即可找出序列的第2 大元素。

当n>2 时,先求出序列A[1..n-1]中的第1 大元素x1 和第2 大元素x2;然后,通过2次比较即可在三个元素x1x2 和A[n]中找出第2 大元素,该元素即为A[1..n]中的第2 大元素。

算法描述如下:SecondElement(A[low..high],max1,max2){//假设主程序中调用该过程条件为high-low>=2if(hight-low= =2){if(A[low]<A[hight]){max2= A[low];max1=A[high];}else {max2= A[high];max1=A[low];}}else{SecondElement(A[low..high],x1,x2);if(x1<=A[n]) { max2=max1; max1=A[n];}else if(x2>=A[n]) { max2=x2; max1=x1; }else { max2=A[n]; max1=x1; }}}该算法的时间复杂度满足如下递归方程:T(n)=T(n-1)+2;T(2)=1。

解得T(n)=2n-3。

作业二一、名词解释:1.MST 性质:G=(V,E)是连通带权图,U 是V 的真子集。

如果(u,v)∈E ,且u ∈U ,v ∈V-U ,且在所有这样的边中,(u,v)的权c[u][v]最小,那么一定存在G 的一棵最小生成树,它以(u,v)为其中一条边。

这个性质称为MST 性质。

2.子问题的重叠性质:递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次,这种性质称为子问题的重叠性质。

二、简答题:1.简述动态规划算法求解的基本要素。

动态规划算法求解的基本要素包括:(1)最优子结构是问题能用动态规划算法求解的前提;(2)动态规划算法,对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此子问题时,只是简单地用常数时间查看一下结果,即重叠子问题。

2.备忘录方法和动态规划算法相比有何异同?简述之。

备忘录方法是动态规划算法的变形。

与动态规划算法一样,备忘录方法用表格保存已解决的子问题的答案,在下次需要解此问题时,只要简单地查看该子问题的解答,而不必重新计算。

备忘录方法与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上递归的。

因此,备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看,避免了相同的子问题的重复求解,而直接递归方法没有此功能。

3.贪心算法求解的问题主要具有哪些性质?简述之。

贪心算法求解的问题一般具有二个重要的性质:一是贪心选择性质,这是贪心算法可行的第一个基本要素;另一个是最优子结构性质,问题的最优子结构性质是该问题可用贪心算法求解的关键特征。

三、算法编写及算法应用分析题:1.设计求解如下最大子段和问题的动态规划算法。

只需给出其递推计算公式即可。

最大子段和问题:给定由n 个整数(可能为负整数)组成的序列a 1a 2 … an ,求该序列形如Σi ≤k ≤j ak 的子段和的最大值。

当所有整数均为负整数时定义其最大子段和为0。

依次定义,所求的最优值为max{0, max1≤i ≤j ≤n Σi ≤k ≤j ak }。

答:下面给出求解该问题的动态规划算法中的递推计算公式。

记 b (j )=max1≤i ≤j {Σi ≤k ≤j ak },1≤j ≤n ,则所求最大子段和为max1≤j ≤nb (j )。

而计算b [j ]的递推计算公式为:b (0)=0 b (j )=max{b (j -1)+aj , aj }, 1≤j ≤n 。

该算法的时间复杂度为O(n );空间复杂度为O(n )。

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 +∈。

求由s 到t 的最小成本路径。

(1)给出使用动态规划算法求解多段图问题的基本思想。

(2)使用上述方法求解如下多段图问题。

s tV1V2V3V4V5解:(1)基本思想:设P(i,j)是从Vi 中的节点j 到汇点t 的最小成本路径,Cost(i,j)是其成本。

则i+1Cost(i,j)=min{c(j,h)+Cost(i+1,h)|h V ,(j,h)E}∈∈。

边界条件是(1)若h=t ,则Cost(h,t)=0;(2)Cost(k-1,j)=c(j,t)。

(2)求解过程可以表示为:s tV1V2V3V4V5其中每个节点标示的序偶(p,q)中,p 表示节点到t 的成本,q 表示后继节点的编号。

从而,最优路径为:1→2→7→10→12和1→3→6→10→12,成本为16。

3.最优二元归并问题:已知将两个分别包含 a 个和b 个记录的已分类文件归并在一起得到一个分类文件需作a +b 次记录移动。

现有n 个已分类文件F 1,F 1,⋯,Fn ,它们的记录个数分别为l 1, l 2,⋯, ln 。

现在考虑使用二元归并模式将这n 个文件归并成一个分类文件,要求记录移动次数最少。

设计一个贪心算法来求解一种最优的二元归并(即记录移动次数最少的二元归并)。

答:(1)贪心准则:依次将文件序列中记录最少的两个文件进行归并成一个文件,直到文件序列中只剩下一个文件为止。

(2)贪心算法:Algorithm BINARYTREE输入:n 个单结点二元树列表L ,这些棵树的根结点的权分别为l 1, l 2,⋯, ln 。

输出:一棵最优二元归并树L BeginFor i ←1 To n -1 DoGETNODE(T ) //该过程产生一个新结点TLCHILD(T)←LEAST(L) //将表L 中其根权最小的树取出并作为T 的左孩子RCHILD(T)←LEAST(L) ////将表L 中其根权最小的树取出并作为T的右孩子WEIGHT(T)←WEIGHT(LCHILD(T))+WEIGHT(RCHILD(T))RepeatReturn(L)End.4.带限期的作业调度问题:n 个作业需要在一台机器上处理,每个作业可在单位时间内完成。

每个作业i都有一个截止期限di>0(di 为整数),当且仅当作业i 在它的截止期限之前被完成,获得pi>0 的效益。

一种可行的调度方案为n 个作业的一个子集J,其中J 中的每个作业都能在各自的截止期限内完成。

该可行调度方案的效益是J 中作业的效益之和。

试设计贪心算法求效益最大的可行调度方案(即最优调度方案)。

答:(1)贪心准则:从J=开始,不断添加作业到J 中。

每次加入J 的作业是保证J 是可行的前提下使得J 中效益达到最大。

相关文档
最新文档