算法期末复习题final
《算法分析与设计》期末考试复习题纲(完整版)
《算法分析与设计》期末复习题一、选择题1.算法必须具备输入、输出和( D )等4个特性。
A.可行性和安全性 B.确定性和易读性C.有穷性和安全性 D.有穷性和确定性2.算法分析中,记号O表示( B ),记号Ω表示( A )A.渐进下界B.渐进上界C.非紧上界D.紧渐进界3.假设某算法在输入规模为n时的计算时间为T(n)=3*2^n。
在某台计算机上实现并完成概算法的时间为t秒。
现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模为多大的问题?( B )解题方法:3*2^n*64=3*2^xA.n+8 B.n+6C.n+7 D.n+54.设问题规模为N时,某递归算法的时间复杂度记为T(N),已知T(1)=1,T(N)=2T(N/2)+N/2,用O表示的时间复杂度为( C )。
A.O(logN) B.O(N)C.O(NlogN) D.O(N²logN)5.直接或间接调用自身的算法称为( B )。
A.贪心算法 B.递归算法C.迭代算法 D.回溯法6.Fibonacci数列中,第4个和第11个数分别是( D )。
A.5,89 B.3,89C.5,144 D.3,1447.在有8个顶点的凸多边形的三角剖分中,恰有( B )。
A.6条弦和7个三角形 B.5条弦和6个三角形C.6条弦和6个三角形 D.5条弦和5个三角形8.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A.重叠子问题 B.最优子结构性质C.贪心选择性质 D.定义最优解9.下列哪个问题不用贪心法求解( C )。
A.哈夫曼编码问题 B.单源最短路径问题C.最大团问题 D.最小生成树问题10.下列算法中通常以自底向上的方式求解最优解的是( B )。
A.备忘录法 B.动态规划法C.贪心法 D.回溯法11.下列算法中不能解决0/1背包问题的是( A )。
A.贪心法 B.动态规划C.回溯法 D.分支限界法12.下列哪个问题可以用贪心算法求解( D )。
算法基础期末考试题及答案
算法基础期末考试题及答案一、选择题(每题2分,共20分)1. 算法的时间复杂度是指:A. 算法执行时间B. 算法执行的指令条数C. 算法执行所需的内存大小D. 算法执行时所需的数据量答案:B2. 在排序算法中,冒泡排序的平均时间复杂度是:A. O(n)B. O(n log n)C. O(n^2)D. O(1)答案:C3. 递归算法的基本原理是:A. 循环B. 迭代C. 分治D. 重复答案:C4. 哈希表的冲突解决方法不包括:A. 链地址法B. 开放寻址法C. 再散列法D. 排序答案:D5. 动态规划与分治算法的区别在于:A. 递归B. 贪心选择C. 重叠子问题D. 优化子结构答案:C6. 二叉树的深度优先搜索遍历方法包括:A. 前序遍历B. 中序遍历C. 后序遍历D. 所有选项答案:D7. 快速排序算法的最好时间复杂度是:A. O(n)B. O(n log n)C. O(n^2)D. O(log n)答案:B8. 图的广度优先搜索(BFS)使用的是:A. 栈B. 队列C. 链表D. 堆答案:B9. Dijkstra算法是用于解决:A. 最小生成树问题B. 最短路径问题C. 图的连通性问题D. 图的遍历问题答案:B10. 拓扑排序是针对哪种类型的图:A. 有向无环图B. 无向图C. 有向图D. 完全图答案:A二、简答题(每题5分,共30分)1. 请简述什么是贪心算法,并给出一个应用实例。
答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。
例如,在硬币找零问题中,总是优先使用最大面额的硬币进行找零。
2. 解释什么是二分查找算法,并说明其时间复杂度。
答案:二分查找算法是一种在有序数组中查找特定元素的搜索算法。
其基本思想是将数组分成两半,比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在左侧子数组中继续查找;如果目标值大于中间元素,则在右侧子数组中继续查找。
算法期末复习题final
算法期末复习题final算法分析与设计期末复习题⽬⼀、选择题1.下列算法中通常以⾃底向上的⽅式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪⼼法D、回溯法2、衡量⼀个算法好坏的标准是(C)。
A运⾏速度快B占⽤空间少C时间复杂度低D代码短3、以下不可以使⽤分治法求解的是(D)。
A棋盘覆盖问题B选择问题C归并排序4.下列是动态规划算法基本要素的是(A、定义最优解B、构造最优解D0/1 背包问题D )。
C、算出最优解D、⼦问题重叠性质5.采⽤⼴度优先策略搜索的算法是( A )。
A、分⽀界限法B、动态规划法C、贪⼼法D、回溯法6、合并排序算法是利⽤( A )实现的算法。
A、分治策略B、动态规划法C、贪⼼法D、回溯法7、下列不属于影响程序执⾏时间的因素有哪些?( C )A.算法设计的策略 B .问题的规模C.编译程序产⽣的机器代码质量 D .计算机执⾏指令的速度8、使⽤分治法求解不需要满⾜的条件是(A)。
A⼦问题必须是⼀样的B⼦问题不能够重复9、下⾯问题(B)不能使⽤贪⼼法解决。
A 单源最短路径问题BN皇后问题C最⼩花费⽣成树问题D背包问题10.⼀个问题可⽤动态规划算法或贪⼼算法求解的关键特征是问题的(B)。
A、重叠⼦问题B、最优⼦结构性质C、贪⼼选择性质D、定义最优解11.以深度优先⽅式系统搜索问题解的算法称为A、分⽀界限算法B、概率算法( D )C、贪⼼算法。
D、回溯算法12. 实现最长公共⼦序列利⽤的算法是( B )。
A、分治策略B、动态规划法C、贪⼼法D、回溯法13.下列算法具有最优⼦结构的算法是(D)A.概率算法 B .回溯法 C .分⽀限界法D.动态规划法14.算法分析是(C)A.将算法⽤某种程序设计语⾔恰当地表⽰出来B.在抽象数据集合上执⾏程序,以确定是否会产⽣错误的结果C.对算法需要多少计算时间和存储空间作定量分析D.证明算法对所有可能的合法输⼊都能算出正确的答案15衡量⼀个算法好坏的标准是(C)A.运⾏速度快B. 占⽤空间少C.时间复杂度低D. 代码短16.⼆分搜索算法是利⽤(A)实现的算法。
算法期末考试题及答案
算法期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C2. 在二叉树的遍历算法中,中序遍历的顺序是:A. 先序B. 后序C. 中序D. 层序答案:C3. 动态规划与分治法算法的主要区别在于:A. 问题分解的方式B. 问题解决的顺序C. 存储中间结果的方式D. 问题规模的大小答案:C4. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链地址法C. 线性探测法D. 排序答案:D5. 以下哪个是图的遍历算法?A. 归并排序B. 深度优先搜索C. 快速排序D. 堆排序答案:B6. 贪心算法的特点是:A. 每一步都选择最优解B. 每一步都选择局部最优解C. 每一步都选择最差解D. 每一步都随机选择解答案:B7. 在算法分析中,时间复杂度O(1)表示:A. 常数时间B. 线性时间C. 对数时间D. 多项式时间答案:A8. 以下哪个是排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C9. 递归算法的基本原理是:A. 重复执行B. 分而治之C. 循环调用D. 迭代求解答案:B10. 以下哪个是算法的时间复杂度为O(log n)的典型例子?A. 二分查找B. 线性查找C. 冒泡排序D. 快速排序答案:A二、简答题(每题10分,共20分)1. 简述快速排序算法的基本思想及其时间复杂度。
答案:快速排序是一种分治法的排序算法。
其基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。
这个过程称为分区(partitioning)。
之后,递归地对这两部分进行快速排序。
快速排序的平均时间复杂度为O(n log n),但在最坏情况下(例如数组已经排序或所有元素相等)时间复杂度为O(n^2)。
2. 解释什么是动态规划,并给出一个动态规划问题的例子。
算法设计与分析期末复习题【试题.知识点】
算法设计与分析期末复习题【试题.知识点】算法设计与分析期末考试复习题1.算法有哪些特点?为什么说⼀个具备了所有特征的算法,不⼀定就是使⽤的算法?2.证明下⾯的关系成⽴:(参考例题1.5--1.6)(1)logn!=Θ(nlogn) (2)2n=Θ(2n+1)(3)n!=Θ(n n) (4)5n2-6n=Θ(n2)13.考虑下⾯的算法:输⼊:n个元素的数组A输出:按递增顺序排序的数组A1. void sort(int A[],int n)2. {3. int i,j,temp;4. for(i=0;i5. for(j=i+1;j6. if(A[j]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(i6. sorted=1;7. for(j=n-1;j>i;j--) {8. if(A[j]9. temp=A[j];210. 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)⽤О、和Ω记号表⽰算法的运⾏时间。
(6)可以⽤Θ记号来表⽰算法的运⾏时间吗?请说明。
35.解下⾯的递归⽅程:(1)f(n)=5f(n-1)-6f(n-2) f(0)=1 f(1)=0(2)f(n)=4f(n-1)-4f(n-2) f(0)=6 f(1)=86.初始链表的内容为:3562,6381,0356,2850,9136,3715,8329,7481,写出⽤基数排序算法对它们进⾏排序的过程。
算法期末复习题2
填空题:1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性有穷性可行性 0个或多个输入一个或多个输出2.算法的复杂性有时间复杂性和空间复杂性之分,衡量一个算法好坏的标准是时间复杂度高低。
3.某一问题可用动态规划算法求解的显著特征是该问题具有最优子结构性质。
5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解6.动态规划算法的基本思想是将待求解问题分解成若干子问题_,先求解子问题,然后从这些子问题的解得到原问题的解。
7.以深度优先方式系统搜索问题解的算法称为回溯法。
8.0-1背包问题的回溯算法所需的计算时间为o(n*2n),用动态规划算法所需的计算时间为o(min{nc,2n})。
9.动态规划算法的两个基本要素是最优子结构和重叠子问题。
10.二分搜索算法是利用动态规划法实现的算法。
11.一个算法复杂性的高低体现在计算机运行该算法所需的时间和存储器资源上,因此算法的复杂性有时间复杂性和空间复杂性之分。
12.出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致相同。
13.动态规划算法有一个变形方法备忘录方法。
这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解。
14、这种不断回头寻找目标的方法称为回溯法。
15、直接或间接地调用自身的算法称为递归算法。
16、 记号在算法复杂性的表示法中表示渐进确界或紧致界。
17、由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。
18、建立计算模型的目的是为了使问题的计算复杂性分析有一个共同的客观尺度。
19、下列各步骤的先后顺序是②③④①。
①调试程序②分析问题③设计算法④编写程序。
20、最优子结构性质的含义是问题的最优解包含其子问题的最优解。
算法分析期末试题集答案(6套)
《算法分析与设计》期末复习题(一)一、选择题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]的个数。
编程算法期末考试题及答案
编程算法期末考试题及答案一、选择题(每题2分,共20分)1. 在排序算法中,时间复杂度为O(nlogn)的排序算法是:A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C2. 下列哪个不是递归算法的特点?A. 函数调用自身B. 有明确的终止条件C. 必须有返回值D. 可以没有终止条件答案:D3. 动态规划算法主要用于解决:A. 排序问题B. 查找问题C. 计数问题D. 最优化问题答案:D4. 在图的遍历算法中,深度优先搜索(DFS)使用的是:A. 栈B. 队列C. 链表D. 树答案:A5. 哈希表的冲突解决方法不包括:A. 链地址法B. 开放地址法C. 再散列法D. 二分查找法答案:D二、简答题(每题10分,共30分)1. 请简述二叉树的遍历方法有哪些,并简要说明每种遍历的特点。
答案:二叉树的遍历方法主要有前序遍历、中序遍历、后序遍历和层序遍历四种。
- 前序遍历:首先访问根节点,然后遍历左子树,最后遍历右子树。
- 中序遍历:首先遍历左子树,然后访问根节点,最后遍历右子树。
- 后序遍历:首先遍历左子树,然后遍历右子树,最后访问根节点。
- 层序遍历:按照从上到下、从左到右的顺序逐层访问节点。
2. 什么是贪心算法?请举例说明。
答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。
贪心算法不保证会得到最优解,但在某些问题上贪心算法可以得到最优解。
例如,硬币找零问题,假设有无限多的1元、5角和1角硬币,需要找给顾客x元零钱,贪心算法会尽可能多地使用面额较大的硬币,依次选择1元、5角和1角硬币,直到凑齐x元。
3. 什么是动态规划?请简述其基本思想。
答案:动态规划是一种将复杂问题分解为更简单的子问题,通过解决子问题来解决整个问题的方法。
动态规划的基本思想是:- 将原问题分解为一系列子问题;- 通过解决子问题,并将子问题的解存储起来(通常用一个数组或哈希表);- 利用这些子问题的解来解决更复杂的问题,避免重复计算。
《算法设计与分析》期末必考复习及答案题整理
《算法设计与分析》期末必考复习及答案题整理1、分治法的基本思想:是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题互相独立且与原问题相同。
递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
2、贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优的选择,3、 Prim算法:设G=(V,E)是连通带权图,V={1,2,…,n}。
构造G的最小生成树的Prim算法的基本思想是:首先置S={1},然后,只要S是V的真子集,就作如下的贪心选择:选取满足条件i?S,j?V-S,且c[j]最小的边,将顶点j添加到S 中。
这个过程一直进行到S=V时为止。
4、什么是剪枝函数:回溯法搜索解空间树时,通常采用两种策略避免无效搜索,提高回溯法的搜索效率。
其一是用约束函数在扩展结点处剪去不满足约束的子树;其二是用限界函数剪去得不到最优解的子树。
这两类函数统称为剪枝函数。
6、分支限界法的基本思想:(1)分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。
(2)在分支限界法中,每一个活结点只有一次机会成为扩展结点。
活结点一旦成为扩展结点,就一次性产生其所有儿子结点。
在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
(3)此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程,这个过程一直持续到找到所需的解或活结点表这空时为止。
5、什么是算法的复杂性:是该算法所需要的计算机资源的多少,它包括时间和空间资源。
6、最优子结构性质:该问题的最优解包含着其子问题的最优解。
7、回溯法:是一个既带有系统性又带有跳跃性的搜索算法。
这在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。
算法搜索至解空间树的任一结点时,先判断该结点是否包含问题的解。
如果肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。
算法作业和期末复习题
1.给出递推公式x(n)=x(n-1)+n,x(0)=0对应的通项公式计算过程?解: X(n)-X(n-1)=nX(n-1)-X(n-2)=n-1…………X(1)-X(0)=1X(n)-X(0)=(n+1)n\2X(n)= (n+1)n\22.O、Θ、Ω之间的区别与联系O描述增长率的上限上限值越低,结果越有价值。
Θ用来表示算法的精确阶Ω描述增长率的下限下限值越高越有价值。
联系:只要当考察问题规模充分大时,算法中基本语句的执行次数在渐近意义下的阶,通常使用3种等渐近符号。
3.什么是数据结构,什么是算法,两者有什么关系?数据结构:是指相互之间存在一定关系的数据元素的集合。
算法:是对特定问题求解步骤的一种描述是指令的有限序列。
程序=算法+数据结构5.举例说明分治法、动态规划法和贪心法适用范围,及三者之间的区别。
答:分治法:适用于原问题可划分为子问题时如汉诺塔问题(循环赛,最近对,棋盘覆盖等)动态规划:当原问题可分解为子问题并且问题重叠并且具有最优子结构时可用动态规划法,如TSP问题(多端最短路径问题,0/1背包问题等)贪心:当一个问题具有最优子结构性质且具有贪心选择性时可用贪心算法,如最小生成树问题(背包问题,活动安排问题等)在分治法的基础上,满足最优子结构性质才能用动态规划,在动态规划可行的基础上满足贪心选择性才能用贪心。
6.简述分治法、贪心法、蛮力法、回溯法、减治法的设计思想。
分治:建一个难以直接解决的大问题划分成一些规模较小的子问题,以便各个击破,分而治之。
贪心把一个问题分解为一系列较简单的局部最优选择,每一步选择都是对当前解的一个扩展,直到获得问题的完整解。
(指根据当前已有信息做出选择,不从整体最优考虑,只选择局部最优蛮力:采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解。
回溯:只构造可能解的一部分,然后评估这个部分解,如果这个部分解有可能导致一个完全解,则对其进一步构造,否则,就不必继续构造这个解了。
计算机算法设计与分析期末试题4套(含答案)
(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义。
不存在二义性。
只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。
输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
算法期末考试练习题!!!
算法期末考试练习题博主内推:⼀、选择题1.算法分析中,记号O表⽰(B),记号Ω标售(A),记号Θ表⽰(D)A 渐进下界B 渐进上界C ⾮紧上界D 紧渐进界E ⾮紧下界2.以下关于渐进记号的性质是正确的有:(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))3. 记号O的定义正确的是(A)。
A O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ f(n) ≤ cg(n) };B O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ cg(n) ≤ f(n) };C O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤f(n)<cg(n) };D O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) };4. 记号Ω的定义正确的是(B)。
A O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ f(n) ≤ cg(n) };B O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ cg(n) ≤ f(n) };C (g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤f(n)<cg(n) };D (g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) };5. T(n)表⽰当输⼊规模为n时的算法效率,以下算法效率最优的是( C )A T(n)= T(n – 1)+1,T(1)=1B T(n)= 2n2C T(n)= T(n/2)+1,T(1)=1D T(n)= 3nlog2n6. 动态规划算法的基本要素为(C)A 最优⼦结构性质与贪⼼选择性质B 重叠⼦问题性质与贪⼼选择性质C 最优⼦结构性质与重叠⼦问题性质D 预排序与递归调⽤7.下列不是动态规划算法基本步骤的是( A )。
算法大题期末考试题及答案
算法大题期末考试题及答案一、简答题(每题5分,共20分)1. 简述什么是递归算法,并给出一个递归算法的实例。
答案:递归算法是一种在算法中使用函数调用自身的方法来解决问题的算法。
例如,计算阶乘的递归算法定义为:n! = n * (n-1)!,其中n是一个正整数,递归的基本情况是1! = 1。
2. 描述二分查找算法的基本思想,并说明其时间复杂度。
答案:二分查找算法是一种在有序数组中查找特定元素的算法。
其基本思想是将数组分为两半,比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。
这个过程重复进行,直到找到目标值或查找范围为空。
二分查找的时间复杂度为O(log n)。
3. 什么是动态规划?动态规划与贪心算法的区别是什么?答案:动态规划是一种通过将复杂问题分解为更小的子问题来解决的方法,并且通过存储这些子问题的解来避免重复计算。
动态规划与贪心算法的区别在于,贪心算法在每一步选择局部最优解,而动态规划则考虑所有可能的子问题解,并选择全局最优解。
4. 解释什么是哈希表,并简述其工作原理。
答案:哈希表是一种数据结构,它提供了快速的数据插入和查找功能。
哈希表通过哈希函数将键映射到表中的一个位置来访问记录,这个通过键到位置的映射过程称为哈希。
如果两个键具有相同的哈希值,这种情况称为冲突,通常通过链地址法或开放地址法来解决。
二、计算题(每题10分,共20分)1. 给定一个数组A=[3, 5, 7, 9, 11],请使用二分查找算法找出11的位置。
答案:首先,确定数组的中间位置,即(0+4)/2=2,比较A[2]与11,发现A[2]=7小于11,因此11在A[2]的右侧。
更新查找范围为A[3]到A[4],即索引3和4。
继续比较A[3]与11,发现A[3]=9小于11,因此11在A[3]的右侧。
最后,比较A[4]与11,发现A[4]=11等于目标值,所以11的位置是4。
算法期末复习题final
算法分析与设计期末复习题目一. 选择题1 -下列算法中通常以自底向上的方式求解最优解的是)oA 、备忘录法 B.动态规划法 C.贪心法 D.回溯法2、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短 3、以下不可以使用分治法求解的是(D )o7>下列不属于影响程序执行时间的因素有哪些(C )A.算法设计的策略 B •问题的规模C.编译程序产生的机器代码质量D.计算机执行指令的速度8、使用分治法求解不需要满足的条件是(A )。
A 子问题必须是一样的 B 子问题不能够重复 C 子问题的解可以合并D 原问题和子问题使用相同的方法解 9、 下面问题(B )不能使用贪心法解决。
A 单源最短路径问题B N 皇后问题A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题4. 下列是动态规划算法基本要素的是( A 、定义最优解B 、构造最优解题重叠性质5. 采用广度优先策略搜索的算法是( A 、分支界限法B 、动态规划法法6. 合并排序算法是利用( AC.算出最优解 ♦子问A )oC >贪心法D 、回溯)实现的算法。
A 、分治策略B 、动态规划法C >贪心法D 、回溯法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 )16 A.运行速度快B.占用空间少C.时间复杂度低D.代码短16.二分搜索算法是利用(A)实现的算法。
计算机算法设计与分析期末考试复习题
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。
回溯法解TSP问题时的解空间树是( A )。
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、回溯法10、实现最长公共子序列利用的算法是( B ).A、分治策略B、动态规划法C、贪心法D、回溯法11.下面不是分支界限法搜索方式的是( D ).A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B ).A、重叠子问题B、最优子结构性质C、贪心选择性质D、定义最优解14.广度优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.背包问题的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n) 16.实现最大子段和利用的算法是( B )。
A、分治策略B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。
算法基础答案期末考试试题
算法基础答案期末考试试题# 算法基础答案期末考试试题## 一、选择题(每题2分,共20分)1. 以下哪个算法是用于解决最近公共祖先问题的?A. 排序算法B. 快速幂算法C. 二分查找算法D. 深度优先搜索算法2. 在图的遍历中,广度优先搜索(BFS)使用的是什么数据结构来存储待访问的节点?A. 栈B. 队列C. 链表D. 堆3. 动态规划与分治法的区别在于:A. 问题规模的分解B. 子问题重叠C. 递归求解D. 迭代求解4. 以下哪个排序算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序5. 在哈希表中,如果哈希函数选择不当,可能导致的问题是:A. 空间浪费B. 内存溢出C. 冲突增加D. 性能提升## 二、简答题(每题10分,共30分)1. 简述贪心算法的基本思想及其适用场景。
2. 解释什么是二叉树的递归遍历,并给出前序遍历的递归算法实现。
3. 描述动态规划与贪心算法在解决问题时的主要区别。
## 三、计算题(每题25分,共50分)1. 给定一个数组 `A = [3, 5, 1, 2, 4]`,请使用归并排序算法对其进行排序,并给出排序过程中的详细步骤。
2. 假设有一个字符串 `S = "banana"`,使用KMP算法查找子串 `T = "anana"` 在 `S` 中的所有出现位置,并给出算法的详细步骤。
## 四、编程题(共30分)编写一个函数 `findMaxSubarraySum`,该函数接受一个整数数组`arr` 和一个整数 `k`,返回 `arr` 中长度为 `k` 的最大子数组和。
如果不存在长度为 `k` 的子数组,则返回 `-1`。
## 五、论述题(共20分)论述分治法在解决排序问题中的应用,并给出一个具体的例子。
请注意,以上内容仅为示例,具体题目和答案需要根据实际教学内容和课程要求进行设计。
在实际考试中,应确保题目的准确性和合理性,以考察学生对算法基础知识的掌握程度。
算法期末考试试卷
算法期末考试试卷一、选择题(每题2分,共20分)1. 在图论中,下列哪项不是图的基本术语?- A. 顶点- B. 边- C. 环- D. 矩阵2. 快速排序算法的平均时间复杂度是:- A. O(n)- B. O(n log n)- C. O(n^2)- D. O(log n)3. 哈希表解决冲突最常用的方法是:- A. 链地址法- B. 开放地址法- C. 再哈希法- D. 二次探测法4. 以下哪个是动态规划算法的典型问题?- A. 二分搜索- B. 快速排序- C. 背包问题- D. 归并排序5. 在算法分析中,最坏情况下的时间复杂度是指:- A. 平均时间复杂度- B. 最优时间复杂度- C. 所有可能输入的时间复杂度中的最大值 - D. 随机时间复杂度6. 递归算法的基本思想是:- A. 将问题分解为更小的子问题- B. 将问题转化为更简单的问题- C. 将问题转化为更复杂的问题- D. 将问题转化为多个问题7. 以下哪个是贪心算法不能解决的问题?- A. 单源最短路径问题- B. 活动选择问题- C. 背包问题- D. 旅行商问题8. 以下哪个排序算法是稳定的?- A. 快速排序- B. 堆排序- C. 归并排序- D. 冒泡排序9. 以下哪个是图的遍历算法?- A. 深度优先搜索(DFS)- B. 广度优先搜索(BFS)- C. 回溯算法- D. 动态规划10. 以下哪个是并查集算法的应用场景?- A. 最小生成树- B. 图的连通性- C. 单源最短路径- D. 动态规划二、简答题(每题10分,共30分)1. 简述二叉树的前序遍历、中序遍历和后序遍历的区别。
2. 描述动态规划和贪心算法的区别,并给出一个例子。
3. 解释什么是时间复杂度,并说明为什么在算法设计中考虑时间复杂度很重要。
三、编程题(每题25分,共50分)1. 编写一个函数,实现快速排序算法,并用一个数组测试你的函数。
2. 编写一个函数,实现Dijkstra算法,用于计算图中单源最短路径,并用一个图的示例来测试你的函数。
算法期末考试试题及答案
算法期末考试试题及答案一、选择题(每题2分,共20分)1. 在排序算法中,时间复杂度为O(n^2)的算法是:A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序2. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链接法C. 链表法D. 排序法3. 以下哪个不是二叉树的性质:A. 每个节点最多有两个子节点B. 没有兄弟节点C. 左子树的所有节点的值小于根节点的值D. 右子树的所有节点的值大于根节点的值4. 在图的遍历算法中,深度优先搜索(DFS)使用的是:A. 栈B. 队列C. 链表D. 哈希表5. 动态规划与分治法的区别在于:A. 动态规划使用贪心选择,分治法不使用B. 分治法使用贪心选择,动态规划不使用C. 动态规划使用递归,分治法不使用D. 动态规划使用迭代,分治法使用递归...二、简答题(每题10分,共30分)1. 简述快速排序算法的基本思想。
2. 解释什么是贪心算法,并给出一个实际应用的例子。
3. 描述图的广度优先搜索(BFS)算法的步骤。
三、计算题(每题15分,共30分)1. 给定一个数组A=[3, 1, 4, 1, 5, 9, 2, 6, 5, 3],请使用归并排序算法对其进行排序,并给出排序过程中的每一步。
2. 假设有一个无向图,顶点集为V={A, B, C, D},边集为E={(A, B), (B, C), (C, D), (D, A)},请使用Kruskal算法找到该图的最小生成树。
四、编程题(每题20分,共20分)1. 编写一个函数,实现单源最短路径的Dijkstra算法。
函数输入为图的邻接矩阵和起始顶点,输出为从起始顶点到所有其他顶点的最短路径长度。
答案一、选择题1. C2. D3. B4. A5. D二、简答题1. 快速排序算法的基本思想是通过一个划分操作,将数组分为两部分,一部分比另一部分的所有元素都要小,然后再递归地对这两部分进行快速排序,最后将两部分合并。
2. 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。
大学算法期末考试题及答案
大学算法期末考试题及答案一、单项选择题(每题2分,共20分)1. 算法复杂度中的T(n)表示什么?A. 时间复杂度B. 空间复杂度C. 迭代次数D. 执行路径长度答案:A2. 在排序算法中,快速排序的平均时间复杂度是:A. O(n^2)B. O(nlogn)C. O(n)D. O(logn)答案:B3. 下列哪个算法不是动态规划算法?A. 斐波那契数列B. 背包问题C. 最长公共子序列D. 二分查找答案:D4. 哈希表的冲突解决策略中,开放寻址法和链地址法的主要区别是什么?A. 开放寻址法使用数组,链地址法使用链表B. 开放寻址法使用链表,链地址法使用数组C. 开放寻址法只能处理少量冲突,链地址法可以处理大量冲突D. 以上都不是答案:C5. 在图的遍历算法中,深度优先搜索(DFS)使用的是:A. 队列B. 栈C. 链表D. 数组答案:B6. 堆排序算法中,将一个堆结构调整为最大堆或最小堆的过程称为:A. 堆调整B. 堆构建C. 堆分解D. 堆合并答案:A7. 以下哪个排序算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 选择排序答案:B8. 算法的五个基本特性包括有穷性、确定性、可行性、输入和输出,其中输入可以是:A. 数据B. 初始条件C. 指令D. 任意值答案:B9. 递归算法的效率往往比非递归算法低,这是因为:A. 递归需要额外的内存空间B. 递归需要更多的计算步骤C. 递归会导致栈溢出D. 递归需要重复计算相同的问题答案:D10. 在下列排序算法中,最不适合于排序大量数据的是:A. 插入排序B. 选择排序C. 归并排序D. 快速排序答案:A二、填空题(每题2分,共20分)11. 算法的时间复杂度为O(1),表示该算法的执行时间与输入数据的规模______。
答案:无关12. 在二叉树的遍历中,先序遍历的顺序是先访问根节点,然后按照______的顺序访问所有子树。
答案:先左后右13. 动态规划算法通常用于解决具有______性质的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法分析与设计期末复习题目一、选择题1.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法2、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短3、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/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 单源最短路径问题B N皇后问题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 )16 A.运行速度快 B. 占用空间少 C.时间复杂度低 D. 代码短16.二分搜索算法是利用(A)实现的算法。
A.分治法B.动态规划法C.贪心法D.回溯法17.用贪心法设计算法的关键是( B )。
A.将问题分解为多个子问题来分别处理B.选好最优量度标准C.获取各阶段间的递推关系式D.满足最优性原理18.找最小生成树的算法Kruskal 的时间复杂度为( D )(其中n 为无向图的结点数,m 为边数)A .O(n 2)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( nlog n ) D. O( 10nlog n )22.二分搜索算法的时间复杂性为( C )。
(2n ) (n ) (n log ) D. O(n n log )23、快速排序算法的时间复杂性为( D )。
(2n ) (n ) (n log ) D. O(n n log )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. 函数n n 1032 的渐进表达式是( D )。
A. O(23n ) B. O(3) C. O(n 10) (2n )二、填空题1、解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中不需要排序的是 动态规划 ,需要排序的是 回溯法 ,分支限界法 。
2、使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N 皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是 0/1背包问题 ,只使用约束条件进行裁剪的是 N 皇后问题 。
3.贪心算法基本要素有 最优度量标准 和 最优子结构 。
4.回溯法解旅行售货员问题时的解空间树是排列树。
5.二分搜索算法是利用分治策略实现的算法。
6.算法的复杂性有时间复杂性和空间复杂性之分。
7、程序是算法用某种程序设计语言的具体实现。
8、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
9.矩阵连乘问题的算法可由动态规划设计实现。
10.回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。
11.任何可用计算机求解的问题所需的时间都与其规模有关。
12.快速排序算法的性能取决于划分的对称性。
13.背包问题的贪心算法void Knapsack(int n,float M,float v[],float w[],float x[]){Sort(n,v,w);int i;for (i=1;i<=n;i++) x[i]=0;float c=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=k2)。
输出:count的值。
1. count=02. while n>=13. for j=1 to n4. count =count+15. end for6. n=n/27. end whileend COUNT15.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。
16.快速排序、插入排序和选择排序算法中,快速排序算法是分治算法。
17. 下面算法的基本语句是__ S = S + i*j;____, 算法的时间复杂度是___O(2n)_____int fun(int n){int S = 0;for (int i=1; i <=n; i++ )for(int j=1; j<n – i ; j++)S = S + i*j;return S;}18. 最小生成树的prim算法应用的是贪心算法思想。
19. 分治算法的基本步骤包括分解子问题,递归求解子问题,合并解20. 归并排序和快速排序在平均情况下的时间复杂度都是O(nlogn),但是最坏情况下两种算法有区别,其中归并排序为 O(nlogn),快速排序为_O(2n)二、算法设计1.下面是用回溯法求解图的m着色问题的算法(求出所有解)。
图的m着色问题:给定一个无向连通图G和m种颜色,给图G的所有顶点着色,使得任何两相邻顶点的颜色不同。
已有函数color(k)用于在前k-1个顶点已着色的情况下,判断第k个顶点是否可着颜色x[k];是则返回true, 否则返回false。
输入:正整数m, n和含n个顶点的无向连通图G的邻接矩阵graph。
输出:图G的m着色问题的所有解, 若无解,则输出no solution。
flag=falsek=1; x[1]=0while k>=1while (1)x[k]=x[k]+1if color(k) thenif (2) thenflag=true; output x[1..n]elsek= (3)(4)end ifend ifend while(5)end whileif not flag then output “no solution”end m-COLORING(1) x[k]<m (2) k=n (3) k+1(4) x[k]=0 (5) k=k-12.下面是求解矩阵链乘问题的动态规划算法。
矩阵链乘问题:给出n 个矩阵M 1, M 2, …, M n , M i 为r i ⨯r i+1阶矩阵,i=1,2, …, n ,求计算M 1M 2…M n 所需的最少数量乘法次数。
记 M i, j =M i M i+1…M j , i<=j 。
设C[i, j], 1<=i<=j<=n, 表示计算M i, j 的所需的最少数量乘法次数,则⎪⎩⎪⎨⎧<++==+≤<j i , }r r r j] C[k,1]-k ,i [C {min j i , 0j] ,i [C 1j k i jk i算法 MATCHAIN输入:矩阵链长度n, n 个矩阵的阶r[1..n+1], 其中r[1..n]为n 个矩阵的行数,r[n+1]为第n 个矩阵的列数。
输出:n 个矩阵链乘所需的数量乘法的最少次数。
for i=1 to n C[i, i]= (1)for d=1 to n-1for i=1 to n-dj= (2)C[i, j]= ∞for k=i+1 to jx= (3)if x<C[i, j] then(4) =xend ifend forend forend forreturn (5)end MATCHAIN(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皇后问题的算法(求出所有解)。