算法分析与设计复习题及参考答案
《算法与程序设计》复习题

算法与程序设计一、选择题部分(100题)一章一节:了解计算机解决问题的过程1.用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?()A、分析问题B、设计算法C、编写程序D、调试程序答案:B2.学校要举行运动会,请你设计一个能够对运动员分数自动排序的软件,如果要设计此软件,以下最好的方法和步骤是()。
A、分析问题,编写程序,设计算法,调试程序B、设计算法,编写程序,提出问题,调试程序C、提出问题,设计算法,编写程序,调试程序D、设计算法,提出问题,编写程序,调试程序答案:C3.下列步骤不属于软件开发过程的是()。
A、任务分析与系统设计B、软件的销售C、代码编写与测试D、软件测试与维护答案:B4.用计算机解决问题的步骤一般为()①编写程序②设计算法③分析问题④调试程序。
A.①②③④ B.③④①② C.②③①④ D.③②①④答案:D5.以下描述中最适合用计算机编程来处理的是()。
A、确定放学回家的路线B、计算某个同学期中考试各科成绩总分C、计算100以内的奇数平方和D、在因特网上查找自己喜欢的歌曲答案:C6.以下问题中最适合用计算机编程处理的是()。
A、制定本学期的学习计划B、计算正方形的周长C、创作一首歌曲D、求1000以内的所有素数答案:D7.由“上车—掏钱—投币”所描述的问题是()。
A、无人售票车投币过程B、乘公交车过程C、上车过程D、下车过程答案:A一章二节:算法和算法描述8.下面说法正确的是()。
A、算法+数据结构=程序B、算法就是程序C、数据结构就是程序D、算法包括数据结构答案:A9.算法描述可以有多种表达方法,下面哪些方法不可以描述“水仙花数问题”的算法()。
A.自然语言B.流程图C.伪代码D.机器语言答案:D10.下面关于算法的说法错误的是()。
A、算法必须有输出B、算法就是程序C、算法不一定有输入D、算法必须在有限步执行后能结束答案:B11.算法的三种基本控制结构是顺序结构、分支结构和()。
计算机算法与设计复习题(含答案)

1、一个算法的优劣可以用(时间复杂度)与(空间复杂度)与来衡量。
2、回溯法在问题的解空间中,按(深度优先方式)从根结点出发搜索解空间树。
3、直接或间接地调用自身的算法称为(递归算法)。
4、 记号在算法复杂性的表示法中表示(渐进确界或紧致界)。
5、在分治法中,使子问题规模大致相等的做法是出自一种(平衡(banlancing)子问题)的思想。
6、动态规划算法适用于解(具有某种最优性质)问题。
7、贪心算法做出的选择只是(在某种意义上的局部)最优选择。
8、最优子结构性质的含义是(问题的最优解包含其子问题的最优解)。
9、回溯法按(深度优先)策略从根结点出发搜索解空间树。
10、拉斯维加斯算法找到的解一定是(正确解)。
11、按照符号O的定义O(f)+O(g)等于O(max{f(n),g(n)})。
12、二分搜索技术是运用(分治)策略的典型例子。
13、动态规划算法中,通常不同子问题的个数随问题规模呈(多项式)级增长。
14、(最优子结构性质)和(子问题重叠性质)是采用动态规划算法的两个基本要素。
15、(最优子结构性质)和(贪心选择性质)是贪心算法的基本要素。
16、(选择能产生最优解的贪心准则)是设计贪心算法的核心问题。
17、分支限界法常以(广度优先)或(以最小耗费(最大效益)优先)的方式搜索问题的解空间树。
18、贪心选择性质是指所求问题的整体最优解可以通过一系列(局部最优)的选择,即贪心选择达到。
19、按照活结点表的组织方式的不同,分支限界法包括(队列式(FIFO)分支限界法)和(优先队列式分支限界法)两种形式。
20、如果对于同一实例,蒙特卡洛算法不会给出两个不同的正确解答,则称该蒙特卡洛算法是(一致的)。
21、哈夫曼编码可利用(贪心法)算法实现。
22概率算法有数值概率算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sherwood)算法23以自顶向下的方式求解最优解的有(贪心算法)24、下列算法中通常以自顶向下的方式求解最优解的是(C)。
算法设计与分析复习题整理 (1)

