算法分析实践环节习题集-2015年
算法设计与分析习题答案
算法设计与分析习题答案算法设计与分析是计算机科学中一个重要的领域,它涉及到算法的创建、优化以及评估。
以下是一些典型的算法设计与分析习题及其答案。
习题1:二分查找算法问题描述:给定一个已排序的整数数组,编写一个函数来查找一个目标值是否存在于数组中。
答案:二分查找算法的基本思想是将数组分成两半,比较中间元素与目标值的大小,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。
这个过程会不断重复,直到找到目标值或搜索范围为空。
```pythondef binary_search(arr, target):low, high = 0, len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] == target:return Trueelif arr[mid] < target:low = mid + 1else:high = mid - 1return False```习题2:归并排序算法问题描述:给定一个无序数组,使用归并排序算法对其进行排序。
答案:归并排序是一种分治算法,它将数组分成两半,分别对这两半进行排序,然后将排序好的两半合并成一个有序数组。
```pythondef merge_sort(arr):if len(arr) > 1:mid = len(arr) // 2left_half = arr[:mid]right_half = arr[mid:]merge_sort(left_half)merge_sort(right_half)i = j = k = 0while i < len(left_half) and j < len(right_half): if left_half[i] < right_half[j]:arr[k] = left_half[i]i += 1else:arr[k] = right_half[j]j += 1k += 1while i < len(left_half):arr[k] = left_half[i]i += 1k += 1while j < len(right_half):arr[k] = right_half[j]j += 1k += 1arr = [38, 27, 43, 3, 9, 82, 10]merge_sort(arr)print("Sorted array is:", arr)```习题3:动态规划求解最长公共子序列问题问题描述:给定两个序列,找到它们的最长公共子序列。
算法分析与设计习题集答案
算法分析与设计习题集基础篇1、算法有哪些特点?它有哪些特征?它和程序的主要区别是什么?特点:就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算〔书上定义〕特征:输入、输出、有穷性、明确性、有效性区别:算法是完成特定任务的有限指令集。
程序是用电脑语言编写的写成特定任务的指令序列。
2、算法的时间复杂度指的是什么?如何表示?算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。
这是一个关于代表算法输入值的字符串的长度的函数。
时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。
〔百度百科〕3、算法的空间复杂度指的是什么?如何表示?一个程序的空间复杂度是指运行完一个程序所需内存的大小。
利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。
一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。
程序执行时所需存储空间包括以下两部分。
〔1〕固定部分。
这部分空间的大小与输入/输出的数据的个数多少、数值无关。
主要包括指令空间〔即代码空间〕、数据空间〔常量、简单变量〕等所占的空间。
这部分属于静态空间。
〔2〕可变空间,这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。
这部分的空间大小与算法有关。
一个算法所需的存储空间用f(n)表示。
S(n)=O(f(n))其中n为问题的规模,S(n)表示空间复杂度。
答:最坏情况时间复杂性:最好情况时间复杂性::I*是DN中使T(N, I*)到达Tmax(N)的合法输入;P(I)是在算法的应用中出现输入I的概率10、限界函数的功能是什么?答:用限界函数剪去得不到最优解的子树11、设某一函数定义如下:编写一个递归函数计算给定x的M〔x〕的值。
本函数是一个递归函数,其递归出口是:M〔x〕= x-10x>100递归体是:M〔M〔x+11〕〕x ≤100实现此题功能的递归函数如下:intm ( intx ){ int y;if ( x>100 )return(x-10 );else {y =m(x+11) ;return (m (y ));}procedure M(x)if x>100 thenreturn(x-10)elsereturn M(M(x+11))endifend M12、已知一个顺序表中的元素按元素值非递减有序排列,编写一个函数删除表中多余的值相同的元素。
算法分析课后习题
算法分析课后习题参考答案第1章⼀、填空题1. 有穷性、确定性、输⼊、输出、可⾏性2. 时间复杂性、空间复杂性3. 数据的逻辑结构、存储结构和数据的运算4. 算法的复杂性5. 递归技术、分治法、模拟法、贪⼼算法、状态空间搜索法、随机算法、动态规划6. 抽象的操作7. 将某种程序设计语⾔的基本结构与⾮形式的英⽂或中⽂叙述语句相结合产物8. 问题的陈述、模型的选择、算法的设计、算法的程序实现、算法分析9. 指算法在计算机内执⾏时所需存储空间的度量10. 指令空间和数据空间⼆、选择题1. C2. A3. C4. B5. A6. C7. CAB8. D9. D 10. C 11. B 12. B 13. B 14. D 15. B三、简答题1. 算法是在有限步骤内求解某⼀问题所使⽤的⼀组定义明确的规则。
通俗点说,就是计算机解题的过程。
在这个过程中,⽆论是形成解题思路还是编写程序,都是在实施某种算法。
前者是推理实现的算法,后者是操作实现的算法。
2. ⼀个算法应该具有以下五个重要的特征:有穷性:⼀个算法必须保证执⾏有限步之后结束;确切性:算法的每⼀步骤必须有确切的定义;输⼊:⼀个算法有0个或多个输⼊,以刻画运算对象的初始情况,所谓0个输⼊是指算法本⾝定除了初始条件;输出:⼀个算法有⼀个或多个输出,以反映对输⼊数据加⼯后2 算法分析与设计的结果。
没有输出的算法是毫⽆意义的;可⾏性:算法原则上能够精确地运⾏,⽽且⼈们⽤笔和纸做有限次运算后即可完成。
3. 关于算法的复杂性,有两个问题要弄清楚:(1)⽤怎样的⼀个量来表达⼀个算法的复杂性。
(2)对于给定的⼀个算法,怎样具体计算它的复杂性。
算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
⼀个算法的复杂性的⾼低体现在运⾏该算法所需要的计算机资源的多少上⾯,所需的资源越多,我们就说该算法的复杂性越⾼;反之,所需的资源越低,则该算法的复杂性越低。
4. 算法是对特定问题求解步骤的⼀种描述,它是指令的有限序列,其中每⼀条指令表⽰⼀个或多个操作。
算法分析期末试题集答案(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]的个数。
算法分析与设计习题集整理
算法分析与设计习题集整理算法分析与设计习题集整理第⼀章算法引论⼀、填空题:1、算法运⾏所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂度和空间复杂度。
2、多项式10()m m A n a n a n a =+++ 的上界为O(n m)。
3、算法的基本特征:输⼊、输出、确定性、有限性、可⾏性。
4、如何从两个⽅⾯评价⼀个算法的优劣:时间复杂度、空间复杂度。
5、计算下⾯算法的时间复杂度记为: O(n 3) 。
for(i=1;i<=n;i++)for(j=1;j<=n;j++) {c[i][j]=0; for(k=1;k<=n;k++) c[i][j]= c[i][j]+a[i][k]*b[k][j]; }6、描述算法常⽤的⽅法:⾃然语⾔、伪代码、程序设计语⾔、流程图、盒图、PAD 图。
7、算法设计的基本要求:正确性和可读性。
8、计算下⾯算法的时间复杂度记为: O(n 2) 。
for (i =1;i{ y=y+1; for (j =0;j <=2n ;j++ ) x ++; }9、计算机求解问题的步骤:问题分析、数学模型建⽴、算法设计与选择、算法表⽰、算法分析、算法实现、程序调试、结果整理⽂档编制。
10、算法是指解决问题的⽅法或过程。
⼆、简答题:1、按照时间复杂度从低到⾼排列:O( 4n 2)、O( logn)、O( 3n )、O( 20n)、O( 2)、O( n 2/3), O( n!)应该排在哪⼀位?答:O( 2),O( logn),O( n 2/3),O( 20n),O( 4n 2),O( 3n),O( n!)2、什么是算法?算法的特征有哪些?答:1)算法:指在解决问题时,按照某种机械步骤⼀定可以得到问题结果的处理过程。
通俗讲,算法:就是解决问题的⽅法或过程。
2)特征:1)算法有零个或多个输⼊;2)算法有⼀个或多个输出; 3)确定性;4)有穷性3、给出算法的定义?何谓算法的复杂性?计算下例在最坏情况下的时间复杂性?for(j=1;j<=n;j++) (1)for(i=1;i<=n;i++) (2) {c[i][j]=0; (3) for(k=1;k<=n;k++) (4) c[i][j]= c[i][j]+a[i][k]*b[k][j]; } (5)答:1)定义:指在解决问题时,按照某种机械步骤⼀定可以得到问题结果的处理过程。
(完整版)算法设计与分析考试题及答案,推荐文档
____________________________________。 4.若序列 X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列
X 和 Y 的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至
和
之分。
5、 f(n)= 6×2n+n2,f(n)的渐进性态 f(n)= O(
)
6、 贪心算法总是做出在当前看来
的选择。也就是说贪心算法并不从整体最优考
虑,它所做出的选择只是在某种意义上的
。
7、 许多可以用贪心算法求解的问题一般具有 2 个重要的性质:
性质和
性质。
二、简答题(本题 25 分,每小题 5 分)
五、算法理解题(本题 5 分) 设有 n=2k 个运动员要进行循环赛,
现设计一个满足以下要求的比赛日程表:
①每个选手必须与其他 n-1 名选手比赛各一次; ②每个选手一天至多只能赛一次;
③循环赛要在最短时间内完成。
我去(人1)如也果 就n=2k有,循人环赛!最少为需要U进R行扼几天腕; 入站内信不存在向你偶同意调剖沙 (2)当 n=23=8 时,请画出循环赛日程表。
六、算法设计题(本题 15 分) 分别用贪心算法、动态规划法、回溯法设计 0-1 背包问题。要求:说明所使用的算法
策略;写出算法实现的主要步骤;分析算法的时间。 七、算法设计题(本题 10 分)
建议收藏下载本文,以便随时学习! 通过键盘输入一个高精度的正整数 n(n 的有效位数≤240),去掉其中任意 s 个数字后, 剩下的数字按原左右次序将组成一个新的正整数。编程对给定的 n 和 s,寻找一种方案, 使得剩下的数字组成的新数最小。 【样例输入】 178543 S=4 【样例输出】 13
算法分析与设计试题及答案
算法分析与设计试题及答案一、选择题1. 下列哪个是属于分治算法的例子?A. 冒泡排序B. 归并排序C. 顺序查找D. 选择排序答案:B2. 在排序算法中,时间复杂度最优的是:A. 冒泡排序B. 插入排序C. 归并排序D. 快速排序答案:C3. 哪个不是动态规划的特点?A. 具有重叠子问题B. 通过递归求解C. 需要保存子问题的解D. 具有最优子结构答案:B4. 在图的广度优先搜索算法中,使用的数据结构是:A. 栈B. 队列C. 数组D. 堆栈答案:B5. 在最小生成树算法中,下列哪个不属于贪心策略?A. Kruskal算法B. Prim算法C. Dijkstra算法D. Prim-Kruskal混合算法答案:C二、简答题1. 请简述分治算法的思想和应用场景。
答案:分治算法的思想是将原问题分解成若干个规模较小且类似的子问题,然后解决子问题,最后将子问题的解合并得到原问题的解。
其应用场景包括排序算法(如归并排序、快速排序)、搜索算法(如二分查找)等。
2. 什么是动态规划算法?请给出一个动态规划算法的示例。
答案:动态规划算法是一种通过将问题分解成子问题并解决子问题来解决复杂问题的方法。
它的特点是具有重叠子问题和最优子结构性质。
以斐波那契数列为例,可以使用动态规划算法求解每一项的值,而不需要重复计算。
3. 图的深度优先搜索和广度优先搜索有什么区别?答案:图的深度优先搜索(Depth First Search,DFS)是一种先访问子节点再访问兄弟节点的遍历算法,通常使用递归或者栈实现。
而广度优先搜索(Breadth First Search,BFS)则是以层次遍历的方式展开搜索,使用队列来实现。
DFS更适合用于搜索路径,BFS则适用于寻找最短路径等。
4. 请简述贪心算法的特点及其应用场景。
答案:贪心算法的特点是每一步都采取当前状态下最优的选择,以期望得到全局最优解。
然而,贪心算法并不一定能求解所有问题的最优解,但对于一些特定问题,贪心算法往往能得到近似最优解。
《算法分析与设计》练习题一答案.docx
《算法分析与设计》练习题一答案1.程序书写格式应该遵循哪四个原则?参考答案:(1)正确使用缩进:一定要有缩进,否则代码的层次不明显。
(2)在一行内只写一条语句。
(3), '}'位置不可随意放置。
(4)变量和运算符之间最好加1个空格2.什么是算法?参考答案:用计算机解决问题的过程可以分成三个阶段:分析问题、设计算法和实现算法。
算法可以理解为冇基本运算及规定的运算顺序所构成的完整的解题步骤,它是求解问题类的、机械的、统一的方法,它由有限多个步骤组成,对于问题类屮每个给定的具体问题,机械地执行这些步骤就可以得到问题的解答。
或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
3.什么是线性结构?什么是非线性结构?参考答案:线性结构:数据逻辑结构屮的一类。
它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所冇结点都冇R只冇一个直接前趋和一个直接后继。
线性表就是一个典型的线性结构。
栈、队列、串等都是线性结构。
非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接而趋和直接后继。
数组、广义表、树和图等数据结构都是非线性结构。
4.已知二叉树后序遍丿力序列是DABEC,屮序遍丿力序列是DEBAC,则前序遍历序列是什么?参考答案:前序遍历序列是CEDBA5.什么是数制?参考答案:数制是人们利用符号进行计数的一种科学方法。
数制也称计数制,是用一组固定的符号和统一的规则來表示数值的方法。
6.如果将十进制数106转换为八进制数,结果是多少?参考答案:1527.请问查找算法的效率用什么进行度量?参考答案:平均查找长度ASL:在查找其关键字等于给定值的过程小,需要和给定值进行比较的关键字个数的期望值称为查找成功吋的平均查找长度。
AS厶=£皿/=1其屮,n是结点的个数;是杳找第i个结点的概率,是找到第i个结点所需要的比较次数。
算法设计与程序分析习题精选含答案(第一章)
作业一1.1.8. What does Euclid's algorithm do for a pair of integers in which the first is smaller than the second? What is the maximum number of times this can happen during the algorithm's execution on such an input?答:欧几里得算法采用重复应用gcd(m,n)直到m mod n =0,对于任何0<n<m,gcd(n,m)=gcd(m,n)且只会出现一次。
1.1.12. Locker doors There are n lockers in a hallway, numbered sequentially from 1 to n. Initially, all the locker doors are closed. You make n passes by thelockers, each time starting with locker #1. On the ith pass,i=1,2,..….n, you toggle the door of every ith locker: if the door is closed, you open it; if it is open, you close it. After the last pass, which locker doors are open and which are closed? How many of them are open?答:Locker.py图1. 门锁问题代码Output:图2. 门锁问题输出1.2.1. Old World puzzle A peasant finds himself on a riverbank with a wolf,a goat, and a head of cabbage. He needs to transport all three to the other side of the river in his boat. However, the boat has room for only the peasant himself and one other item(either the wolf, the goat, or the cabbage). In his absence, the wolf would eat the goat, and the goat would eat the cabbage. Solve this problem for the peasant or prove it has no solution.(Note: The peasant is a vegetarian but does not like cabbage and hence can eat neither the goat nor the cabbage to help him solve the problem. And it goes without saying that the wolf is a protected species.)答:图3. 农夫问题图示1.2.2New World puzzle There are four people who want to cross a rickety bridge; they all begin on the same side. You have 17 minutes to get them all across to the other side. It is night, and they have one flashlight.A maximum of two people can cross the bridge at one time. Any party that crosses, either one or two people, must have the flashlight with them. The flashlight must be walked back and forth; it cannot be thrown, for example. Person 1 takes 1 minute to cross the bridge, person 2 takes 2 minutes, person 3 takes 5 minutes, and person 4 takes 10 minutes.A pair must walk together at the rate of the slower person's pace.(Note: According to a rumor on the Internet, interviewers at a well-known software company located near Seattle have given this problem to interviewees.)答:表1. 过桥问题终点甲乙乙乙丙丁丙丁甲乙丙丁时间0 2 3 13 15 17起点甲乙丙丁丙丁甲丙丁甲甲乙1.2.4. Write pseudocode for an algorithm for finding real roots of equation ax2+bx+c=0 for arbitrary real coefficients a,b, and c.(You may assume the availability of the square root function sqrt(x).)答:图4. 二次方根问题代码Output:图5. 二次方根问题输出1.3.1. Consider the algorithm for the sorting problem that sorts an array by counting, for each of its elements, the number of smaller elements and then uses this information to put the element in its appropriate position in the sorted array:ALGORITHM ComparisonCountingSort(A[0..n-1])//Sorts an array by comparison counting//Input: Array A[0..n-1] of orderable values//Output: Array S[0..n-1] of A's elements sorted//in nondecreasing order fori-0ton-1do Count[i]-0For i←0 to n-2 doFor j←i+l to n-1 doif A[i]<A[j]Count[j] ←Count[j]+1else Count[i] ←Count[i]+1for i←0 to n-1 doS[Count[i]] ←A[i]Return Sa. Apply this algorithm to sorting the list 60,35,81,98,14,47.b. Is this algorithm stable?c. Is it in-place?答:a.图6. 排序问题代码图7. A问题b.不稳定,如下面的排序表2. 相同数字遍历c.不在位,图6中的列表B和C都是额外的空间1.3.4. Kinigsberg bridges The Konigsberg bridge puzzle is universally accepted as the problem that gave birth to graph theory. It was solved by the great Swiss-born mathematician Leonhard Euler (1707-1783). The problem asked whether one could, in a single stroll, cross all seven bridges of the city of Konigsberg exactly once and return to a starting point. Following is a sketch of the river with its two islands and seven bridges:图6. Kinigsberg bridgesa. State the problem as a graph problem.b. Does this problem have a solution? If you believe it does, draw such astroll; if you believe it does not, explain why and indicate the smallest number of new bridges that would be required to make such a stroll possible.答:a:图7. 问题图化b:除了起点以外,每一次当一个人由一座桥进入一块陆地(或点)时,他(或她)同时也由另一座桥离开此点。
算法题--计算机算法设计与分析期末试题4套(含答案)
(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义。
不存在二义性。
只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。
输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
算法分析作业
算法分析练习题(一)一、选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法4、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短5、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题6. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法7.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法8.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法9.实现棋盘覆盖算法利用的算法是( A )。
A、分治法B、动态规划法C、贪心法D、回溯法10. 矩阵连乘问题的算法可由(B)设计实现。
A、分支界限算法B、动态规划算法C、贪心算法D、回溯算法11、Strassen矩阵乘法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法12、使用分治法求解不需要满足的条件是(A )。
A 子问题必须是一样的B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解13、下列算法中不能解决0/1背包问题的是(A )A 贪心法B 动态规划C 回溯法D 分支限界法14.实现合并排序利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法15.下列是动态规划算法基本要素的是( D )。
A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质16.下列算法中通常以自底向下的方式求解最优解的是( B )。
A、分治法B、动态规划法C、贪心法D、回溯法17、合并排序算法是利用( A )实现的算法。
算法设计与分析习题集
答: (1)标准:重量、价值和单位价值。【3分,每个1分】 (2)使用重量从小到大:FGBAEDC。得到贪心解为:FGBAE全部放 入,而D放入20%,得到价值为165。【5分】 使用价值从大到小:DFBEGCA,得到贪心解为:DFBE全部放入,而G 放入80%,得到价值为:189。【5分】 使用单位价值从大到小:FBGDECA,得到贪心解为:FBGD全部放 入,而E放入87.5%,得到价值为190.625。【5分】 (3)显然使用单位价值作为标准得到的是最优解。【2分】
从a循环到h,每次求起始节点到其他节点的最短路径,最终可以求得所
有顶点对之间的最短路径。【2分】
1 给出一个的算法
解:假设A中元素个数为n,B中元素个数为m.
1. 算法思想:输入两个序列A、B a.分别对A、B进行归并排序 b.同时扫描A、B,设两个指针分别指向A、B的当前扫描元素。初始时 i、j分别指向A[0]、B[0] c. 若A[i]< B[j]则将A[i]存入C中,i后移
答: (1) 算法:n为偶数,将n个元素的序列分组,每两个元素一组,每组 经行比较,一共进行了n/2次比较,称每组比较后大的那个元素为 winner,小的那个为loser,在所有的winner中找一个最大的需n/2-1次 比较,再所有loser中找一个最小的需n/2-1次比较,共需次。 n为奇数时,将前n-1个元素两两比较,选出winner和loser,需次比较 将最后一个复制为两个,即a[n]=a[n-1],在所有的winner和a[n]中选 一个最大的,需次比较,在所有的loser和a[n-1]中选一个最小的需次 比较。 所以共次比较。
推导说明: 叶子数为的判定树高度,当判定树高度时,至多有个叶子, 因此在高度的判定树中,至少有个叶子结点的深度至少为。第一次放 缩时,将深度小于的叶子结点的深度都缩为0,只考虑剩余的深度为 的个叶子结点。
算法设计与分析课后习题
算法设计与分析课后习题(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第一章1. 算法分析题算法分析题1-1 求下列函数的渐进表达式(1). 3n^2 + 10n < 3n^2 + 10n^2 = 13n^2 = O(n^2)(2). n^2 / 10 + 2^n当n>5是,n^2 < 2 ^n所以,当n >= 1时,n^2/10 < 2 ^n故: n^2/10 + 2^n < 2 ^n + 2^n = 2*2^n = O(2^n)(3). 21 + 1/n < 21 + 1 = 22 = O(1)(4). log(n^3)=3log(n)=O(log(n))(5). 10log(3^n) = (10log3)n = O(n)算法分析题1-6(1)因为:f(n)=log(n^2) = 2log(n); g(n) = log(n) + 5所以:f(n)=Θ(log(n)+5) =Θ(g(n))(2)因为:log(n) < √n ; f(n) = 2log(n); g(n)= √n所以:f(n) = O(g(n))(3)因为:log(n) < n; f(n) = n; g(n) = log(n^2) = 2log(n)所以;f(n) = Ω(g(n))(4)因为:f(n) = nlogn +n; g(n) = logn所以:f(n) =Ω(g(n))(5)因为: f(n) = 10; g(n) = log(10)所以:f(n) =Θ(g(n))(6)因为: f(n)=log^2(n); g(n) = log(n)所以: f(n) ==Ω(g(n))(7)因为: f(n) = 2^n < 100*2^n; g(n)=100n^2; 2^n > n ^2所以: f(n) = Ω(g(n))(8)因为:f(n) = 2^n; g(n) = 3 ^n; 2 ^n < 3 ^n所以: f(n) = O(g(n))习题1-9 证明:如果一个算法在平均情况下的计算时间复杂性为Θ(f(n)),该算法在最坏情况下所需的计算时间为Ω(f(n)).分析与解答:因此,Tmax(N) = Ω(Tavg(N)) = Ω(Θ(f(n)))=Ω(f(n)).第二章算法分析题2-3 设a[0:n-1]是已经排好序的数组。
算法设计与分析-课后习题集答案
第一章3. 最大公约数为1。
快1414倍。
程序1-2的while 循环体做了10次,程序1-3的while 循环体做了14141次(14142-2循环)8.(1)画线语句的执行次数为log n ⎡⎤⎢⎥。
(log )n O 。
(2)画线语句的执行次数为111(1)(21)16jnii j k n n n ===++=∑∑∑。
3()n O 。
(3)画线语句的执行次数为。
O 。
(4)当n 为奇数时画线语句的执行次数为(1)(1)4n n +-, 当n 为偶数时画线语句的执行次数为 (2)4n n +。
2()n O 。
10.(1) 当 1n ≥ 时,225825n n n -+≤,所以,可选 5c =,01n =。
对于0n n ≥,22()5825f n n n n =-+≤,所以,22582()-+=O n n n 。
(2) 当 8n ≥ 时,2222582524n n n n n -+≥-+≥,所以,可选 4c =,08n =。
对于0n n ≥,22()5824f n n n n =-+≥,所以,22582()-+=Ωn n n 。
(3) 由(1)、(2)可知,取14c =,25c =,08n =,当0n n ≥时,有22212582c n n n c n ≤-+≤,所以22582()-+=Θn n n 。
11. (1) 当3n ≥时,3log log n n n <<,所以()20log 21f n n n n =+<,3()log 2g n n n n =+>。
可选212c =,03n =。
对于0n n ≥,()()f n cg n ≤,即()(())f n g n =O 。
(2) 当 4n ≥ 时,2log log n n n <<,所以 22()/log f n n n n =<,22()log g n n n n =≥。
可选 1c =,04n =。
算法分析实践环节习题集
信息工程学院算法分析实践环节习题集(2011年)序号项目名称任务描述设计要求指导教师人数1. 12.二进制位串的压缩树算法设计与实现第一步输入:二进制位串,例如:0000010000001111输出:如下图1所示的二进制压缩树第二步输入:二进制压缩树,如图1输出:二进制路径码数组如图2第三步:输入两个路径码数组,如图2,图3输出:相与后的路径码数组,如图4两个路径码数组相与就是求子码的过程,对于两个路径码x,y,如果x是y的前缀,那么y是x的子码,比如:0是0101的前缀,因此0101是0的子码。
所以图2和图3相与后的路径码数组是图4.用Java语言,或者C语言,推荐用Java语言。
要求:读文件,读取文件中所有的项,得到二进制串,然后构造每个项的二进制串的压缩树,并得到每个项的路径码。
刘全中 1图1图2图3图43.4.简单数据集跳跃显露模式挖掘算法设计与实现跳跃显露模式是指在样本的一个类别上发生次数为0,在另外一个类别上发生次数大于等于一个支持度计数阈值ξ的模式。
例如下表中数据,假定2=ξ。
那么在类别为1D上的跳跃显露模式有:},{eb,},,{edc利用Java语言或者C语言实现给定数据集、给定支持度阈值的所有跳跃显露模式。
刘全中 15.简单数据集频繁关闭模式挖掘算法设计与实现频繁模式是指在数据集中,出现的次数大于等于给定阈值ξ的项集。
如下表所示的数据集,假设2=ξ。
频繁模式:}{a,}{b,}{c, …….., },,,{mfca等对于模式p,如果不存在模式'p,'pp⊂. 使得包含p的事物和包含'p的事物相同。
那么p就是一个关闭频繁模式。
利用Java语言或者C语言实现给定数据集、给定支持度阈值的所有的频繁关闭刘全中 1例如,假设2=ξ,},,,{m f c a 就是一个关闭频繁模式。
6.利用分治思想设计循环赛日程表假设有n=2k 个运动员要进行网球循环赛。
设计一个满足一下要求的比赛日程表:(1). 每个选手必须与其他n-1个选手各赛一次 (2). 每个选手一天只能赛一次 (3). 循环赛一共进行n-1天利用Java 语言开发一个界面,输入运动员的个数,输出比赛日程表。
算法分析实践环节习题集-2016年(学生老师关注)
信息工程学院算法分析实践环节习题集--2016年序号项目名称任务描述设计要求指导教师人数1.搜索图中最小控制顶点集合给定一个无向连通子图G=(V, E),其中V表示图中顶点集合,E表示边的集合。
G的最小控制顶点集合为V的一个子集,S;假设集合R表示V排除集合S后剩余顶点集合,即,= V;则最小控制顶点集合S满足约束条件:R中任意一个顶点至少与S的一个顶点直接相连。
例如下图中红色顶点集合MDset表示一个最小控制顶点集合,任意一个绿色的顶点至少与一个红色顶点直接相连。
读取文件(网络),设计算法求解最小控制顶点集合。
文件中数据格式如下:A BB CC DB D每一行表示图的两个顶点,且两个顶点之间有一条边。
算法:Input:图文件Output:最小控制顶点集合刘全中 12.求解最大的双边聚类的子矩阵给定一个n行m列的矩阵E,单元格中数值1或者0,例如下图12行12列的矩阵中,灰色单元格表示1,白色单元格表示0。
矩阵中一个双边聚类子矩阵(G, C), ,,满足以下条件:(1)矩阵(G, C)的每个单元格中值都为1(2)不存在另一个子矩阵(G‟, C‟),,, 满足下面两个条件:(a)(G‟, C‟)中的每一个单元格值都为1(b)例如:下图左边的矩阵中其中2个双边聚类矩阵分别为({1,3},{1,3}),({1,8},{2,3,4})算法输入:存放矩阵的文件,例如图所示的文件为:1 1 1 1 1 0 0 0 0 0 0 01 1 0 1 0 0 0 0 0 0 0 01 0 1 0 0 0 0 1 0 0 1 00 0 0 0 1 0 1 0 1 0 1 11 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 1 1 0 1 0 00 0 0 0 0 0 1 0 0 1 1 00 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 1 0 0 0 0 0 00 1 0 0 0 0 0 0 1 1 0 00 1 0 0 1 0 0 0 0 0 0 01 1 0 1 1 0 0 0 0 0 0 0输出所有的双边聚类矩阵刘全中 13.图聚类的贪心算法实现一个子图G = (v, E)的内聚性定义如下:,其中表示子图G中边的权重之和,表示子图G与周围顶点连接边的权重之和。
算法分析设计历年题目
算法分析设计历年题目1.判断题1.一个正确的算法,对于每个合法输入,都会在有限的时间内输出一个满足要求的结果。
2.NP完全问题比其他所有NP问题都要难。
3.回溯法用深度优先法或广度优先法搜索状态空间树。
4.在动态规划中,各个阶段所确定的策略就构成一个策略序列,通常称为一个决策。
5.P类和NP类问题的关系用P⊂NP来表示是错误的。
6.若近似算法A求解某极小化问题一实例的解为s a,且已知该问题的最优解为s a/3 ,则该近似算法的性能比为3。
7.通常来说,算法的最坏情况的时间复杂行比平均情况的时间复杂性容易计算。
8.若P2多项式时间转化为(polynomial transforms to) P1,则P2至少与P1一样难。
9.快速排序算法的平均时间复杂度是O(n log n),使用随机化快速排序算法可以将平均时间复杂度降得更低。
10.基于比较的寻找数组A[1,…,n]中最大元素的问题下届是Ω(n/3)。
11.O(f(n))+O(g(n))=O(min{f(n),g(n)})12.若f(n)=Ω(g(n)),g(n)=Ω(ℎ(n)),则f(n)=Ω(ℎ(n))13.若f(n)=O(g(n)),则g(n)=Ω(f(n))14.贪婪技术所做的每一步选择所产生的部分解,不一定是可行性的。
s Vegas算法只要给出解就是正确的。
16.一个完全多项式近似方案是一个近似方案{Aε},其中每一个算法Aε在输入实例I的规模的多项式时间内运行。
2.问答题1.二叉查找树属于减治策略的三个变种中的哪一个的应用?什么情况下二叉查找树表现出最差的效率?此时的查找和插入算法的复杂性如何?2.何谓为多项式算法?如何将一Monte Carlo算法转化为Las Vegas算法?3.构造AVL树和2-3数的主要目的是什么?它们各自有什么样的查找和插入的效率?4.写出0/1背包问题的一个多项式等价(Polynomial Equivalent)的判定问题,并说明为什么它们是多项式等价的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息工程学院算法分析实践环节习题集--2015年序号项目名称任务描述设计要求指导教师人数1.搜索图中最小控制顶点集合给定一个无向连通子图G=(V, E),其中V表示图中顶点集合,E表示边的集合。
G的最小控制顶点集合为V的一个子集,S;假设集合R表示V排除集合S后剩余顶点集合,即,= V;则最小控制顶点集合S满足约束条件:R中任意一个顶点至少与S的一个顶点直接相连。
例如下图中红色顶点集合MDset表示一个最小控制顶点集合,任意一个绿色的顶点至少与一个红色顶点直接相连。
读取文件(网络),设计算法求解最小控制顶点集合。
文件中数据格式如下:A BB CC DB D每一行表示图的两个顶点,且两个顶点之间有一条边。
算法:Input:图文件Output:最小控制顶点集合刘全中 12.求解最大的双边聚类的子矩阵给定一个n行m列的矩阵E,单元格中数值1或者0,例如下图12行12列的矩阵中,灰色单元格表示1,白色单元格表示0。
矩阵中一个双边聚类子矩阵(G, C), ,,满足以下条件:(1)矩阵(G, C)的每个单元格中值都为1(2)不存在另一个子矩阵(G’, C’),,, 满足下面两个条件:(a)(G’, C’)中的每一个单元格值都为1(b)例如:下图左边的矩阵中其中2个双边聚类矩阵分别为({1,3},{1,3}),({1,8},{2,3,4})算法输入:存放矩阵的文件,例如图所示的文件为:1 1 1 1 1 0 0 0 0 0 0 01 1 0 1 0 0 0 0 0 0 0 01 0 1 0 0 0 0 1 0 0 1 00 0 0 0 1 0 1 0 1 0 1 11 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 1 1 0 1 0 00 0 0 0 0 0 1 0 0 1 1 00 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 1 0 0 0 0 0 00 1 0 0 0 0 0 0 1 1 0 00 1 0 0 1 0 0 0 0 0 0 01 1 0 1 1 0 0 0 0 0 0 0输出所有的双边聚类矩阵刘全中 13.图聚类的贪心算法实现一个子图G = (v, E)的内聚性定义如下:,其中表示子图G中边的权重之和,表示子图G与周围顶点连接边的权重之和。
注:如果图是无权图,边的权重设置为1.例如:如下图中,假设子图G表示包含A, B, D,E四个顶点,G = ({A, B, D, E}),则,= 5.则f(G) = 10/(10+5).如果一个子图G满足内聚性最大时,即局部最优时,则这个子图G就是一个聚类。
寻找内聚行最大的子图,用贪心算法,分以下三个步骤:(1) 对于G的每一个直接邻居顶点(外围的直接邻居),例如G={A,B,D,E},则G的直接邻居顶点为C, F, G. 找到具有最大值的顶点,如果,则}.(2) 对于G的每一个内部顶点,找到具有最大值的,其中表示集合G排除顶点后的集合;,则.算法输入:存放图的文件,例如图的文件格式如下:A BB CC DB D每一行表示图的两个顶点,且两个顶点之间有一条边.算法:(3)重复步骤1和2,直到集合G不发生变化,即收敛,算法结束。
Input:图文件Output:图中所有的内聚性最大的cluster.4.最大匹配率算法设计与实现两个图A和B之间的匹配率计算公式:,其中|A|表示图A中顶点个数,表示图A和图B共同顶点组成的子图。
例如下图中R1和P1的匹配率为:(4*4)/(4*5) = 0.8.给定两组子图R, P, 例如,如下图R = {R1, R2},P={P1, P2, P3}, 图中的边上的权值表示两个图之间的匹配率。
R和P之间最大匹配率计算方法如下:1. 找出一组边,使得P和R中的每一个顶点最多出现一条边上,而且边的权重累加和最大。
2. 最大匹配率为:第1步选择边的权重之和除以R中子图的个数例如: 下图中最大匹配率为:(0.8+0.75)/2Input:两组图Output:输出最大匹配率两个图文件格式如下:A B C D EF G H I每一行表示一个子图5.图合并算法的设计与实现给定若干个子图,如果两个子图的重复度大于等于0.8,需要合并这两个子图。
两个子图A和B重复度计算公式为:, 例如:X={A, B, C, D, E}, Y = {B, C, D,E},则= (4*4)/(4*5) = 0.8,则子图x和y需要合并。
合并算法有两种方法:方法一、从文件逐行扫描每一个子图,如果后面的子图于前面的子图重复度超过0.8,则把这两个子图合并为一个新的子图。
方法二、把每一个子图抽象为一个顶点,如果两个子图的重复度超过0.8,则把对应的两个顶点连一条边,这样构造一个新的图。
然后从新的图中搜索连通子图,每一个连通子图中所有的顶点进行合并。
Input: 子图文件,文件的格式如下:A B C D EF G H I每一行表示一个子图Output,合并后的子图,输出到一个新的文件中。
要求:用两种方法分别实现,并比较两种方法的时间复杂度6.简单数据集跳跃显露模式挖掘算法设计与实现跳跃显露模式是指在样本的一个类别上发生次数为0,在另外一个类别上发生次数大于等于一个支持度计数阈值ξ的模式。
例如下表中数据,假定2=ξ。
那么在类别为1D上的跳跃显露模式有:},{eb,},,{edc利用Java语言或者C语言实现给定数据集、给定支持度阈值的所有跳跃显露模式。
刘全中 17.简单数据集频繁关闭模式挖掘算法设计与实现频繁模式是指在数据集中,出现的次数大于等于给定阈值ξ的项集。
如下表所示的数据集,假设2=ξ。
频繁模式:}{a,}{b,}{c, …….., },,,{mfca等对于模式p,如果不存在模式'p,'pp⊂. 使得包含p的事物和包含'p的事物相同。
那么p就是一个关闭频繁模式。
利用Java语言或者C语言实现给定数据集、给定支持度阈值的所有的频繁关闭刘全中 1例如,假设2=ξ,},,,{m f c a 就是一个关闭频繁模式。
8.工作分配问题设有n 件工作分配给n 个人。
将工作i 分配给第j 个人所需的费用为cij 。
试设计一个算法,为每一个人都分配1 件不同的工作,并使总费用达到最小。
设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。
刘全中19.无分隔符字典问题设)(,...,2,1k ααα=∑是n 个互不相同的符号组成的符号集。
}1,|{,...,2,1k i L i k k ≤≤∑∈=ββββ是∑中字符组成的长度为k 的字符串全体。
k L S ∈是k L 的1个无分隔符字典是指对任意S a a a k ∈...,21和S b b k ∈...,b 21,则设计一个算法,对于给定的正整数n 和k,编程计算k L 的最大无分隔符字典数据输入:有文件input.txt 给出输入数据。
文件第1行有2个正整数n 和k 结果输出:刘全中 1}S ..b b b a ,...,b ...b a a ,b ...a a {a 1-k 21k 21431k 32φ=无分隔符字典问题要求对给定的n 和∑以及正整数k,编程计算k L 的最大无分隔符字典。
将计算出的k L 的最大无分隔符字典的元素个数输出到文件output.txt. 输入文件示例: 2 2 输出: 2.10.最少个数运算符求解算法的设计与实现关于整数的二元运算#定义为(X # Y) = 十进制整数X 的各位数字之和 * 十进制整数Y 的最大数字+Y 的最小数字 例如,(9 # 30)=9*3+0=27.对于给定的十进制X 和K,由X 和#运算可以组成各种不同的表达式.试设计一个算法,计算由X 和#运算组成的值为k 的表达式最少需要用多少个#预算。
利用Java 实现所要求的算法,开发一个GUI 界面,接受两个数据X 和K, 然后在界面上输出需要#的个数。
刘全中 111.放行路线选择算法的设计与实现设有n 个城市(或者景点),今从某市出发遍历各城市,使之旅费最少(即找出一条旅费最小的路径)输入:各城市间的旅费表有输入文件提供 输出:旅费最少的一条路径及总费用。
利用Java, C 实现所要求的算法。
时间充分,设计一个图形化界面,读入文件后把N 个城市的带权(花费)显示在界面上,经过求解后把旅费最小的路径求出来,并显示在界面上刘全中 112.N色方柱问题设有n个立方体,每个立方体的每一面用红、黄、蓝、绿等n种颜色之一染色。
要把这n个立方体叠成一个方形柱体,使得柱体的4个侧面的每一侧均有n种不同的颜色。
试设计一个回溯算法,计算出n个立方体的一种满足要求的叠置方案。
编程任务:对于给定的n个立方体以及每个立方体各面的颜色,计算出n个立方体的一种叠置方案,使得柱体的4个侧面的每一侧均有n中不同的颜色。
数据输入:由文件input.txt给出输入数据。
第1行有1个正整数n,0<n<27,表示给定的立方体个数和颜色均为n。
第2行是n个大写英文字母组成的字符串。
该字符串的第k()nk≤≤0个字符代表第k种颜色。
接下来的n行中,每行有6个数,表示立方体各面的颜色。
立方体各面的编号如图1所示:TL F R BD刘全中 150 2 1 34图1图1中F表示前面,B表示背面,L表示左面,R表示右面,T表示顶面,D表示底面。
相应地,2表示前面,3表示背面,0表示侧面,1表示右面,5表示顶面,4表示底面。
例如,在示例输出文件中,第3行的6个数0, 2 , 1, 3, 0, 0分别表示第1个立方体的左面的颜色为R,右面的颜色为B,前面的颜色为G,背面的颜色为Y,底面的颜色为R,顶面的颜色为R.结果输出:将计算的n个立方体的一种可行的叠置方案输出到文件output.txt。
每行6个字符,表示立方体个面的颜色。
如果不存在所要求的叠置方案,输出“No Solution”输入文件示例输出文件示例Input.txt output.txt4 RBGYRRRGBY YRBGRG0 2 1 3 0 0 BGRBGY3 0 2 1 0 1 GYYRBB2 1 0 2 1 31 3 3 02 213.N个自然数中r个数组合求解设计与实现找出n个自然数(1,2,3,…n)中r个数的组合。
输入n,和r,输出所有的组合数。
n个数中r的组合,其中每r个数中,数不能相同。
另外,任何两组组合的数,所包含的数也不应相同。
例如:当n=5,r=3时,所有组合为:5 4 3 ; 5 4 2 ;5 4 15 3 2 ; 4 3 2 ;4 2 13 2 1;total=10;分别用穷举搜索法、递归法、回溯法实现所要求的功能,并比较三者的时间复杂度刘全中 114.猜比赛名次问题的求解算法设计与实现五个学生A、B、C、D、E 参加某一项比赛。