计算机算法设计与分析复习题与答案2.docx
- 文档编号:30714845
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:20
- 大小:93.59KB
计算机算法设计与分析复习题与答案2.docx
《计算机算法设计与分析复习题与答案2.docx》由会员分享,可在线阅读,更多相关《计算机算法设计与分析复习题与答案2.docx(20页珍藏版)》请在冰豆网上搜索。
计算机算法设计与分析复习题与答案2
《算法分析与设计》期末复习题
(二)
一、简要回答下列问题:
1.算法重要特性是什么?
2.算法分析的目的是什么?
3.算法的时间复杂性与问题的什么因素相关?
4.算法的渐进时间复杂性的含义?
5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?
6.简述二分检索(折半查找)算法的基本过程。
7.背包问题的目标函数和贪心算法最优化量度相同吗?
8.采用回溯法求解的问题,其解如何表示?
有什么规定?
9.回溯法的搜索特点是什么?
10.n皇后问题回溯算法的判别函数place的基本流程是什么?
11.为什么用分治法设计的算法一般有递归调用?
12.为什么要分析最坏情况下的算法时间复杂性?
13.简述渐进时间复杂性上界的定义。
14.二分检索算法最多的比较次数?
15.快速排序算法最坏情况下需要多少次比较运算?
16.贪心算法的基本思想?
17.回溯法的解(x1,x2,……xn)的隐约束一般指什么?
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∈Dn
6.设输入是一个按非降次序排列的元素表A[i:
j]和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2] (i+j)/2-1]找x,否则在A[(i+j)/2+1: j]找x。 上述过程被反复递归调用。 回溯法的搜索特点是什么 7.不相同。 目标函数: 获得最大利润。 最优量度: 最大利润/重量比。 8.问题的解可以表示为n元组: (x1,x2,……xn),xi∈Si,Si为有穷集合,xi∈Si,(x1,x2,……xn)具备完备性,即(x1,x2,……xn)是合理的,则(x1,x2,……xi)(i 9.在解空间树上跳跃式地深度优先搜索,即用判定函数考察x[k]的取值,如果x[k]是合理的就搜索x[k]为根节点的子树,如果x[k]取完了所有的值,便回溯到x[k-1]。 10.将第K行的皇后分别与前k-1行的皇后比较,看是否与它们相容,如果不相容就返回false,测试完毕则返回true。 11.子问题的规模还很大时,必须继续使用分治法,反复分治,必然要用到递归。 12最坏情况下的时间复杂性决定算法的优劣,并且最坏情况下的时间复杂性较平均时间复杂性游可操作性。 13.T(n)是某算法的时间复杂性函数,f(n)是一简单函数,存在正整数No和C,n〉No,有T(n) 14.二分检索算法的最多的比较次数为logn。 15..最坏情况下快速排序退化成冒泡排序,需要比较n2次。 16.是一种依据最优化量度依次选择输入的分级处理方法。 基本思路是: 首先根据题意,选取一种量度标准;然后按这种量度标准对这n个输入排序,依次选择输入量加入部分解中。 如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。 17.回溯法的解(x1,x2,……xn)的隐约束一般指个元素之间应满足的某种关系。 18.讲数组一分为二,分别对每个集合单独排序,然后将已排序的两个序列归并成一个含n个元素的分好类的序列。 如果分割后子问题还很大,则继续分治,直到一个元素。 19.快速排序的基本思想是在待排序的N个记录中任意取一个记录,把该记录放在最终位置后,数据序列被此记录分成两部分。 所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。 之后重复上述过程,直到每一部分内只有一个记录为止。 20.在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。 如果过程或者函数P调用过程或者函数Q,Q又调用P,这个称为间接递归。 消除递归一般要用到栈这种数据结构。 21.哈密顿环是指一条沿着图G的N条边环行的路径,它的访问每个节点一次并且返回它的开始位置。 22.当前选择的节点X[k]是从未到过的节点,即X[k]≠X[i](i=1,2,…,k-1),且C(X[k-1],X[k])≠∞,如果k=-1,则C(X[k],X[1])≠∞。 23.思路是: 最初生成树T为空,依次向内加入与树有最小邻接边的n-1条边。 处理过程: 首先加入最小代价的一条边到T,根据各节点到T的邻接边排序,选择最小边加入,新边加入后,修改由于新边所改变的邻接边排序,再选择下一条边加入,直至加入n-1条边。 二、复杂性分析 1、MERGESORT(low,high) iflow thenmid←(low,high)/2; MERGESORT(low,mid); MERGESORT(mid+1,high); MERGE(low,mid,high); endif endMERGESORT 答: 1、递归方程 设n=2k 解递归方程: 2、procedureS1(P,W,M,X,n) i←1;a←0 whilei≤ndo ifW(i)>Mthenreturnendif a←a+i i←i+1; repeat end 解: i←1;s←0时间为: O (1) whilei≤ndo循环n次 循环体内所用时间为O (1) 所以总时间为: T(n)=O (1)+nO (1)=O(n) 3.procedurePARTITION(m,p) Integerm,p,i;globalA(m: p-1) v←A(m);i←m loop loopi←i+1untilA(i)≥vrepeat loopp←p-1untilA(p)≤vrepeat ifi thencallINTERCHANGE(A(i),A(p)) elseexit endif repeat A(m)←A(p);A(p)←v EndPARTITION 解: 最多的查找次数是p-m+1次 4.procedureF1(n) ifn<2thenreturn (1) elsereturn(F2(2,n,1,1)) endif endF1 procedureF2(i,n,x,y) ifi≤n thencallF2(i+1,n,y,x+y) endif return(y) endF2 解: F2(2,n,1,1)的时间复杂度为: T(n)=O(n-2);因为i≤n时要递归调用F2,一共是n-2次 当n=1时F1(n)的时间为O (1) 当n>1时F1(n)的时间复杂度与F2(2,n,1,1)的时间复杂度相同即为为O(n) 5.procedureMAX(A,n,j) xmax←A (1);j←1 fori←2tondo ifA(i)>xmaxthenxmax←A(i);j←i;endif repeat endMAX 解: xmax←A (1);j←1时间为: O (1) fori←2tondo循环最多n-1次 所以总时间为: T(n)=O (1)+(n-1)O (1)=O(n) 6.procedureBINSRCH(A,n,x,j) integerlow,high,mid,j,n; low←1;high←n whilelow≤highdo mid←|_(low+high)/2_| case :
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 算法 设计 分析 复习题 答案