一、基本题:算法:1、程序是算法用某种程序设计语言的具体实现。
2、算法就是一组有穷的序列(规则) ,它们规定了解决某一特定类型问题的一系列运算。
3、算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
4、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
5、算法满足的性质:输入、输出、确定性、有限性。
6、衡量一个算法好坏的标准是时间复杂度低。
7、算法运行所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂性和空间复杂性。
8、任何可用计算机求解的问题所需的时间都与其规模有关。
递归与分治:9、递归与分治算法应满足条件:最优子结构性质与子问题独立。
10、分治法的基本思想是首先将待求解问题分解成若干子问题。
11、边界条件与递归方程是递归函数的两个要素。
12、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。
13、将一个难以直接解决的大问题,分解成一些规模较小的相同问题,以便各个击破。
这属于分治法的解决方法。
14、Strassen矩阵乘法是利用分治策略实现的算法。
15、大整数乘积算法是用分治法来设计的。
16、二分搜索算法是利用分治策略实现的算法。
动态规划:17、动态规划算法的两个基本要素是最优子结构性质和重叠子问题性质。
18、下列算法中通常以自底向上的方式求解最优解的是动态规划法。
19、备忘录方法是动态规划算法的变形。
20、最优子结构性质是贪心算法与动态规划算法的共同点。
21、解决0/1背包问题可以使用动态规划、回溯法,其中不需要排序的是动态规划,需要排序的是回溯法。
贪心算法:22、贪心算法总是做出在当前看来最好的选择。
也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的局部最优解。
23、最优子结构性质是贪心算法与动态规划算法的共同点。
24、背包问题的贪心算法所需的计算时间为 O(nlogn) 。
回溯法:25、回溯法中的解空间树结构通常有两种,分别是子集树和排列树。
中南大学现代远程教育课程考试复习试题及参考答案

