算法分析作业.docx
《算法分析作业.docx》由会员分享,可在线阅读,更多相关《算法分析作业.docx(14页珍藏版)》请在冰豆网上搜索。
算法分析作业
算法分析练习题
(一)
一、选择题
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归并排序D0/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)=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.最大子段和:
动态规划算法
intMaxSum(intn,inta[])
{
intsum=0,b=0;//sum存储当前最大的b[j],b存储b[j]
for(intj=1;j<=n;j++){
if(b>0)b+=a[j];
elseb=a[i];//一旦某个区段和为负,则从下一个位置累和
if(b>sum)sum=b;
}
returnsum;
}
2.快速排序
template
voidQuickSort(Typea[],intp,intr)
{
if(pintq=Partition(a,p,r);
QuickSort(a,p,q-1);//对左半段排序
QuickSort(a,q+1,r);//对右半段排序
}
}
四、简答题
1、写出下列复杂性函数的偏序关系(即按照渐进阶从低到高排序):
2、将所给定序列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)11快速排序算法最坏情况下需要多少次比较运算?
参考解答:
最坏情况下快速排序退化成冒泡排序,需要比较n2次。
12阐述归并排序的分治思路。
参考解答:
讲数组一分为二,分别对每个集合单独排序,然后将已排序的两个序列归并成一个含n个元素的分好类的序列。
如果分割后子问题还很大,则继续分治,直到一个元素。
13快速排序的基本思想是什么。
参考解答:
快速排序的基本思想是在待排序的N个记录中任意取一个记录,把该记录放在最终位置后,数据序列被此记录分成两部分。
所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。
之后重复上述过程,直到每一部分内只有一个记录为止。
14分治法的基本思想是什么?
将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。
求出子问题的解,就可得到原问题的解。
即一种分目标完成程序算法,简单问题可用二分法完成。
15设计动态规划算法的主要步骤?
参考解答:
(1)找出最优解的性质,并刻划其结构特征。
(6分)
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
16分治法与动态规划法的异同
共同点:
将待求解的问题分解成若干子问题,先求解子问题,然后再从这些子问题的解得到原问题的解。
不同点:
1、适合于用动态规划法求解的问题,分解得到的各子问题往往不是相互独立的;
而分治法中子问题相互独立。
2、动态规划法用表保存已求解过的子问题的解,再次碰到同样的子问题时不必重新求解,而只需查询答案,故可获得多项式级时间复杂度,效率较高;
而分治法中对于每次出现的子问题均求解,导致同样的子问题被反复求解,故产生指数增长的时间复杂度,效率较低。
17分治法所能解决的问题一般具有的几个特征?
参考解答:
(1)该问题的规模缩小到一定的程度就可以容易地解决;(6分)
(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最
优子结构性质;
(3) 利用该问题分解出的子问题的解可以合并为该问题的解;
(4)原问题所分解出的各个子问题是相互独立的,即子问题之间不包
含公共的子问题。
五、算法设计题
1.【最长上升子序列问题】——提示:
此题可采用动态规划算法实现
对于给定的一个序列
,
。
我们可以得到一些递增上升的子序列
,这里
。
比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。
这些子序列中最长的长度是4,比如子序列(1,3,5,8)。
你的任务:
就是对于给定的序列,求出最长上升子序列的长度。
要求写出你设计的算法思想及递推函数的公式表达。
.
2.【Gray码构造问题】——提示:
此题可采用分治递归算法实现
问题描述:
“格雷码”是一个长度为
的序列,满足:
(a)每个元素都是长度为n比特的串
(b)序列中无相同元素
(c)连续的两个元素恰好只有1个比特不同
例如:
n=2时,格雷码为{00,01,11,10}。
Gray码是一种编码,这种编码可以避免在读取时,因各数据位时序上的差异造成的误读。
格雷码在工程上有广泛应用。
但格雷码不便于运算,请你设计一种构造方法,输入长度序列n,输出格雷码(你只要做出一种构造方案即可,格雷码并不唯一)。
3.现在有8位运动员要进行网球循环赛,要设计一个满足以下要求的比赛日程表:
(1)每个选手必须与其他选手各赛一次;
(2)每个选手一天只能赛一次;
(3)循环赛一共进行n–1天。
请利用分治法的思想,给这8位运动员设计一个合理的比赛日程。
4.对于矩阵连乘所需最少数乘次数问题,其递归关系式为:
其中m[i,j]为计算矩阵连乘Ai…Aj所需的最少数乘次数,pi-1为矩阵Ai的行,
为矩阵Ai的列。
现有四个矩阵,其中各矩阵维数分别为:
A1
A2
A3
A4
5010
1040
4030
305
p0p1
p1p2
p2p3
p3p4
请根据以上的递归关系,计算出矩阵连乘积A1A2A3A4所需要的最少数乘次数。
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.规则证明:
O(f(n))+O(g(n))=O(max{f(n),g(n)})
8.给定已按升序排好序的n个元素a[0:
n-1],现要在这n个元素中找出一特定元素x,返回其在数组中的位置,如果未找到返回-1。
写出二分搜索的算法,并分析其时间复杂度。
9.利用分治算法写出合并排序的算法,并分析其时间复杂度
【下载本文档,可以自由复制内容或自由编辑修改内容,更多精彩文章,期待你的好评和关注,我将一如既往为您服务】