算法期末复习题final.docx
- 文档编号:8064302
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:12
- 大小:72.43KB
算法期末复习题final.docx
《算法期末复习题final.docx》由会员分享,可在线阅读,更多相关《算法期末复习题final.docx(12页珍藏版)》请在冰豆网上搜索。
算法期末复习题final
算法分析与设计期末复习题目
一、选择题
1.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法
2、衡量一个算法好坏的标准是(C)。
A运行速度快B占用空间少C时间复杂度低D代码短
3、以下不可以使用分治法求解的是(D)。
A棋盘覆盖问题B选择问题C归并排序D0/1背包问题
4.下列是动态规划算法基本要素的是( D )。
A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质
5.采用广度优先策略搜索的算法是( A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法
—
6、合并排序算法是利用( A )实现的算法。
A、分治策略 B、动态规划法 C、贪心法 D、回溯法
7、下列不属于影响程序执行时间的因素有哪些(C)
A.算法设计的策略B.问题的规模
C.编译程序产生的机器代码质量D.计算机执行指令的速度
8、使用分治法求解不需要满足的条件是(A)。
A子问题必须是一样的
B子问题不能够重复
C子问题的解可以合并
D原问题和子问题使用相同的方法解
9、下面问题(B)不能使用贪心法解决。
A单源最短路径问题BN皇后问题
C最小花费生成树问题D背包问题
10.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A、重叠子问题B、最优子结构性质C、贪心选择性质D、定义最优解
)
11.以深度优先方式系统搜索问题解的算法称为(D)。
A、分支界限算法 B、概率算法 C、贪心算法 D、回溯算法
12.实现最长公共子序列利用的算法是( B )。
A、分治策略B、动态规划法C、贪心法D、回溯法
13.下列算法具有最优子结构的算法是(D)
A.概率算法B.回溯法C.分支限界法D.动态规划法
`
14.算法分析是(C)
A.将算法用某种程序设计语言恰当地表示出来
B.在抽象数据集合上执行程序,以确定是否会产生错误的结果
C.对算法需要多少计算时间和存储空间作定量分析
D.证明算法对所有可能的合法输入都能算出正确的答案
15衡量一个算法好坏的标准是(C)
16A.运行速度快B.占用空间少C.时间复杂度低D.代码短
16.二分搜索算法是利用(A)实现的算法。
|
A.分治法B.动态规划法 C.贪心法 D.回溯法
17.用贪心法设计算法的关键是(B)。
A.将问题分解为多个子问题来分别处理
B.选好最优量度标准
C.获取各阶段间的递推关系式
D.满足最优性原理
18.找最小生成树的算法Kruskal的时间复杂度为(D)(其中n为无向图的结点数,m为边数)
A.O(n2)B.O(mlogn)C.O(nlogm)D.O(mlogm)
》
19.回溯法搜索状态空间树是按照(C)的顺序。
A.中序遍历B.广度优先遍历
C.深度优先遍历D.层次优先遍历
20.采用广度优先策略搜索的算法是(A)。
A.分支界限法B.动态规划法
C.贪心法D.回溯法
21.函数32n+10nlogn的渐进表达式是(B).
(2n)B.O(32n)C.O(nlogn)D.O(10nlogn)
>
22.二分搜索算法的时间复杂性为(C)。
(
)(
)(
)D.O(
)
23、快速排序算法的时间复杂性为(D)。
(
)(
)(
)D.O(
)
24、算法是由若干条指令组成的有穷序列,而且满足以下性质(D)
A.输入:
有0个或多个输入B.输出:
至少有一个输出
C.确定性:
指令清晰,无歧义D.有限性:
指令执行次数有限,而且执行时间有限
】
A.
(1)
(2)(3)B.
(1)
(2)(4)C.
(1)(3)(4)D.
(1)
(2)(3)(4)
25、背包问题的贪心算法所需的计算时间为(B)
A.O(n2n)B.O(nlogn)(2n)(n)
26.下列算法中不能解决0/1背包问题的是(A)
A贪心法B动态规划C回溯法D分支限界法
27.在寻找n个元素中第k小元素问题中,若使用快速排序算法思想,运用分治算法对n个元素进行划分,应如何选择划分基准下面(D)答案解释最合理。
A.随机选择一个元素作为划分基准
^
B.取子序列的第一个元素作为划分基准
C.用中位数的中位数方法寻找划分基准
D.以上皆可行。
但不同方法,算法复杂度上界可能不同
28.分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。
这要求原问题和子问题(C)。
A.问题规模相同,问题性质相同B.问题规模相同,问题性质不同
C.问题规模不同,问题性质相同D.问题规模不同,问题性质不同
29、下面是贪心算法的基本要素的是( C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解
30.函数
的渐进表达式是(D)。
A.O(
)B.O(
)C.O(
)(
)
二、填空题
1、解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中不需要排序的是动态规划,需要排序的是回溯法,分支限界法。
2、使用回溯法进行状态空间树裁剪分支时一般有两个标准:
约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是0/1背包问题,只使用约束条件进行裁剪的是N皇后问题。
3.贪心算法基本要素有最优度量标准和最优子结构。
4.回溯法解旅行售货员问题时的解空间树是排列树。
5.二分搜索算法是利用分治策略实现的算法。
|
6.算法的复杂性有时间复杂性和空间复杂性之分。
7、程序是算法 用某种程序设计语言的具体实现。
8、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
9.矩阵连乘问题的算法可由动态规划设计实现。
10.回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。
11.任何可用计算机求解的问题所需的时间都与其规模有关。
12.快速排序算法的性能取决于划分的对称性。
13.背包问题的贪心算法
voidKnapsack(intn,floatM,floatv[],floatw[],floatx[])
{
:
Sort(n,v,w);
inti;
for(i=1;i<=n;i++)x[i]=0;
floatc=M;
for(i=1;i<=n;i++){
if(w[i]>c)break;
x[i]=1;
c-=w[i];
}
if(i<=n)x[i]=c/w[i];
【
}
14.下面算法的基本运算是加法(或:
赋值)运算,该算法中第4步执行了2n-1次。
算法COUNT
输入:
正整数n(n=
)。
输出:
count的值。
1.count=0
2.whilen>=1
3.forj=1ton
4.count=count+1
—
5.endfor
6.n=n/2
7.endwhile
endCOUNT
15.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。
16.快速排序、插入排序和选择排序算法中,快速排序算法是分治算法。
17.下面算法的基本语句是__S=S+i*j;____,算法的时间复杂度是___O(
)_____
…
intfun(intn)
{
intS=0;
for(inti=1;i<=n;i++)
for(intj=1;j S=S+i*j; returnS; } 18.最小生成树的prim算法应用的是贪心算法思想。 ( 19.分治算法的基本步骤包括分解子问题,递归求解子问题,合并解 20.归并排序和快速排序在平均情况下的时间复杂度都是O(nlogn),但是最坏情况下两种算法有区别,其中归并排序为O(nlogn),快速排序为_O( ) 二、算法设计 1.下面是用回溯法求解图的m着色问题的算法(求出所有解)。 图的m着色问题: 给定一个无向连通图G和m种颜色,给图G的所有顶点着色,使得任何两相邻顶点的颜色不同。 已有函数color(k)用于在前k-1个顶点已着色的情况下,判断第k个顶点是否可着颜色x[k];是则返回true,否则返回false。 输入: 正整数m,n和含n个顶点的无向连通图G的邻接矩阵graph。 输出: 图G的m着色问题的所有解, 若无解,则输出nosolution。 flag=false k=1;x[1]=0 ( whilek>=1 while (1) x[k]=x[k]+1 ifcolor(k)then if (2)then flag=true;outputx[1..n] else k=(3) (4) endif ` endif endwhile (5) endwhile ifnotflagthenoutput“nosolution” endm-COLORING (1)x[k] (2)k=n(3)k+1 (4)x[k]=0(5)k=k-1 ! 2.下面是求解矩阵链乘问题的动态规划算法。 矩阵链乘问题: 给出n个矩阵M1,M2,…,Mn,Mi为ri ri+1阶矩阵,i=1,2,…,n,求计算M1M2…Mn所需的最少数量乘法次数。 记Mi,j=MiMi+1…Mj,i<=j。 设C[i,j],1<=i<=j<=n,表示计算Mi,j的所需的最少数量乘法次数,则 算法MATCHAIN 输入: 矩阵链长度n,n个矩阵的阶r[1..n+1],其中r[1..n]为n个矩阵的行数,r[n+1]为第n个矩阵的列数。 输出: n个矩阵链乘所需的数量乘法的最少次数。 fori=1tonC[i,i]= (1) ford=1ton-1 fori=1ton-d ? j= (2) C[i,j]=∞ fork=i+1toj x=(3) ifx (4)=x endif endfor endfor endfor ? return(5) endMATCHAIN (1)0 (2)i+d(3)C[i,k-1]+C[k,j]+r[i]*r[k]*r[j+1] (4)C[i,j](5)C[1,n] 3.下面是用回溯法解n皇后问题的算法(求出所有解)。 n皇后问题: 在nxn棋盘上放置n个皇后使得任何两个皇后不能互相攻击。 (如果两个皇后处在同一行,或同一列,或同一斜线上,则她们能互相攻击。 ) 算法NQUEENS 输入: 正整数n。 ' 输出: n皇后问题的所有解x[1..n], 若无解,则输出Nosolution。 flag=false k=1;x[1]=0 while (1) whilex[k] x[k]= (2) ifplace(k)then ifk=nthen flag=true;outputx[1..n] else … k=(3) (4) endif endif endwhile (5) endwhile ifnotflagthenoutput“Nosolution” ~ endNQUEENS 过程 place(k) 递归的快速排序算法: template voidQuickSort(Typea[],intlow,inthigh) {if( (1)) {inti=Partition(a,low,high); QuickSort(a,low,i-1); (2); } ~ } 解: (1)low (2)QuickSort(a,i+1,high) 5、n后问题的递归的回溯算法,,设已经存在全局变量n代表皇后个数。 voidQueen: : Backtrack(intt) {if( (1))sum++; 用动态规划法求如下0/1背包问题的最优解: 有5个物品,其重量分别为(3,2,1,4,5),价值分别为(25,20,15,40,50),背包容量为6.写出求解过程(设计表格和填写表格) 解: 设计一个二维表V(i,j)表示将前i个物品装进容量为j的背包所能获得的最大价值,根据以下递推式填表: 若wi>j,V(i,j)=V(i–1,j) ! 若wi<=j,V(i,j)=max{V(i-1,j),V(i-1,j-wi)+vi} j=0 j=1 j=2 j=3 j=4 j=5 j=6 i=0 · 0 0 0 0 0 0 0 i=1 0 0 — 0 25 25 25 25 i=2 0 0 20 25 ; 25 45 45 i=3 0 15 20 35 40 45 。 60 i=4 0 15 20 35 40 55 60 i=5 ; 0 15 20 35 40 55 65 V(5,6)即为问题的最优解,最大价值为65。 经过回溯得到物品组合为第3和第5个物品装入背包。 4.归并排序算法对下列实例排序,写出算法执行过程。 A=(48,12,61,3,5,19,32,7) 解: 拆分: 48,12,61,35,19,32,7 48,1261,35,1932,7 4812613519327 合并: 12,483,615,197,32 3,12,48,615,7,19,32 3,5,7,12,19,32,48,61 5、简述分治法的基本思想。 答: 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同;对这k个子问题分别求解。 如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止;将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 6、由于贪心算法是一种只顾眼前的步骤,而难以顾及全局步骤的算法,所以它通常表现出哪些特点) ①不能保证最后求得的解是最佳的;即多半是近似解。 (少数问题除外) ②策略容易发现(关键: 提取清楚问题中的维度),而且运用简单,被广泛运用。 ③策略多样,结果也多样。 ④算法实现过程中,通常用到辅助算法: 排序 7、简述动态规划算法的基本步骤 找出最优解的性质,并刻划其结构特征。 递归地定义最优值。 以自底向上的方式计算出最优值。 根据计算最优值时得到的信息,构造最优解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 期末 复习题 final