中南大学现代远程教育课程考试复习试题及参考答案《算法分析与设计》一简答题1.算法的复杂性分析主要是分析算法的什么耗费情况?2.算法的重要特性是什么?3.算法的时间复杂度用什么计量?4.用比较树模型描述三个数排序的过程。
5.分治法的基本思想。
6.二分检索算法为什么可以提高查找的效率?7.简述顺序选择select算法的基本流程。
8.简述顺序选择select2算法的改进思路。
9.简述快速排序的基本思想。
10.快速排序算法的最坏时间复杂性和平均时间复杂性函数。
11.快速排序算法怎样抽取分割元素?12.partition怎样将数组划分成3段?13.分治合并排序的是怎样分治的?14.分治合并排序的二分归并过程在最坏情况下花费多少时间?15.分治合并排序的二分归并过程在最好情况下花费多少时间?16.MaxMin算法是怎样分治的?17.贪心法的基本思路是什么?18.用贪心法求解的问题有什么特点?19.背包问题的目标函数是什么,最优量度是什么?20.带限期的作业调度的贪心策略是什么?约束条件是什么?21.说明n皇后问题的解(x1,x2,….,x n)的含义。
22.简述n皇后算法的place函数的功能。
23.简述动态规划方法所运用最优化原理。
24.用多段图说明最优化原理。
二解释下列动态规划优解的一般递归形式。
1)0/1背包2)货郎担问题3)流水作业调度三算法分析。
1.分析汉诺塔算法的时间复杂性。
2.计算冒泡排序算法时间复杂性的阶。
3.分析maxmin算法的时间复杂性。
4.分析分治合并排序算法的时间复杂性。
5.分析二分检索的时间复杂性。
6.背包问题贪心算法的时间复杂性。
7.快速排序的partition过程中,进行了多少次元素之间的比较。
8.多段图算法的时间复杂性。
四算法段填空。
1.MaxMin 算法Maxmin(i,j,max,min)ifthen 对两元素进行比较;return;else{maxmin(i,m,max1,min1); //其中max1和min1为解子问题1的解}2.Hanoi算法Hanoi(n,a,b,c)If n=1 thenElse{;Hanoi(n-1,b, a, c);}3.二分检索BINSRCH(A,n,x,j)low←1;high←n;while low<high do{ ________________ mid←(low+high)/2;case:x=A[mid] :j←mid; return;:x< A[mid]:_________________high←mid-1;:x> A[mid]:_________________low←mid+1;endcase}j←0;end4.快速排序Quicksort(p,q)if p>q then_____________{call partition(p,j);call _______________________call _______________________}end5.贪心方法的抽象化控制procedure GREEDY(A,n)//A(1:n)包含n个输入//solutions←;for i←1 to do{x←SELECT(A)if FEASIBLE(solution,x)then solutions←; endif}return(solution)end GREEDY6.背包问题贪心算法procedure GREEDY-KNAPSACK(P,W,M,X,n)X←0 ;cu←M ;for i←1 to n do{ if then exit endifX(i) ← _ ;cu←;}if i ≤n then X(i) ←;endifend GREEDY-KNAPSACK7.分治合并排序算法procedure MERGESORT(low,high)if low < high thenmid ←_______________________________________________________MERGE(low,mid,high)endifend MERGESORT8. 多段图动态规划算法 procedure FGRAPH(E ,k ,n ,P) 1 real COST(n),integerD(n 一1),P(k),r ,j ,k ,n 2; 3 for to 1 by -1do4 设r 是一个这样的结点,(j ,r)∈E 且使c(j ,r)+COST(r)取最小值5 COST(j)← ;6 ;7 repeat8 P(1)←1;P(k)←n ;9 for do10 P(j)←D ( P(j-1) )11 repeat12 end FGRAPH9. n 后问题递归算法procedure RNQUEENS(K)global x( 1:m ),n;for x(k)←1 to _____ doif place( k )= true thenif k = n then ________else_____________endifendifrepeatend ENQUEENS1. 写递归形式的二分检索算法2. 设计三分检索算法3. 有n 个大小相同而重量不同的集装箱,重量分别为(w1,w2,……,wn),已知货船的额定载重量为M ,Σwi>M,i=1,2,3,…,n 。
算法分析设计期末复习

通过解递归方程
logm n1
T (n) nlogm k k j f (n / m j ) j0
学习要点: 理解递归的概念。 掌握设计有效算法的分治策略。 通过下面的范例学习分治策略设计技巧。 (1)二分搜索技术; (2)大整数乘法; (3)Strassen矩阵乘法; (4)棋盘覆盖; (5)合并排序和快速排序; (6)线性时间选择; (7)最接近点对问题; (8)循环赛日程表。
基本运算Oi的执行次数ei分别进行统计分析。 – T(N,I)还需进一步简化,只在某些有代表性的合法输
入中去统计相应的ei来评价其复杂性。 – 一般只考虑三种情况下的时间性:最坏情况、最好
情况和平均情况下的复杂性,分别记为Tmax(N)、 Tmin(N)和Tavg(N)
四种渐近意义下的符号
• 四种渐近意义下的符号 –O –Ω –θ –o
}
----------------------------------------------------------------------------------------
CheckNum( T , p , q , element): ▹计算T[p..q]中element出现的次数
{ cnt ← 0
• 思路二:直接统计各 元素出现的次数,用 某一线性数据结构 存储统计结果(例如 用一个辅助数组存 储统计结果,统计时 用数组下标对应相 应元素)
第三章:动态规划
动态规划算法的基本思想
• 动态规划算法的基本思想
– 其基本思想与分治算法的思想类似——分而治之 – 与分治法的不同之处
• 分解后的子问题往往不互相独立; • 采用记录表的方法来保存所有已解决问题的答案
考虑时间 资源
算法设计与分析期末复习题

算法设计与分析期末考试复习题1.算法有哪些特点?为什么说一个具备了所有特征的算法,不一定就是使用的算法?2.证明下面的关系成立:(参考例题1.5--1.6)(1)logn!=Θ(nlogn) (2)2n=Θ(2n+1)(3)n!=Θ(n n) (4)5n2-6n=Θ(n2)3.考虑下面的算法:输入:n个元素的数组A输出:按递增顺序排序的数组A1. void sort(int A[],int n)2. {3. int i,j,temp;4. for(i=0;i<n-1;i++)5. for(j=i+1;j<n;j++)6. if(A[j]<A[i]) {7. temp=A[i];8. A[i]=A[j];9. A[j]=temp;10. }11. }(1)什么时候算法所执行的元素赋值的次数最少?最少多少次?(2)什么时候算法所执行的元素赋值的次数最多?最多多少次?4.考虑下面的算法:输入:n个元素的数组A输出:按递增顺序排序的数组A1. void bubblesort(int A[],int n)2. {3. int j,i,sorted;4. i=sorted=0;5. while(i<n-1 && !sorted) {6. sorted=1;7. for(j=n-1;j>i;j--) {8. if(A[j]<A[j-1]) {9. temp=A[j];10. A[j]=A[j-1];11. A[j-1]=temp;12. sorted=0;13. }14. }15. i=i+1;16. }17. }(1)算法所执行的元素比较次数最少是多少次?什么时候达到最少?(2)算法所执行的元素比较次数最多是多少次?什么时候达到最多?(3)算法所执行的元素赋值次数最少是多少次?什么时候达到最少?(4)算法所执行的元素赋值次数最多是多少次?什么时候达到最多?(5)用О、和Ω记号表示算法的运行时间。
算法设计与分析复习题目及答案

分治法1、二分搜索算法是利用(分治策略)实现的算法。
9. 实现循环赛日程表利用的算法是(分治策略)27、Strassen矩阵乘法是利用(分治策略)实现的算法。
34.实现合并排序利用的算法是(分治策略)。
实现大整数的乘法是利用的算法(分治策略)。
17.实现棋盘覆盖算法利用的算法是(分治法)。
29、使用分治法求解不需要满足的条件是(子问题必须是一样的)。
不可以使用分治法求解的是(0/1背包问题)。
动态规划下列不是动态规划算法基本步骤的是(构造最优解)下列是动态规划算法基本要素的是(子问题重叠性质)。
下列算法中通常以自底向上的方式求解最优解的是(动态规划法)备忘录方法是那种算法的变形。
(动态规划法)最长公共子序列算法利用的算法是(动态规划法)。
矩阵连乘问题的算法可由(动态规划算法B)设计实现。
实现最大子段和利用的算法是(动态规划法)。
贪心算法能解决的问题:单源最短路径问题,最小花费生成树问题,背包问题,活动安排问题,不能解决的问题:N皇后问题,0/1背包问题是贪心算法的基本要素的是(贪心选择性质和最优子结构性质)。
回溯法回溯法解旅行售货员问题时的解空间树是(排列树)。
剪枝函数是回溯法中为避免无效搜索采取的策略回溯法的效率不依赖于下列哪些因素(确定解空间的时间)分支限界法最大效益优先是(分支界限法)的一搜索方式。
分支限界法解最大团问题时,活结点表的组织形式是(最大堆)。
分支限界法解旅行售货员问题时,活结点表的组织形式是(最小堆)优先队列式分支限界法选取扩展结点的原则是(结点的优先级)在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是( 分支限界法).从活结点表中选择下一个扩展结点的不同方式将导致不同的分支限界法,以下除( 栈式分支限界法)之外都是最常见的方式.(1)队列式(FIFO)分支限界法:按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。
(2)优先队列式分支限界法:按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。
算法分析与设计习题答案

算法分析与设计习题答案《算法分析与设计》期末复习题及答案⼀、简要回答下列问题:1.算法重要特性是什么?2.算法分析的⽬的是什么?3.算法的时间复杂性与问题的什么因素相关?4.算法的渐进时间复杂性的含义?5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?6.简述⼆分检索(折半查找)算法的基本过程。
7.背包问题的⽬标函数和贪⼼算法最优化量度相同吗?8.采⽤回溯法求解的问题,其解如何表⽰?有什么规定?9.回溯法的搜索特点是什么?10.n皇后问题回溯算法的判别函数place的基本流程是什么?11.为什么⽤分治法设计的算法⼀般有递归调⽤?12.为什么要分析最坏情况下的算法时间复杂性?13.简述渐进时间复杂性上界的定义。
14.⼆分检索算法最多的⽐较次数?15.快速排序算法最坏情况下需要多少次⽐较运算?16.贪⼼算法的基本思想?17.回溯法的解(x1,x2,……x n)的隐约束⼀般指什么?18.阐述归并排序的分治思路。
19.快速排序的基本思想是什么。
20.什么是直接递归和间接递归?消除递归⼀般要⽤到什么数据结构?21.什么是哈密顿环问题?22.⽤回溯法求解哈密顿环,如何定义判定函数?23.请写出prim算法的基本思想。
参考答案:1. 确定性、可实现性、输⼊、输出、有穷性2. 分析算法占⽤计算机资源的情况,对算法做出⽐较和评价,设计出额更好的算法。
3. 算法的时间复杂性与问题的规模相关,是问题⼤⼩n的函数。
4.当问题的规模n趋向⽆穷⼤时,影响算法效率的重要因素是T(n)的数量级,⽽其他因素仅是使时间复杂度相差常数倍,因此可以⽤T(n)的数量级(阶)评价算法。
时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。
5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输⼊实例下的算法所耗时间。
最坏情况下的时间复杂性取的输⼊实例中最⼤的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输⼊实例的处理时间与各⾃概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6. 设输⼊是⼀个按⾮降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x⽐较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]回溯法的搜索特点是什么7. 不相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络教育课程考试复习题及参考答案算法分析与设计一、名词解释: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。
已知,=1,2,3,4,5,6,=5,=10,=3,=12,=5,=50,=6,kijr*r1234567ii1求矩阵链积A×A×A×A×A×A的最佳求积顺序(要求给出计算步骤)。
1234564.根据分枝限界算法基本过程,求解0-1背包问题。
已知n=3,M=20,(w1,w2,w3)=(12,10,6),(p1,p2,p3)=(15,13,10)。
5.试用贪心算法求解汽车加油问题:已知一辆汽车加满油后可行驶n公里,而旅途中有若干个加油站。
试设计一个有效算法,指出应在哪些加油站停靠加油,使加油次数最少,请写出该算法。
6.试用动态规划算法实现下列问题:设A和B是两个字符串。
我们要用最少的字符操作,将字符串A转换为字符串B,这里所说的字符操作包括:①删除一个字符。
②插入一个字符。
③将一个字符改为另一个字符。
请写出该算法。
7.对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径。
be2g212ad323182cf2h8.试写出用分治法对数组A[n]实现快速排序的算法。
9.有n个活动争用一个活动室。
已知活动i占用的时间区域为[s,f ],活动i,j相容的条件是:sj≥f ii,问题的解表示为(x| x =1,2…,n,),x表示顺序为i的活动编号活动,求一个相容的活动子集,iiii且安排的活动数目最多。
xxx10.设、、是一个三角形的三条边,而且x+x+x=14。
请问有多少种不同的三角形?给出解答过程。
12312311.设数组A有n个元素,需要找出其中的最大最小值。
①请给出一个解决方法,并分析其复杂性。
②把n个元素等分为两组A1和A2,分别求这两组的最大值和最小值,然后分别将这两组的最大值和最小值相比较,求出全部元素的最大值和最小值。
如果A1和A2中的元素多于两个,则再用上述方法各分为两个子集。
直至子集中元素至多两个元素为止。
这是什么方法的思想?请给出该方法的算法描述,并分析其复杂性。
12.有n个程序和长度为L的磁带,程序i的长度为a,已知,求最优解(x,x ,...,x,…,ii2i x),x =0,1, x =1,表示程序i存入磁带,x =0,表示程序i不存入磁带,满足,且niii存放的程序数目最多。
13.试用分治法实现有重复元素的排列问题:设是要进行排列的个元素,其中元素12nr,r,...,r R可能相同,试设计计算的所有不同排列的算法。
12n14.试用动态规划算法实现0-1闭包问题,请写出该算法。
15.试用贪心算法求解下列问题:将正整数n分解为若干个互不相同的自然数之和,使这些自然数的乘积最大,请写出该算法。
16.试写出用分治法对一个有序表实现二分搜索的算法。
17.试用动态规划算法实现最长公共子序列问题,请写出该算法。
18.假设有7个物品,它们的重量和价值如下表所示。
若这些物品均不能被分割,且背包容量M=150,使用回溯方法求解此背包问题,请写出状态空间搜索树。
物品 A B C D E F G 重量 35 30 60 50 40 10 25 价值 10 40 30 50 35 40 30 19.求解子集和问题:对于集合S={1,2 ,6,8},求子集,要求该子集的元素之和d=9。
①画出子集和问题的解空间树;②该树运用回溯算法,写出依回溯算法遍历节点的顺序;③如果S中有n个元素,指定d,用伪代码描述求解子集和问题的回溯算法。
20.求解填字游戏问题:在3×3个方格的方阵中要填入数字1到N (N≥10)内的某9个数字,每个方格填一个整数,似的所有相邻两个方格内的两个整数之和为质数。
试采用回溯法写出满足这个要求的一种数字填法的算法和满足这个要求的全部数字填法的算法。
21.试用动态规划算法实现最大子矩阵和问题:求矩阵A的一个子矩阵,使其各元素之和为最大。
i22.试用回溯法解决下列整数变换问题:关于整数的变换和定义如下:。
对nmnmfg于给定的两个整数和,要求用最少的变换和变换次数将变为。
23.关于15谜问题。
在一个4×4的方格的棋盘上,将数字1到15代表的15个棋子以任意的顺序置入各方格中,空出一格。
要求通过有限次的移动,把一个给定的初始状态变成目标状态。
移动的规则是:每次只能把空格周围的四格数字(棋子)中的任意一个移入空格,从而形成一个新的状态。
为了有效的移动,设计了估值函数C(x),表示在结点x的状态下,没有到达目标状态下的正确位置的棋子的个1数。
请使用该估计函数,对图示的初始状态,给出使用分支限界方法转换到目标状态的搜索树。
1 2 4 1 2 3 4 5 6 3 7 5 6 7 8 9 10 128 9 10 11 12 13 14 11 15 13 14 15 初始状态目标状态参考答案一、名词解释:1.算法:算法是指解决问题的一种方法或一个过程。
算法是若干指令的有穷序列,满足性质:(1)输入:有零个或多个外部量作为算法的输入;(2)输出:算法产生至少一个量作为输出;(3)确定性:组成算法的每条指令清晰、无歧义;(4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。
2.程序:程序是算法用某种程序设计语言的具体实现。
3.递归函数:用函数自身给出定义的函数称为递归函数。
4.子问题的重叠性质:递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次,这种性质称为子问题的重叠性质。
5.队列式分支限界法:队列式(FIFO)分支限界法是将活结点表组织成一个队列,并按照队列的先进先出(FIFO)原则选取下一个结点为扩展结点。
6.多机调度问题:多机调度问题要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。
同时约定每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。
作业不能拆分成更小的子作业。
7.最小生成树:G=(V,E)是无向连通带权图,G的子图称为G的生成树,生成树上各边权的总和称为该生成树的耗费,在G的所有生成树中,耗费最小的生成树称为G的最小生成树。
二、简答题: 1.备忘录方法和动态规划算法相比有何异同?简述之。
备忘录方法是动态规划算法的变形。
与动态规划算法一样,备忘录方法用表格保存已解决的子问题的答案,在下次需要解此问题时,只要简单地查看该子问题的解答,而不必重新计算。
备忘录方法与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上递归的。
因此,备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看,避免了相同的子问题的重复求解,而直接递归方法没有此功能。
2.简述回溯法解题的主要步骤。
回溯法解题的主要步骤包括: 1)针对所给问题,定义问题的解空间; 2)确定易于搜索的解空间结构;3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
3.简述动态规划算法求解的基本要素。
动态规划算法求解的基本要素包括:1)最优子结构是问题能用动态规划算法求解的前提;2)动态规划算法,对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此子问题时,只是简单地用常数时间查看一下结果,即重叠子问题。
4.简述回溯法的基本思想。
回溯法的基本做法是搜索,在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。
算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。
如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。
5.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。
将递归算法转化为非递归算法的方法主要有:1)采用一个用户定义的栈来模拟系统的递归调用工作栈。
该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。
2)用递推来实现递归函数。
3)通过Cooper变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。
后两种方法在时空复杂度上均有较大改善,但其适用范围有限。
6.简要分析分支限界法与回溯法的异同。
1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。
2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。
7.简述算法复杂性的概念,算法复杂性度量主要指哪两个方面?算法复杂性是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,需要的空间资源的量称为空间复杂性。
这个量应该只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。
NIAC如果分别用、和表示算法要解问题的规模、算法的输入和算法本身,而且用表示复杂性,那么,C=F(N,I,A)应该有。
算法复杂性度量主要包括算法的时间复杂性和算法的空间复杂性。
8.贪心算法求解的问题主要具有哪些性质?简述之。
贪心算法求解的问题一般具有二个重要的性质:一是贪心选择性质,这是贪心算法可行的第一个基本要素;另一个是最优子结构性质,问题的最优子结构性质是该问题可用贪心算法求解的关键特征。
9.分治法的基本思想是什么?合并排序的基本思想是什么?请分别简述之。