大学算法分析与设计复习总结

大学算法分析与设计复习总结
大学算法分析与设计复习总结

大学算法分析与设计复习总结

第1章绪论

考点:

1、算法的5个重要特性。(P3)

答:输入、输出、有穷性、确定性、可行性

2、描述算法的四种方法分别是什么,有什么优缺点。(P4)

答:

1.自然语言优点:容易理解;缺点:容易出现二义性,并且算法都很冗长。

2.流程图优点:直观易懂;缺点:严密性不如程序语言,灵活性不如自然语言。

3.程序设计语言优点:用程序语言描述的算法能由计算机直接执行;缺点:抽象性差,是算法设计者拘泥于描述算法的具体细节,忽略了“好”算法和正确逻辑的重要性,此外,还要求算法设计者掌握程序设计语言及其编程技巧。

4.伪代码优点:表达能力强,抽象性强,容易理解

3、了解非递归算法的时间复杂性分析。(P13)

要点:对非递归算法时间复杂性的分析,关键是建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。

非递归算法分析的一般步骤是:

(1)决定用哪个(或哪些)参数作为算法问题规模的度量。

(2)找出算法的基本语句。

(3)检查基本语句的执行次数是否只依赖问题规模。

(4)建立基本语句执行次数的求和表达式。

(5)用渐进符号表示这个求和表达式。

[例1.4]:求数组最小值算法

int ArrayMin(int a[ ], int n)

