算法分析复习题1(gai)
- 格式:doc
- 大小:46.00 KB
- 文档页数:4
填空1.直接或间接地调用自身的算法称为 递归 。
2.算法的复杂性是 算法效率 的度量,是评价算法优劣的重要依据。
3.以广度优先或以最小耗费方式搜索问题解的算法称为 分支限界法。
4.回溯法解题的显著特点是在搜索过程中动态产生问题的解空间。
在任何时刻,算法只保存从根结点到当前扩展结点的路径。
如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为 o(h(n)) 。
5.人们通常将问题的解决方案分为两大类:一类是可以通过执行若干个步骤就能得出问题6.算法就是一组有穷的 规则 ,它们规定了解决某一特定类型问题的 一系列运算 。
7.在进行问题的计算复杂性分析之前,首先必须建立求解问题所用的计算模型。
3个基本计算模型是 随机存取机、 随机存取存储程序机 、 图灵机 。
8.快速排序算法的性能取决于 划分的对称性 。
9.计算机的资源最重要的是 内存 和 运算 资源。
因而,算法的复杂性有时间 和 空间 之分。
10.贪心算法总是做出在当前看来 最优 的选择。
也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的 局部最优解 。
11.许多可以用贪心算法求解的问题一般具有2个重要的性质: 最优子结构的 性质和 贪心选择的 性质。
12.常见的两种分支限界法为 队列式 和 优先队列式 。
13.解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中需要排序的是 回溯法 ,不需要排序的是 动态规划和分支限界法 。
14.f ( n ) = 6 × 2n + n 2,f(n)的渐进性态f ( n ) = O ( 2^n )。
15.对于含有n 个元素的排列树问题,最好情况下计算时间复杂性为 ,最坏情况下计算时间复杂性为 n! 。
16.在忽略常数因子的情况下,O 、Ω和Θ三个符号中, Θ 提供了算法运行时间的一个上界。
17.回溯法的求解过程,即在问题的解空间树中,按 深度优先 策略从根结点出发搜索解空间树。
算法设计与分析复习题算法设计与分析是计算机科学中的一个重要领域,它涉及到如何高效地解决计算问题。
以下是一些复习题,可以帮助学生更好地理解和掌握算法设计与分析的基本概念和技巧。
1. 算法的基本概念:- 什么是算法?请列举算法的基本特性。
- 解释算法的时间复杂度和空间复杂度,并给出一个例子。
2. 算法设计策略:- 描述贪心算法的工作原理,并给出一个实际问题的例子。
- 解释分治算法的基本步骤,并用快速排序算法来说明。
3. 排序算法:- 比较选择排序、插入排序和冒泡排序的时间复杂度。
- 描述归并排序和快速排序的工作原理,并讨论它们的优缺点。
4. 搜索算法:- 解释线性搜索和二分搜索的区别。
- 描述哈希表的工作原理,并讨论其在搜索算法中的应用。
5. 图算法:- 解释深度优先搜索(DFS)和广度优先搜索(BFS)的工作原理。
- 描述迪杰斯特拉(Dijkstra)算法和贝尔曼-福特(Bellman-Ford)算法,并比较它们的使用场景。
6. 动态规划:- 解释动态规划与分治法的区别。
- 给出一个动态规划解决的问题,并描述其解决方案。
7. 复杂度分析:- 什么是大O记号、大Ω记号和大Θ记号?它们如何帮助我们分析算法的效率?- 给出一个算法,并使用大O记号来分析其时间复杂度。
8. 算法优化:- 描述一些常见的算法优化技巧,例如空间换时间或时间换空间。
- 讨论算法优化在实际应用中的重要性。
9. 算法应用:- 举例说明算法在不同领域的应用,如在网络路由、机器学习或数据压缩中。
10. 算法的局限性:- 讨论算法在解决特定问题时可能遇到的局限性。
- 解释为什么某些问题被认为是不可解的或计算上不可行的。
结束语:通过这些复习题的练习,学生应该能够加深对算法设计与分析的理解,掌握不同算法的原理和应用场景,以及如何评估和优化算法的性能。
希望这些题目能够帮助学生在考试或实际工作中更加自信和高效。
算法分析复习题第⼀部分作业及复习题Suppose we are comparing implementations of insertion sort and merge sort on the same machine. For inputs of size n, insertion sort runs in 8n2steps, while merge sort runs in 64n lgn steps. For which values of n does insertion sort beat merge sort? P13 T1.2-2答:n>431、n>43假设我们正在⽐较的实现插⼊排序、归并排序在同⼀台机器上。
对于输⼊的⼤⼩n,插⼊排序运⾏在8 n2步骤,⽽归并排序运⾏在64 n外侧膝状核步骤。
n的值并插⼊排序击败归并排序?2、写出插⼊排序、合并排序伪代码,对插⼊排序进⾏最坏、最好和平均情况下复杂度分析,写出合并排序的递归⽅程,并⽤递归树⽅法和主⽅法对递归⽅程求解。
Write the running time of the Merge sort with recurrences. Solve the recurrences with recursion-tree method.写的运⾏时间归并排序有复发。
解决复发与递归树的⽅法。
算法描述3分The best-case running time is T(n) = c1n + c2(n - 1) + c4(n - 1) + c5(n - 1) + c8(n - 1) = (c1 + c2 + c4 + c5 + c8)n - (c2+ c4 + c5 + c8). This running time can be expressed as an + b for constants a and b that depend on the statement costs c i; it is thus a linear function of n.This worst-case running time can be expressed as an2 + bn + c for constants a, b, and c that again depend on the statement costs c i; it is thus a quadratic function of n.分析2分算法描述2分Θ(1) if n = 1T(n) =2T(n/2) + Θ(n) if n > 1.递归⽅程和求解3分InsertionSort(A, n) { for i = 2 to n {key = A[i]j = i - 1;while (j > 0) and (A[j] > key) { A[j+1] = A[j] j = j - 1}A[j+1] = key}}Θ(1) if n = 1T(n) =2T(n/2) + Θ(n) if n > 1.3、⼆分查找算法以及复杂性分析P37 2.3-54、三个渐进符号的定义及其意义 P42-465、 Express the function//表达功能 )(132)(22n n n n T θ=+=? why? P42-436、3.1-1P507、递归树⽅法求T(n)=2T(n/2)+cn(n>1) P34-358、Do Exercise 4.1-6 on page 67 in CLRS.9、公式法求T(n)=4T(n/2)+n T(n)=4T(n/2)+n2T(n)=4T(n/2)+n3P75 T(n) = 4T(n/2) + na = 4,b = 2 ?n log b a= n2; f (n) = n.CASE 1: f (n) = O(n2 –ε) for ε = 1.∴T(n) = Θ(n2).T(n) = 4T(n/2) + n2a = 4,b = 2 ?n log b a= n2; f (n) = n2.CASE 2: f (n) = Θ(n2lg0n), that is, k = 0.∴T(n) = Θ(n2lg n).T(n) = 4T(n/2) + n3a = 4,b = 2 ?n log b a= n2; f (n) = n3.CASE 3: f (n) = Ω(n2 + ε) for ε = 1and 4(n/2)3≤ cn3 (reg. cond.) forc = 1/2.∴T(n) = Θ(n3).10True-false questions1.An algorithm is said to be correct if, for some input instance, it halts with thecorrect output (p6).⼀个算法是正确的,如果⼀些输⼊实例,它停⽌与正确的输出(p6)。
算法分析复习题目及答案16-12-10一。
选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( D )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法5. 回溯法解旅行售货员问题时的解空间树是()。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法注意:动态规划采用的是自底向上的方式求解,而贪心算法采用的是自顶向下的方式来求解问题。
7、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法11.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法注意:备忘录是动态规划方法的一个步骤。
14.哈弗曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O()C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是( B )。
A、最小堆B、最大堆C、栈D、数组16.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。
A、分治法B、动态规划法C、贪心法D、回溯法18.下面是贪心算法的基本要素的是( C )。
算法分析复习题算法分析复习题算法分析是计算机科学中的一门重要课程,它研究的是算法的性能和效率。
在实际应用中,我们需要通过对算法进行分析来评估其是否满足实际需求。
本文将通过一些复习题来帮助读者巩固算法分析的知识。
1. 什么是时间复杂度?时间复杂度是衡量算法执行时间的度量标准。
它表示随着输入规模的增加,算法执行时间的增长趋势。
常见的时间复杂度有O(1)、O(log n)、O(n)、O(n log n)、O(n^2)等。
2. 什么是空间复杂度?空间复杂度是衡量算法所需内存空间的度量标准。
它表示随着输入规模的增加,算法所需内存空间的增长趋势。
常见的空间复杂度有O(1)、O(n)、O(n^2)等。
3. 什么是渐进符号?渐进符号用于描述算法的复杂度。
常见的渐进符号有大O符号(O)、大Ω符号(Ω)和大Θ符号(Θ)。
大O符号表示算法的上界,大Ω符号表示算法的下界,大Θ符号表示算法的紧确界。
4. 什么是最坏情况时间复杂度?最坏情况时间复杂度是指在最坏的输入情况下,算法执行的时间复杂度。
它描述了算法在最不利的情况下的性能表现。
5. 什么是平均情况时间复杂度?平均情况时间复杂度是指在所有可能输入情况下,算法执行的时间复杂度的平均值。
它描述了算法在各种输入情况下的性能表现。
6. 什么是最好情况时间复杂度?最好情况时间复杂度是指在最好的输入情况下,算法执行的时间复杂度。
它描述了算法在最有利的情况下的性能表现。
7. 什么是递归算法?递归算法是指在解决问题时,通过调用自身来实现的算法。
递归算法通常包括递归调用和递归终止条件两个要素。
递归算法的时间复杂度可以通过递推关系式和递归树来分析。
8. 什么是动态规划?动态规划是一种将复杂问题分解成简单子问题来解决的方法。
它通常包括确定状态、确定状态转移方程、确定初始条件和计算最优解等步骤。
动态规划的时间复杂度可以通过状态转移方程和子问题个数来分析。
9. 什么是贪心算法?贪心算法是一种每步选择都采取当前状态下最优策略的算法。
1一、选择题1、二分搜索算法是利用〔 A 〕实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、以下不是动态规划算法根本步骤的是〔 A 〕。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是〔 A 〕的搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是〔B 〕。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.以下算法中通常以自底向上的方式求解最优解的是〔 B 〕。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是〔C 〕。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是〔D 〕。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是〔 A 〕。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是〔 D 〕。
1A、广度优先B、最小消耗优先C、最大效益优先D、深度优先10.以下算法中通常以深度优先方式系统搜索问题解的是〔 D 〕。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
〔 B 〕A、分治法B、动态规划法C、贪心法D、回溯法12.哈弗曼编码的贪心算法所需的计算时间为〔 B 〕。
A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕13.分支限界法解最大团问题时,活结点表的组织形式是〔 B 〕。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是〔 B 〕。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是〔 A 〕。
A、分治法B、动态规划法C、贪心法D、回溯法〔 C 〕。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于以下哪些因素〔 D 〕A. 满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间〔 B 〕A.递归函数 B.剪枝函数 C.随机数函数 D.搜索函数19、下面关于NP问题说法正确的选项是〔B 〕A NP问题都是不可能解决的问题B P类问题包含在NP类问题中C NP完全问题是P类问题的子集D NP类问题包含在P类问题中20蒙特卡罗算法是〔 B 〕的一种。
内部资料,转载请注明出处,谢谢合作。
《算法分析与设计》期末复习题(一)一、选择题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. B.C.D.10. 回溯法的效率不依赖于以下哪一个因素?(C )A.产生x[k]的时间;B.满足显约束的x[k]值的个数;C.问题的解空间的形式;D.计算上界函数bound的时间;E.满足约束函数和上界函数约束的所有x[k]的个数。
《算法设计与分析》复习题1一、填空:1.算法是指解决问题的方法或过程,算法所描述的指令序列必须满足下列性质○1、○2、○3、○4、○5。
2.程序是算法用某种程序设计语言的具体实现,程序可以不满足算法的○1性质。
所以像操作系统这样的软件○2(是/不是)算法。
3.抽象数据类型是算法设计的重要概念。
严格地讲,它是算法的一个○1同定义在该模型上并作为○2的一组运算。
4.算法的复杂性是算法运行所需要的计算机资源的量。
这个量集中反映算法的效率,通常用C=F(N、I、A)表示,其中C、N、I、A所代表的含义是什么?5.设f(N)和g(N)是定义在正数集上的正函数,当N充分大时,f(N)=O(g(N))表示g(N)是f(N)的一个○1;f(N)=Ω(g(N))表示g(N)是f(N)的一个○2;f(N)=θ(g(N))表示g(N)是f(N)③。
6.直接或间接地调用自身的算法称为○1的计算公式外,还必须提供○2初始值。
7.动态规划算法与分治法的基本思想都是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
它们的主要区别是分治法求解时,对有些子问题会○1,而动态规划法采用○2避免子问题重复计算。
8.贪心算法与动态规划算法都要求问题具有最优子结构性质,这是两类算法的一个共同点。
但是否具有最优子结构的问题,用贪心算法和动态规划算法都可以得到最优解?举例说明。
9.下面的说法错误的是________。
a.算法原地工作的含义是指不需要任何额外的辅助空间;b.在相同的规模n下,时间复杂度为O(n)的算法在时间上总是优于时间复杂度为O(2n)的算法。
c.所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界;d.同一算法,实现语言的级别越高,执行效率越低。
10.回朔法的求解目标是找出解空间中满足约束条件的○1的求解目标则是找出满足约束条件的○2或在某种意义下的最优解。
11.回朔法以○1优先的方式搜索解空间树,而分支限界法则以○2优先或以○3优先的方式搜索解空间树。
《算法分析与设计》课程复习资料一、名词解释:1.算法2.程序3.递归函数4.子问题的重叠性质5.队列式分支限界法6.多机调度问题7.最小生成树 二、简答题:1.备忘录方法和动态规划算法相比有何异同?简述之。
2.简述回溯法解题的主要步骤。
3.简述动态规划算法求解的基本要素。
4.简述回溯法的基本思想。
5.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。
6.简要分析分支限界法与回溯法的异同。
7.简述算法复杂性的概念,算法复杂性度量主要指哪两个方面? 8.贪心算法求解的问题主要具有哪些性质?简述之。
9.分治法的基本思想是什么?合并排序的基本思想是什么?请分别简述之。
10.简述分析贪心算法与动态规划算法的异同。
三、算法编写及算法应用分析题:1.已知有3个物品:(w1,w2,w3)=(12,10,6),(p1,p2,p3)=(15,13,10),背包的容积M=20,根据0-1背包动态规划的递推式求出最优解。
2.按要求完成以下关于排序和查找的问题。
①对数组A={15,29,135,18,32,1,27,25,5},用快速排序方法将其排成递减序。
②请描述递减数组进行二分搜索的基本思想,并给出非递归算法。
③给出上述算法的递归算法。
④使用上述算法对①所得到的结果搜索如下元素,并给出搜索过程:18,31,135。
3.已知1()*()i i k k ij r r A a +=,k =1,2,3,4,5,6,r 1=5,r 2=10,r 3=3,r 4=12,r 5=5,r 6=50,r 7=6,求矩阵链积A 1×A 2×A 3×A 4×A 5×A 6的最佳求积顺序(要求给出计算步骤)。
4.根据分枝限界算法基本过程,求解0-1背包问题。
已知n=3,M=20,(w1,w2,w3)=(12,10,6),(p1,p2,p3)=(15,13,10)。
算法分析复习题⼀、单项选择题:1、算法的五⼤特征是确定性、有穷性、输⼊、输出和可⾏性。
其输⼊⾄少是( A )个。
A、0B、1C、n D、-12、⼤整数的乘法是利⽤的算法( C )。
A、贪⼼法B、动态规划法C、分治策略D、回溯法3、采⽤贪⼼算法的最优装载问题的主要计算量在于将集装箱依其重量从⼩到⼤排序,故算法的时间复杂度为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)4、⼀个问题可⽤动态规划算法或贪⼼算法求解的关键特征是问题的( B )。
A、重叠⼦问题B、最优⼦结构性质C、贪⼼选择性质D、定义最优解5、设⼀个算法的输⼊规模为n,Dn是所有输⼊的集合,任⼀输⼊I∈Dn,P(I)是I出现的概率,有=1,T(I)是算法在输⼊I下所执⾏的基本语句次数,则该算法的平均执⾏时间为(D)。
A、B、C、D、6、把递归算法转化为⾮递归算法有如下两种基本⽅法:(1)直接⽤循环结构的算法替代递归算法。
(2)⽤( A )模拟系统的运⾏过程,通过分析只保存必须保存的信息,从⽽⽤⾮递归算法替代递归算法。
A、栈B、队列C、顺序表D、链表7、算法分析中,记号表⽰(A)。
A、渐进下界B、渐进上界C、⾮紧上界D、紧渐进界9、贪⼼算法与动态规划算法的主要区别是(B )。
A、最优⼦结构B、贪⼼选择性质C、构造最优解D、定义最优解10、回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。
A、⼴度优先B、活结点优先C、扩展结点优先D、深度优先11. 回溯法的问题的解空间树是(B),并不需要在算法运⾏时构造⼀棵真正的树结构,然后再在该解空间树中搜索问题的解,⽽是只存储从根结点到当前结点的路径。
A、顺序⽅式的⼆叉树B、虚拟的树C、满⼆叉树D、完全⼆叉树12. 应⽤回溯法求解问题时,⾸先应该明确问题的解空间。
解空间中满⾜约束条件的决策序列称为(C)。
A、最优解B、局部最优解C、可⾏解D、最优⼦序列解13. ⼀个问题的最优解包含其⼦问题的最优解,则称此问题具有(D)性质。
《算法设计与分析》复习题1
一、填空:
1.算法是指解决问题的方法或过程,算法所描述的指令序列必须满足下列性质○1、○2、○3、○4、○5。
2.程序是算法用某种程序设计语言的具体实现,程序可以不满足算法的○1性质。
所以像操作系统这样的软件○2(是/不是)算法。
3.抽象数据类型是算法设计的重要概念。
严格地讲,它是算法的一个○1连同定义在该模型上并作为○2的一组运算。
4.算法的复杂性是算法运行所需要的计算机资源的量。
这个量集中反映算法的效率,通常用C=F(N、
I、A)表示,其中C、N、I、A所代表的含义是什么?
5.设f(N)和g(N)是定义在正数集上的正函数,当N充分大时,
f(N)=O(g(N))表示g(N)是f(N)的一个○1;
f(N)=Ω(g(N))表示g(N)是f(N)的一个○2;
f(N)=θ(g(N))表示g(N)是f(N)③。
6.直接或间接地调用自身的算法称为○1,在定义该算法时,除了提供必须的计算公式外,还必须提供○2初始值。
7.动态规划算法与分治法的基本思想都是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
它们的主要区别是分治法求解时,对有些子问题会○1,而动态规划法采用○2避免子问题重复计算。
8.贪心算法与动态规划算法都要求问题具有最优子结构性质,这是两类算法的一个共同点。
但是否具有最优子结构的问题,用贪心算法和动态规划算法都可以得到最优解?举例说明。
9.下面的说法错误的是________。
a.算法原地工作的含义是指不需要任何额外的辅助空间;
b.在相同的规模n下,时间复杂度为O(n)的算法在时间上总是优于时间复杂度为O(2n)的算法。
c.所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界;
d.同一算法,实现语言的级别越高,执行效率越低。
10.回朔法的求解目标是找出解空间中满足约束条件的○1,而分支限界法的求解目标则是找出满足约束条件的○2或在某种意义下的最优解。
11.回朔法以○1优先的方式搜索解空间树,而分支限界法则以○2优先或以○3优先的方式搜索解空间树。
12.按从活结点表中选择下一扩展结点的不同方式,可将分支限界法分为○1分支限界法和○2分支限界法。
13.○1假设某算法在输入规模为n时的计算时间为T(n)=3×2n,在某台计算机上实现并完成该算法
的时间为t秒,现另有一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能输入规模多大的问题?
○2若上述算法的计算时间改进为T(n)=n2,其余条件不变,则在新机器上用t秒时间能解输入规模多大的问题?
○3在上述算法的计算时间进一步改进为T(n)=8,其余条件不变,那么在新机器上用t秒时间能解输入规模多大的问题?
二、
1.设n是偶数,试计算运行下列程序段后m的值,并给出该程序的时间复杂度。
int m=0
for(int i=1;i<=n;i+ +)
for(int j=2*i;j<=n;j+ +)
m=m+1;
2.计算机执行下面的语句时,语句s的执行次数为多少?
for(int i=1;i<n-1;i+ +)
for( j=n;j>=i;j- -)
s;
3.给出下列程序段中带标号的语句○1~○5执行的频度,利用O记号将以下程序段在最坏情况下的运行时间表示为n的函数。
for(int i=1;i<=n;i+ +) ○1
for(int j=1;j<=n;j+ +) ○2
{
c[i][j]=0; ○3
for(int k=1;k<=n;k+ +) ○4
c[i][j]= c[i][j]+ a[i][k]* b[k][j]; ○5
}
4.a. { if ((Q.rear+1)%Maxsize= = Q.front)
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%Maxsize;
return ok;
}
该算法实现什么功能?
b. { if (S.top-S.base>= S.stacksize )
{ S.base=追加分配空间;
S.top= S.base + S.stacksize;
S.stacksize+=stackincrement;
}
*S.tope++=e;
return ok;
}
该算法实现什么功能?
c. { for(int i=0;i<S.length && i<T.length; + +i )
if (S.ch[i]!=T.ch[i] return (S.ch[i]- T.ch[i]);
return (S.length- T.length);
}
该算法实现什么功能?
5. 说明下列程序的功能:
private static int partion(int p,int r)
{int i=p, j=r+1;
Comparable x=a[p];
while(true){
while(a[++i] compareTo(x)<0;
while(a[--j] compareTo(x)>0;
if (i>=j) break;
Mymath.swap(a,i,j)
}
a[p]=a[j];
a[j]=x;
return j;
}
6.已知Fibonacci 数列如下:
1,1,2,3,5,8,13,21,……
请写出其递归关系式。
三、
1.假设合并排序算法的抽象定义为:
Public static void mergeSort(Comparable a[], int left, int right)
{ }
其中使用的合并及拷贝方法分别定义为:
Public static void merge(Comparable []c, Comparable []d,int l,int m,int r)
{ }
Public static void copy(Comparable []c, Comparable []d, int i, int j)
{ }
请补充完善递归方式实现的合并排序的细节。
2.已知整数划分问题的递归式如下:
1 n=1或m=1
q(n,m)= q(n,n) n<m
1+q(n,n-1) n=m
q(n,m-1)+q(n-m,m) n>m>1
请设计计算q(n,m) 的递归算法。
四、
1.设所给0-1背包问题的子问题
∑=n
i
k k
k x v max
(其中物品i 的重量是wi ,其价值为vi )
的最优值为m(i ,j),即m(i ,j)是背包容量为j ,可选择物品为i ,i+1,…,n 时0-1背包问题的最优值。
请建立m(i,j)的递归式。
2.已知有7个独立作业{1,2,3,4,5,6,7}由3台机器M1,M2和M3加工处理。
各作业所需的处理时间分别为{2,14,4,16,6,5,3}。
请给出利用贪心算法实现多机调度问题的步骤。
3.假设有n=3时,0-1背包问题的一个实例为:w=[16,15,15],p=[45,25,25],c=30。
请画出解空间树,利用队列式分支限界法表示活结点进出队列的过程并给出最优值。
4.请完善下面用回溯法搜索子集树和排列树的一般算法描述:
子集树:
V oid backtrack(int t)
{
If (t>n) output(x)
Else
For(int i=____;__________;i++)
{___________;
If (constraint(t)&&bound(t)) backtrack(t+1);
}
}
排列树:
V oid backtrack(int t)
{
If (t>n) output(x)
Else
For(int i=____;_________;i++)
{______________;
If (constraint(t)&&bound(t)) backtrack(t+1);
______________;
}
}
⎪⎩⎪
⎨⎧≤≤∈≤∑=n
k i x j x w k n i k k k },1,0{。