{

min=a[0];

for (i=1; i

if (a[i]

return min;

}

问题规模:n

基本语句: a[i]

T(n)= n-1=O(n)

4、掌握扩展递归技术和通用分治递推式的使用。(P15)扩展递归技术:

通用分支递归式:

使用扩展递归技术求解下列递推关系式(1)

(2)

第2章分治法

了解分治法的设计思想

设计思想:将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。

步骤:(1)划分(2)求解子问题(3)合并

分治法的代表算法及时间复杂度:

归并排序,快速排序,最大子段和,最近对问题,凸包问题,这五种问题的分治算法的时间复杂度为O(nlog2n)

棋盘覆盖,循环赛日程安排为O(4k)

掌握归并排序和快速排序算法的算法伪代码。(P78-83)

归并排序:

算法中数组r中存储原始数据,r1在中间过程中存储排序后的数据,s指需排序数组的起始下标,t指需排序数组的结束下标。最终排序后的数据依然存储在r数组中。

快速排序:

掌握最大子段和问题的算法伪代码。(P83-85)

对于待排序列(5, 3, 1, 9, 8, 2, 4, 7),画出快速排序的递归运行轨迹。按升序排列

初始序列:5,3,1,9,8,2,4,7

第一次划分:4,3,1,2,5,8,9,7

第二次划分:2,3,1,4,5,8,9,7

第三次划分:1,2,3,4,5,8,9,7

第四次划分:1,2,3,4,5,7,8,9

排序完成,红色字体为每次划分的轴值

在有序序列9(r1,r2,```, rn)中,存在序号i ( 1<=i<=n),使得ri = i, 请设计一个分治算法找到这个元素,要求算法在最坏情况下的时间性能为O(log2n).

参考代码:

#include

int findr(ints[],int begin,int end)

{

if(begin==end){

if(s[begin]==begin) return begin;

else return 0;

}else

{

int m=(begin+end)/2;

if(s[m]>m) return findr(s,begin,m-1);

else if (s[m]==m)return m;

else return findr(s,m+1,end);

}

}

void main()

{

int s[]={0,1,1,2,4,6,8};

cout<

}

掌握选择问题的算法的伪代码(P33)

第3章动态规划法

了解动态规划法的设计思想

设计思想:将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解。

步骤:

将原始问题分解为相互重叠的子问题,确定动态规划函数;

求解子问题,填表;

根据表,自底向上计算出原问题的解。

掌握可以用动态规划法解决的问题及时间复杂度:

TSP,多段图的最短路径问题,0/1背包,最长公共子序列问题,最优二叉查找树,近似串匹配问题;

多段图的最短路径问题: O(n+m)

0/1背包问题: O(n×C)

矩阵连乘:

掌握0/1背包问题的动态规划算法及具体实现(P75)

例题:用动态规划法求如下0/1背包问题的最优解:有5个物品,其重量分别为(3,2,1,4,5),物品的价值分别为(25,20,15,40, 50),背包容量为6。写出求解过程。

0/1背包问题的动态规划函数为:

V(i,j)表示把前i个物品放入容量为j的背包中的最大价值和。

填表过程:

放入背包中的物品的求解过程:则65表示把5个物品放入容量为6的背包中的最大价值和。i=5,j=6; v[5][6]>v[4][6],x[5]=1, j=6-w[5]=1

i=4,j=1; v[4][1]=v[3][1], x[4]=0

i=3,j=1; v[3][1]>v[2][1], x[3]=1, j=1-w[3]=0

i=2,j=0; v[2][1]=v[1][0], x[2]=0

i=1,j=0; v[1][0]=v[0][0], x[1]=0

结果是把第3个和第5个放入了背包

掌握最长公共子序列问题的动态规划法算法及具体实现(P58)

求X=“xzyzzyx”和Y=“zxyyzxz”序列的最长公共子序列的动态规划函数为:

L[i][j]表示X中前i个元素和Y中前j个元素构成的序列的最长公共子序列的长度。

为了确定具体的最长公共子序列,需要同时计算S[i][j]的值,S[i][j]表示在计算L[i][j]的过程中的搜索状态。

子序列为斜箭头所标示的行或列:X[2],X[3],X[6] ,X[7]或Y[1], Y[3], Y[4] , Y[6]最长公共子序列的长度为4

即为:zyyx

流水作业调度:

最优二叉搜索树:

第3章贪心法

了解贪心法的设计思想

贪心法在解决问题的策略上目光短浅,只根据当前已有的信息就做出局部最优选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。

贪心法的关键在于决定贪心策略。

掌握可以用贪心法解决的问题:

TSP问题中的两种解决方法:最近领点策略,最短链接策略

最小生成树问题的两种算法:最近顶点策略(Prim算法),最短边策略(Kruskal算法)背包问题,活动安排问题,多机调度问题,哈夫曼编码。

掌握最小生成树的两种贪心算法:prim算法和kruskal算法(P100-102),给出具体的例子,能够用两种方法画出树的生成过程。

掌握背包问题的贪心算法

问题:求如下背包问题的最优解:有7个物品,价值P=(10,5,15,7,6,18,3),重量

w=(2,3,5,7,1,4,1),背包容量W=15.

解决方法:

先对物品的单位重量价值按照降序排列

物品重量物品价值物品价值/物品重量

166

2105

418 4.5

5153

133

35 1.67

771

依次把物品放入容量为15的背包,直到背包被装满

1+2+4+5+1=13,前5个物品装入背包,还剩下容量为2,第6个物品只能装入2/3

所以总价值为:6+10+18+15+3+5*2/3=55.3333

给出字符集和对应的频率,能够画出对应的哈夫曼树,并对给定的字符串进行哈夫曼编码。(P92)

活动安排:

最优装载:

第8章回溯法

了解回溯法的设计思想

设计思想:从解空间树根结点出发,按照深度优先策略遍历解空间树,在搜索至树中任一结点时,先判断该结点对应的部分解是否满足约束条件,或者是否超出目标函数的界,也就是判断该结点是否包含问题的(最优)解,如果肯定不包含,则跳过对以该结点为根的子树的搜索,即所谓剪枝(Pruning);否则,进入以该结点为根的子树,继续按照深度优先策略搜索。直到搜索到叶子结点,则得到问题的一个可能解。

步骤:

确定解向量和分量的取值范围,构造解空间树;

确定剪枝函数;

对解空间树按深度优先搜索,搜索过程中剪枝;

从所有的可能解中确定最优解。

了解可以用回溯法解决的问题:

属于组合问题和排列问题中求最优解的问题都可以用回溯法解决,例如:图着色问题,哈密顿回路问题,八皇后问题(4皇后问题),批处理作业调度问题。

掌握m颜色图着色判定问题的回溯法算法,并能画出解空间树的搜索过程(P168-170),习题8-4

对图8.14使用回溯法求解图问题,画出生成的搜索空间。

解:图着色问题求解的是满足图着色要求的最小颜色数。对图8.14应该从1、2、3、4……种颜色依次尝试用回溯法判定是否满足M着色的要求。

经搜索,1种和2种颜色均不能满足图着色的要求,3种颜色可以满足图着色要求,搜索过程如下,所以图8.14的着色的最少颜色数应该为3

搜索空间为:

掌握n皇后问题的回溯法算法,并能画出解空间树的搜索过程(P173-174),

自己看书

掌握0/1背包问题的回溯算法,并能画出解空间树的搜索过程(P163-164),习题8-5

自己看书

第9章分治限界法

了解分支限界法的设计思想

设计思想:

1)首先确定一个合理的限界函数,并根据限界函数确定目标函数的界[down, up] ,并确定限界函数;

2)然后按照广度优先策略遍历问题的解空间树,在分支结点上,依次搜索该结点的所有孩子结点,分别估算这些孩子结点的限界函数的可能取值;

3)如果某孩子结点的限界函数可能取得的值超出目标函数的界,则将其丢弃;否则,将其加入待处理结点表(以下简称表PT)中;

4)依次从表PT中选取使限界函数的值是极值的结点成为当前扩展结点;

5)重复上述过程,直到找到搜索到叶子结点,如果叶子结点的限界函数的值是极值,则就是问题的最优解,否则,找到其他极值结点重复扩展搜索。

步骤:

确定解空间树

确定限界函数

按广度优先搜索解空间树,计算限界函数的值,填入PT表

从PT表中寻找极值,继续扩展结点,直到找到限界函数值为极值的叶子结点。

了解可以使用分支限界法解决的问题:

TSP问题,多段图的最短路径问题,任务分配问题,批处理作业调度问题,0/1背包问题。掌握任务分配问题的分支限界法(P195-197),习题9-5

掌握0/1背包问题的分支限界法(P184-185),习题9-6

掌握批处理作业问题的分支限界法(P198-200),习题9-7

算法分析与设计复习题及参考答案

中南大学网络教育课程考试复习题及参考答案 算法分析与设计 一、名词解释: 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。 3.已知1() *() i i k k ij r r A a +=,k =1,2,3,4,5,6,r 1=5,r 2=10,r 3=3,r 4=12,r 5=5,r 6=50,r 7=6,求矩阵链积A 1×A 2×A 3×A 4×A 5×A 6的最佳求积顺序(要求给出计算步骤)。 4.根据分枝限界算法基本过程,求解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 的最短路径。

算法分析与设计复习题及参考答案

网络教育课程考试复习题及参考答案算法分析与设计一、名词解释: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的最短路径。be2g212ad323182cf2h 8.试写出用分治法对数组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.

算法设计与分析考试题及答案

算法设计与分析考试题 及答案 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性 有穷性 可行性 0个或多个输入 一个或多个输出 2.算法的复杂性有时间复杂性 空间复杂性之分,衡量一个算法好坏的标准是 时间复杂度高低 3.某一问题可用动态规划算法求解的显着特征是 该问题具有最优子结构性质 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y 的一个最长公共子序列{BABCD}或{CABCD}或{CADCD } 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解 6.动态规划算法的基本思想是将待求解问题分解成若干_子问题 ,先求解_子问题 ,然后从这些子问题 的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法 背包问题的回溯算法所需的计算时间为o(n*2n ) ,用动态规划算法所需的计算时间为o(min{nc,2n }) 9.动态规划算法的两个基本要素是最优子结构 _和重叠子问题 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;②构造最优值的递归关系表达式; ③最优值的算法描述;④构造最优解; 2. 流水作业调度问题的johnson 算法的思想。 ①令N 1={i|a i =b i };②将N 1中作业按a i 的非减序排序得到N 1’,将N 2中作业按b i 的非增序排序得到N 2’;③N 1’中作业接N 2’中作业就构成了满足Johnson 法则的最优调度。 3. 若n=4,在机器M1和M2上加工作业i 所需的时间分别为a i 和b i ,且 (a 1,a 2,a 3,a 4)=(4,5,12,10),(b 1,b 2,b 3,b 4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N 1’={1,3}, N 2’={4,2}; 最优值为:38 4. 使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为: 该问题的最优值为:16 最优解为:(1,1,0) 5. 设S={X 1,X 2,···,X n }是严格递增的有序集,利用二叉树的结点来存储S 中的元素,在表示S 的二叉搜索树中搜索一个元素X ,返回的结果有两种情形,(1)在二叉搜索树的内结点中找到X=X i ,其概率为b i 。(2)在二叉搜索树的叶结点中确定X ∈(X i ,X i+1),其概率为a i 。在表示S 的二叉搜索树T 中,设存储元素X i 的结点深度为C i ;叶结点(X i ,X i+1)的结点深度为d i ,则二叉搜索树T 的平均路长p 为多少假设二叉搜索树T[i][j]={X i ,X i+1,···,X j }最优值为m[i][j],W[i][j]= a i-1+b i +···+b j +a j ,则m[i][j](1<=i<=j<=n)递归关系表达式为什么 .二叉树T 的平均路长P=∑=+n i 1 Ci)(1*bi +∑=n j 0 dj *aj

课程设计个人总结

课程设计个人总结 我们完成了为期两周的课程设计,通过这次课程设计我深深体会到,在已度过的大学时间里,我们大多数接触的是专业课.我们在课堂上掌握的仅仅是专业课的理论知识, 如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 虽然在大三开学初我对这门课并没有什么兴趣, 觉得那些程序枯燥乏味, 但在这次课程设计后我发现自己在一点一滴的努力中对它的兴趣也在逐步的增加。我们有四位同学一起合作,我们默契的配合使我们组第一个完成了我们的设计,而且设计达到了我们预期的效果。这次课程设计对我来说学到的不仅是那些知识,更多的是团队和合作。现在想来,也许学校安排的课程设计有着它更深层的意义吧, 它不仅仅让我们综合那些理论知识来运用到设计和创新中, 还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能巨大力量!两周来我们一起找资料,选方案,再选方案是大家意见不统一然后我们一起上网进行查阅敲定方案后进行仿真,焊接调试程序,最后我们的篮球电子裁判器设计成功完成。两个星期后的今天我已明白课程设计对我来说的意义, 它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,使得我们这次比别的同学节省了时间,。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。设计过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。 在这学期的课程设计中,不仅培养了我们的独立思考、动手操作的能力,在各个其它能力上也都有了提高。更重要的是,在课程设计中,我们学会了很多学习的方法,而这是今后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们在完成这次课程设计后变的更加成熟,能够面对需要面对的事情 ---吴丽娜

《算法分析与设计》期末复习题[1]

一、选择题 1.一个.java文件中可以有()个public类。 A.一个B.两个C.多个D.零个 2.一个算法应该是() A.程序B.问题求解步骤的描述 C.要满足五个基本特性D.A和C 3.用计算机无法解决“打印所有素数”的问题,其原因是解决该问题的算法违背了算法特征中的()A.唯一性B.有穷性C.有0个或多个输入D.有输出 4.某校有6位学生参加学生会主席竞选,得票数依次为130,20,98,15,67,3。若采用冒泡排序算法对其进行排序,则完成第二遍时的结果是() A.3,15,130,20,98,67B.3,15,20,130,98,67 C.3,15,20,67,130,98 D.3,15,20,67,98,130 5.下列关于算法的描述,正确的是() A.一个算法的执行步骤可以是无限的B.一个完整的算法必须有输出 C.算法只能用流程图表示D.一个完整的算法至少有一个输入 6.Java Application源程序的主类是指包含有()方法的类。 A、main方法 B、toString方法 C、init方法 D、actionPerfromed方法 7.找出满足各位数字之和等于5的所有三位数可采用的算法思路是() A.分治法B.减治法C.蛮力法D.变治法 8.在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( )语句。 A、import java.awt.* ; B、import java.applet.Applet ; C、import java.io.* ; D、import java.awt.Graphics ; 9.计算某球队平均年龄的部分算法流程图如图所示,其中:c用来记录已输入球员的人数,sum用来计算有效数据之和,d用来存储从键盘输入的球员年龄值,输入0时表示输入结束。

算法设计与分析复习题目及答案

一。选择题 1、二分搜索算法是利用( A )实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 2、下列不是动态规划算法基本步骤的是( B )。 A、找出最优解的性质 B、构造最优解 C、算出最优解 D、定义最优解 3、最大效益优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 4、在下列算法中有时找不到问题解的是( B )。 A、蒙特卡罗算法 B、拉斯维加斯算法 C、舍伍德算法 D、数值概率算法 5. 回溯法解旅行售货员问题时的解空间树是( B )。 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、下列随机算法中运行时有时候成功有时候失败的是(C ) A 数值概率算法 B 舍伍德算法 C 拉斯维加斯算法 D 蒙特卡罗算法 11.下面不是分支界限法搜索方式的是( D )。 A、广度优先 B、最小耗费优先 C、最大效益优先 D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 13.备忘录方法是那种算法的变形。( B )

算法设计与分析考试题及答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。 2.算法的复杂性有_____________和___________之分,衡量一个算法 好坏的标准是______________________。 3.某一问题可用动态规划算法求解的显著特征是 ____________________________________。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。 6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为_____________。 8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。 9.动态规划算法的两个基本要素是___________和___________。 10.二分搜索算法是利用_______________实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 2.流水作业调度问题的johnson算法的思想。

大学生课程设计心得体会范文

( 心得体会 ) 单位:_________________________ 姓名:_________________________ 日期:_________________________ 精品文档 / Word文档 / 文字可改 大学生课程设计心得体会范文College Students' experience in curriculum design

大学生课程设计心得体会范文 大学生课程设计心得体会 时光匆匆而过,一周转瞬即逝。在过去的这一周时间里面,原本以为会比较轻松的设计任务却让我觉得有点措手不及。虽然困难重重,但是在遇到的各种各样的问题中,我学会了耐心,学会了坚持,也学会了以前掌握得不太牢固的数电和模电知识。收获颇丰。 在这次电子课程设计中,我们小组的设计题目是汽车尾灯控制。在设计中我们使用了基本的芯片:双向移位寄74LS194,二输入与非门74LS00、四输入与非门74LS20、六反相器74LS04、3-8译码器,555定时器及电阻电容进行搭建。设计的时候并不是特别顺利,芯片的选择和电路的接法对于我这样从来没有实际操作过的学生还是有一定的难度的。经过我们大家集体的讨论过后,我们还是把最终的电路图拿出来了。这让我充分体会到团队的力量,团结才能让大家

把事情干好。一个人的力量始终太渺小,集思广益才能让我们进步得更快,让我们学到更多的知识。 最让我头疼的是在实际操作的过程中,我们经常会因为一个小的失误,比如线接错了,有些地方的线没有接上等等问题而让实验板上的灯无法亮起来。这些都是让我始料不及的。由于不细心的地方太多,当时甚至有过要放弃的念头。但是我坚持了下来,当最终看到成果的时候,我觉得这一切都是值得的。记得汪中求说过细节决定成败。以前感触不深,没有注意太多的细节,总是抱着差不多就行了或者放纵自己的心态来面对生活学习中的许多问题。但是我现在明白了,这是不对的。对于科学我们就应该保持严谨的态度。课程设计中的许多细节都没有注意,老是求快,想早点完成设计和连接实验板的工作,但是这反而导致了很多次的失败。好在最终摆正了心态,细心检查之后,最终完成了连线。 我从这次的设计中还感受到坚持的重要性。做事情不能轻言谈放弃,虽然过程不顺利,与想象中相去甚远。但是只要我们能坚持,朝着自己既定的目标前进,就一定会走到终点。一点小小的挫折实

算法分析与设计考试复习题及参考答案jing

一、简答题: 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]

(完整版)算法设计与分析期末考试卷及答案a

一.填空题(每空 2 分,共30分) 1.算法的时间复杂性指算法中的执行次数。 2.在忽略常数因子的情况下,O、和三个符号中,提供了算法运行时间的一个上界。 3.设D n表示大小为n的输入集合,t(I)表示输入为I时算法的运算时间, p(I)表示输入 I 出现的概率,则算法的平均情况下时间复杂性A(n)= 。 4.分治算法的时间复杂性常常满足如下形式的递归方程: f (n) d , n n0 f(n) af(n/c) g(n) , n n0 其中,g(n)表示。 5. 分治算法的基本步骤包括。6.回溯算法的基本思想是。 7.动态规划和分治法在分解子问题方面的不同点是。 8.贪心算法中每次做出的贪心选择都是最优选择。 9.PQ 式的分支限界法中,对于活结点表中的结点,其下界函数值越小,优先级 10.选择排序、插入排序和归并排序算法中,算法是分治算法。 11.随机算法的一个基本特征是对于同一组输入,不同的运行可能得到的结果。12. 对于下面的确定性快速排序算法,只要在步骤3 前加入随机 化步骤,就可得到一个随机化快速排序算法,该随机化步骤的功能是。 算法QUICKSORT 输入:n 个元素的数组A[1..n] 。 输出:按非降序排列的数组 A 中的元素

1. quicksort(1, n) end QUICKSORT _ _ 过程 quicksort(A, low, high) _ _ // 对 A[low..high] 中的元素按非降序排序。 _ 号 学 2. if low

大学算法分析与设计复习总结

大学算法分析与设计复习总结 为了拿大学的那悲剧的学分,好好弄懂以下所有知识点吧。把老师的复习的提纲,特意汇总了所有考点,方便童鞋们复习。不喜勿喷!!! 这本书是《算法设计与分析》王红梅编著 一共有以下12章,我们学了1、3、4、5、6、7、8、9 分别是“绪论、蛮力法、分治法、减治法、动态规划法、贪心法、回溯法、分治限界法 第1章绪论 考点: 1、算法的5个重要特性。(P3) 答:输入、输出、有穷性、确定性、可行性 2、描述算法的四种方法分别是什么,有什么优缺点。(P4) 答: 1. 自然语言优点:容易理解;缺点:容易出现二义性,并且算法都很冗长。 2. 流程图优点:直观易懂;缺点:严密性不如程序语言,灵活性不如自然语言。 3. 程序设计语言优点:用程序语言描述的算法能由计算机直接执行;缺点:抽象性差,是算法设计者拘泥于描述算法的具体细节,忽略了“好”算法和正确逻辑的重要性,此外,还要求算法设计者掌握程序设计语言及其编程技巧。 伪代码优点:表达能力强,抽象性强,容易理解 3、了解非递归算法的时间复杂性分析。(P13) 要点:对非递归算法时间复杂性的分析,关键是建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。 非递归算法分析的一般步骤是: (1)决定用哪个(或哪些)参数作为算法问题规模的度量。 (2)找出算法的基本语句。 (3)检查基本语句的执行次数是否只依赖问题规模。

(4)建立基本语句执行次数的求和表达式。 (5)用渐进符号表示这个求和表达式。 [例1.4]:求数组最小值算法 int ArrayMin(int a[ ], int n) { min=a[0]; for (i=1; i

大学生课程设计心得体会范文(标准版)

编号:YB-TH-0172 ( 心得体会) 部门:_____________________ 姓名:_____________________ 日期:_____________________ WORD文档/ A4打印/ 可编辑 大学生课程设计心得体会范文 (标准版) Being good at summarizing can enable you to choose the most reasonable ability to handle affairs when encountering the same or similar problems.

大学生课程设计心得体会范文(标准 版) 心得体会作用:善于总结可以使你在遇到相同或类似问题的时候可以选择最合理的处理事务能力,可以锻炼 你的逻辑思考能力,和判断能力。一个善于总结的人是很少会犯错误。本内容可以放心修改调整或直接使用。 大学生课程设计心得体会 时光匆匆而过,一周转瞬即逝。在过去的这一周时间里面,原本以为会比较轻松的设计任务却让我觉得有点措手不及。虽然困难重重,但是在遇到的各种各样的问题中,我学会了耐心,学会了坚持,也学会了以前掌握得不太牢固的数电和模电知识。收获颇丰。 在这次电子课程设计中,我们小组的设计题目是汽车尾灯控制。在设计中我们使用了基本的芯片:双向移位寄74LS194,二输入与非门74LS00、四输入与非门74LS20、六反相器74LS04、3-8译码器,555定时器及电阻电容进行搭建。设计的时候并不是特别顺利,芯片的选择和电路的接法对于我这样从来没有实际操作过的学生还是有一定的难度的。经过我们大家集体的讨论过后,我们还是把最

算法分析与设计复习题及答案

算法分析与设计复习题及答案一、单选题 1.D 2.B 3.C 4.D 5.D 6.D 7.C 8.D 9.B 10.C 11.D 12.B 13.D 14.C 15.C 16.D 17.D 18.D 19.D 20.C 1.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 2.根据执行算法的计算机指令体系结构,算法可以分为()。 A精确算法与近似算法B串行算法语并行算法 C稳定算法与不稳定算法D32位算法与64位算法 3.具有10个节点的完全二叉树的高度是()。 A6B5C3D 2 4.下列函数关系随着输入量增大增加最快的是()。 Alog2n B n2 C 2n D n! 5.下列程序段的S执行的次数为( )。 for i ←0 to n-1 do for j ←0 to i-1 do s //某种基本操作 A.n2 B n2/2 C n*(n+1) D n(n+1)/2 6.Fibonacci数列的第十项为( )。 A 3 B 13 C 21 D 34 7.4个盘子的汉诺塔,至少要执行移动操作的次数为( )。 A 11次 B 13次 C 15次 D 17次 8.下列序列不是堆的是()。 A 99,85,98,77,80,60,82,40,22,10,66 B 99,98,85,82,80,77,66,60,40,22,10 C 10,22,40,60,66,77,80,82,85,98,99 D 99,85,40,77,80,60,66,98,82,10,22 9.Strassen矩阵乘法的算法复杂度为()。 AΘ(n3)BΘ(n2.807) CΘ(n2) DΘ(n) 10.集合A的幂集是()。 A.A中所有元素的集合 B. A的子集合 C. A 的所有子集合的集合 D. 空集 11.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 12.从排序过程是否完全在内存中显示,排序问题可以分为()。 A稳定排序与不稳定排序B内排序与外排序 C直接排序与间接排序D主排序与辅助排序 13.下列()不是衡量算法的标准。 A时间效率B空间效率 C问题难度D适应能力 14.对于根树,出度为零的节点为()。 A0节点B根节点C叶节点D分支节点 15.对完全二叉树自顶向下,从左向右给节点编号,节点编号为10的父节点编号为()。 A0B2C4D6 16.下列程序段的算法时间的复杂度为()。 for i ←0 to n do for j ←0 to m do

Java课程设计总结报告

闽南师范大学计算机学院 Java课程设计总结报告 学生学号1308190112 姓名陈志毅 专业软件工程班级13软件1班 所属学期2014 -2015 学年第 2 学期 一、项目开发总结报告 (注:内容请参考教材:《Java应用开发与实践》,人民邮电出版社,刘乃琦,苏畅主编此书中第20章或21章或22章课程设计报告的写法。) 小乖酒店管理系统 1.需求分析 (1)登录系统: 登录系统可以防止非法用户使用系统。只有输入合法用户才能登录。 (2)添加入住信息: 用户进入之后菜单栏中“添加入住信息”添加入住人员信息; (3)修改入住信息: 用户进入之后菜单栏中“修改入住信息”修改入住人员信息; (4)查看入住信息: 用户进入之后菜单栏中“查看入住信息”查看入住人员信息; (5)添加用户: 进入系统后可以添加新的管理员的账号和密码 (6)修改密码: 为了提高系统安全新可以修改管理员密码。 2.总体设计 (1)构建开发环境:操作系统win7,开发语言 java,后台数据库SQL2008 (SQL Server Management Studio),开发软件:eclipse。 (2)系统功能结构图

3.数据库设计如图 1.数据库存储入住人信息 2.数据库登陆账号密码 4.公共类设计 (1)公共类用于加载数据库驱动package xg.dao; import java.sql.Connection; import java.sql.DriverManager;

import javax.swing.JOptionPane; public class DAO { @SuppressWarnings("unused") private static DAO dao = new DAO(); /** * 构造方法,加载数据库驱动 */ public DAO() { try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); } catch (ClassNotFoundException e) { JOptionPane.showMessageDialog(null, "数据库驱动加载失败,请将JTDS驱动配置到构建路径中。\n" + e.getMessage()); } } /** * 获得数据库连接的方法 * * @return Connection */ public static Connection getConn() { try { Connection conn = null; String url = "jdbc:jtds:sqlserver://localhost:1433/XG"; // 数据库XG路径 String username = "sa"; // 数据库的用户名 String password = "123456"; // 数据库密码 conn = DriverManager.getConnection(url, username, password); // 建立连接 return conn; } catch (Exception e) { JOptionPane.showMessageDialog(null, "数据库连接失败。\n请检查数据库用户名和密码是否正确。" + e.getMessage()); return null; } } } 5.程序主要系统开发 (1)系统登录界面 登录系统在绘制背景前先获取该图片用getImage()方法获得image类型的对象,然后获取ImagIcon类型对象,用该构造方法传递URL参数。 主要函数超累构造方法:

算法设计与分析要点复习

算法设计与分析要点复习: 一、基本概念 1、什么是算法?算法是求解一类问题的人以一种特殊的方法。一个算法是对特 定问题求解步骤的一种描述,它是指令的有限序列。 2、算法有那些特性?输入、输出、确定性、能行性、有穷性。 3、评估一个算法的指标有那些(或者说分析一个算法的优劣主要考虑的因素)? 正确性、简明性、效率、最优性。 4、算法运行的时间代价的度量不应依赖于算法运行的软件平台,算法运行的软 件包括操作系统和采用的编程语言及其编译系统。时间代价用执行基本操作(即关键操作)的次数来度量,这是进行算法分析的基础。 5、基本操作(即关键操作)是指算法运行中起主要作用且花费最多时间的操作。 6、基本操作是个概念,无法具体定义。问题的实例长度是指作为该问题的一个 实例的输入规模的大小。这个概念也很难精确定义。算法的时间(或)空间复杂度是由问题实例长度的函数来表示的。即:一个算法的时间代价由该算法用于问题长度为n的实例所需要的基本操作次数来表示。 7、算法的时间复杂度、空间复杂度。T(n)、S(n) 8、在实际的算法中T(n)是否唯一?不唯一。可能有最好、最坏、平均情形的时 间复杂度。 9、算法与程序的区别? 10、算法按计算时间可分为两类:多项式是时间算法、指数时间算法。最常 见的多项式时间算法的渐进时间复杂度之间的关系为:O(1)

14、简述分治法是怎样的一种算法设计策略。 15、二分查找算法的实现前提? 16、为什么要对二叉排序树进行平衡操作? 17、什么是平衡因子?什么是二叉平衡树?二叉平衡树对平衡因子的取值有 什么要求? 18、最优化问题:是指对于某类问题,给定某些约束条件,满足这些约束条 件的问题解称为可行解。为衡量可行解的好坏,还给出了称为目标函数的某个数值函数,使目标函数取的最大(或最小)值的可行解称为最优解。19、贪心算法总是做出在当前看来是最好的选择。也就是说贪心算法并不从 整体最优上加以考虑,它所作出的选择只是在某种意义上的局部最优选择,即使贪心算法不能得到整体最优解,但其最终结果也是最优解的很好的近似解。 20、贪心选择的基本要素:贪心选择性质、最优子结构性质 21、动态规划算法的基本要素:最优子结构性质、子问题重叠性质。 22、动态规划算法与分治法、贪心法比较有何特点? 23、比较回溯算法、分枝限界算法。

算法设计与分析基础课后习题答案

Program算法设计与分析基础中文版答案 习题 5..证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立. Hint: 根据除法的定义不难证明: 如果d整除u和v, 那么d一定能整除u±v; 如果d整除u,那么d也能够整除u的任何整数倍ku. 对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n。 数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。故gcd(m,n)=gcd(n,r) 6.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次? Hint: 对于任何形如0<=m

设sqrt(x)是求平方根的函数) 算法Quadratic(a,b,c) 描述将十进制整数表达为二进制整数的标准算法 a.用文字描述 b.用伪代码描述 解答: a.将十进制整数转换为二进制整数的算法 输入:一个正整数n 输出:正整数n相应的二进制数 第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n 第二步:如果n=0,则到第三步,否则重复第一步 第三步:将Ki按照i从高到低的顺序输出 b.伪代码 算法 DectoBin(n) .n]中 i=1 while n!=0 do { Bin[i]=n%2; n=(int)n/2; i++; } while i!=0 do{ print Bin[i]; i--; } 9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.(算法略)对这个算法做尽可能多的改进. 算法 MinDistance(A[0..n-1])

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案 一、简要回答下列问题: 1.算法重要特性是什么? 1.确定性、可行性、输入、输出、有穷性 2. 2.算法分析的目的是什么? 2.分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。 3. 3.算法的时间复杂性与问题的什么因素相关? 3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。 4.算法的渐进时间复杂性的含义? 4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。 5.最坏情况下的时间复杂性和平均时间复杂性有什么不同? 5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的 算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度: W(n) = max{ T(n,I) } , I∈Dn 平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和: A(n) =∑P(I)T(n,I) I∈Dn 6.简述二分检索(折半查找)算法的基本过程。 6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较, 如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]

大学毕业生课程设计总结与展望

大学毕业生课程设计总结与展望 工作总结 珍贵的三年大学学习生活即将接近尾声,我们迎来了大学最后一个比较关键的课程——毕业设计,因为它是衡量每个大学生知识掌握程度的关键,而且是对前面所学知识的一种检验,更是对自己能力的一种提高.毕业设计是学校对我们在大学中所学知识的一个检验,它几乎包含了我们学习的全部专业知识.毕业设计工作做的好坏,直接体现了个人现阶段实力的强弱,我们必须拿出百分之百的热情,用心搞好毕业设计. 经过几个月的奋战我的毕业设计终于完成了.但是现在回想起来做毕业设计的整个过程,颇有心得,其中有苦也有甜,不过乐趣尽在其中! 接到任务书以后进行选题,选择方案,了解课题思路.刚刚拿到课题——《多路可寻址遥控开关系统设计》的时候觉得有点恍惚,当时我有一种想法:觉得这么高难度的东西凭我的实力要完成简直是不可能,题目确定后就是找资料,完成图纸初稿.资料是做毕业设计的前期准备工作,好的开端就相当于成功了一半,因此资料是否全面、可靠,关系到整个毕业设计的进程.总之,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用.在图书馆和百度搜

索中我查到了相关的资料和电路图,但是还是不太完善,后来又去找老师找到了相关的书籍. 通过前面几周不断搜索资料的过程中,我已经对所选的课题有了一定的了解,并且大概的设计思路已经确定了.于是和我们组的成员找到毕业设计指导老师周红兵老师,说明了我们对整个系统电路的设计与想法,指导老师给我们系统的设计思路讲述了在设计中需要注意的地方.经过老师的指导,我们的思路就越加清晰了,这不得不让我相信万事开头难的道理了,也坚定了我做毕业设计的信心.,这一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目,最后完成图纸初稿. 在本次设计的过程中,我发现很多的问题,给我的感觉就是很难很不顺手,看似很简单的电路,要动手把它给设计出来,是很难的一件事,特别是整个电路图的设计,同时,通过本次课程设计,巩固了我们学习过的专业知识,也使我们把理论与实践从真正意义上相结合起来;考验了我们借助互联网络搜集、查阅相关文献资料,和组织材料的综合能力;从中可以自我测验,认识到自己哪方面有欠缺、不足,以便于在日后的学习中得以改进、提高;这也使我明白要对以前学过的知识温故知新. 展望 通过这次毕业设计使我明白了自己原来知识还比较欠

相关文档
最新文档