算法设计和分析课程论文

算法设计和分析课程论文
算法设计和分析课程论文

理工学院课程论文

论文题目贪心法的应用

课程名称算法设计与分析

姓名学号

专业计算机科学与技术年级

学院计算机日期(2014年4月10日)

课程论文评价标准

贪心法的应用

摘要:在解决问题的过程中,通过逐步获得最优解从而获得整体最优解的策略就是贪心策略,在已经学会在解的围可以确定的情况下,可以采用枚举或递归策略,一一比较它们最后找到最优解;但当解的围非常大时,枚举和递归的效率会非常低。这时就可以考虑用贪心策略。贪心算法没有固定的框架,算法设计的关键是贪心策略的选择,贪心策略要具有无后向性,即某阶段状态一旦确定以后,不受这个状态以后的策略的影响。当一个问题有好几种解决方法时,贪心法应该是最好的选择之一。本文讲述了贪心算法的含义、基本思路以及贪心算法在实例中的应用。

关键词:贪心算法;删数问题;最小生成树

一、引言

在平时解决问题的过程中,当一个问题就有无后向性和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解。它所做的每一个选择都是当前状态下就有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化解为一个更小的与原问题具有相同形式的子问题。尽管贪心算法对于很多问题不能总是产生整体最优解,但对于最短路径、最小生成树问题,以及删数问题等却可以获得整体最优解,而且所给出的算法一般比动态规划算法更为简单、直观和高效。

二、贪心算法的含义和特点

(一)贪心算法的含义

贪心算法是通过一系列的选择来得到问题解的过程。贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最有的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。

(二)贪心算法的特点

1、从全局来看,运用贪心策略解决的问题在程序运行过程中无回溯过程,后面的每一步都是当前看似最佳的选择,这种选择依赖已作出的选择,但并不依赖未作出的选择。

2、不能保证最后求出的解是最佳的。由于贪心策略总是采用从局部看来是最优的选择,并不从整体上加以考虑。另外贪心算法只能用来求某些最大或最小解的问题,因为当遇到求解权值最小路径等问题采用贪心算法得到的结果并不是最佳。

二、贪心算法在实例中的应用

(一)删数问题

给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。

1、算法原理

从最高位开始,依次向低位搜索,一旦遇到前一位(高数)的数大于当前位,则删去前一位,直到删除k个数,如果到达末尾还没有删除k个,则说明现在这个数已经是从小到大排列了,则从最低位开始删除要求的位数。

2、过程分析

="12435863" k=3

4比3大删除"1235863"

8比6大删除"1243563"

6比3大删除"1243583"

只看这个实例,有可能归纳不出正确的算法,看下一个实例,再进一步解释。

n

2

="2 31183" k=3

3比1大删除"2 1183"

2比1大删除"1183"

8比3大删除"113"

由实例n

1,相邻数字只需从前向后比较;而从实例n

2

中可以看出当第i位与第i+1

位比较,若删除第i位后,必须向前考虑第i-1位与第i+1位进行比较,才能保真

结果的真确性。

(二)最小生成树

设G = (V, E)是一个无向连通带权图,即一个网络。E的每条边(v, w)的权为c[v][w]。如果G的一个子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。生成树的各边的权的总和称为该生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小(优)生成树。

1、算法原理

(1)Prim算法

基本思想:在保证连通的前提下依次选出权重较小的n – 1条边。

G=(V, E)为无向连通带权图,令V={1, 2, …, n}。设置一个集合S ,初始化S = {1},T = Φ。

贪心策略:如果V–S中的顶点j与S中的某个点i连接且(i, j)是E中的权重最小的边,于是就选择j(将j加入S),并将(i, j) 加入T中。重复执行贪心策略,直至V–S为空。

(2)Kruskal算法

基本思想:在保证无回路的前提下依次选出权重较小的n – 1条边。

贪心策略:如果(i, j)是E未被选中的边中权重最小的,并且(i, j)不会与已经选择的边构成回路,于是就选择 (i, j)。若边(i, j) 的两个端点i和j属于同一个连通分支,则选择(i, j) 会造成回路,反之则不会造成回路。因此初始时将图的n个顶点看成n个孤立分支。

(3)两种算法的异同

两种算法不同之处在于,Prim算法是在在保证连通的前提下依次选出权重较小的n – 1条边。而Kruskal算法在保证无回路的前提下依次选出权重较小的n – 1条边。两种算法的相同之处在于都是在各自的前提条件下采取依次取出权值最小n-1条边的贪心策略。

2、分析过程

(1)Prim算法

给定一个联通带权图如下:

初始时S={1},T= Φ;

第一次选择:(1,3)权最小, S={1,3}, T= {(1,3)} ;

第二次选择:(3,6)权最小, S={1,3,6}, T= {(1,3)(3,6)} ;

第三次选择:(4,6)权最小, S={1,3,6,4}, T= {(1,3)(3,6)(6,4)} ;

第四次选择:(2, 3)权最小, S={1,3,6,4,2}, T= {(1,3)(3,6)(6,4)(2,3)} ;第五次选择:(2,5)权最小, S={1,3,6,4,2,5}, T= {(1,3)(3,6)(6,4)(2,3)(2,5)} ;

(2)Kruskal算法

给定一个联通带权图如下:

初始时为六个孤立的点,选择了1,于是1、3点合并为同一个集合;选择了2,于是4、6点合并为同一个集合;选择了3,于是2、5点合并为同一个集合;选择了4,于是1、3、4、6点合并为同一个集合;考察边5,因为1、4为同一集合,故

被放弃;选择了6,于是1、3、4、6、2、5点合并为同一个集合;选择了1,于是1、3点合并为同一个集合;

已经选择边了n–1条边,算法结束。结果如图所示:

3、算法设计

(1)Prim算法

Prim(int n, Type **c) {

int j = 1; s[j] = true;

//初始化将节点1放入s并初始化closest[]和lowcost[]

for (int i = 2; i <= n; i++)

{

closest[i] = 1; lowcost[i]=c[1][i]; s[i]=false;

}

for (int i = 1; i < n; i++) { / /执行以下操作n-1次

min= inf;

for (int k = 2; k <= n; k++) {

//依据lowcost[]找出与s最近的点j并放入S

if (lowcost[k]

{min = lowcost[k]; j = k}

计算机算法与设计论文

中国传媒大学2011 学年第一学期计算机算法设计与分析课程 计算机算法设计与分析 题目回溯法解决n色方柱问题的算法设计与分析 学生姓名 学号 班级 学院 任课教师

回溯法解决n色方柱问题的算法设计与分析 摘要: 对于计算机科学来说,算法(Algorithm)的概念是至关重要的。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。为了充分理解算法分析的思想,利用算法思想解决实际问题,所以用回溯法解决书上P181习题5—7 n色方柱问题。 关键字: 计算机算法回溯法 n色方柱 回溯法背景: 回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。扩大当前候选解的规模,以继续试探的过程称为向前试探。 回溯法的基本思想:确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。换句话说,这个结点不再是一个活结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已没有活结点时为止。 1、问题描述: 设有n立方体,每个立方体的每个面用红、黄、蓝、绿等n种颜色之一染色。要把这n个立方体叠成一个方形柱体,使得柱体的4个侧面的每一侧均有n种不同的颜色。试设计一个回溯算法,计算出n个立方体的一种满足要求的叠置方案。 例如:第一行有1个正整数n,0

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

算法设计与分析考试题 及答案 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

现代设计方法论文

武汉轻工大学 《现代设计方法》课程结业论文题目:现代设计方法在汽车设计中的应用 姓名 学号 班级 专业 院(系) 2017 年5月21 日

现代设计方法在汽车设计中的应用 宋家鹏 (武汉轻工大学机械工程学院,湖北武汉430070) 摘要:本文在分析汽丰设计方法发展的基础上,重点介绍了汽车设计中有待进一步推广应用的几种现代设计方法和技术。 关键词:现代设计方法;系统工程;模糊分析设计;计算机辅助设计(CAD) 0 引言 现代科学技术的发展对汽车的性能、可靠性、经济性等提出更高的要求同时也为汽车的设计、制造提供了改进和创新的设计方法。据统计,一般汽车的质量和性能有60%-70%取决于汽车设计。因此,在设计新产品时应研究和采用新的设计方法和技术,以适应现代汽车发展的要求。为了寻求保证设计质量、加快设计速度、避免和减少设计失误的方法和措施,引发了“汽车现代设计方法”的研究。 1现代设计和传统设计的比较 传统的设计方法是以经验总结为基础,运用力学和数学而形成的经验、公式、图表、设计手册等作为设计的依据,通过经验公式、近似系数或类比等方法进行设计。而现代设计方法则是强调创造性,在注重产品整体功能基础上以现代设计方法和计算机设计为工具的系统设计。这种设计不但可以大大提高设计的质量、精度和效率,而且可以将产品的适应性、经济性、可靠性统一起来,从而高效地设计出性能优良、经济效益显著的新型产品。目前,设计方法和技术正处于不断改善、不断创造的历史时期。可以预见,新的汽车产品将随着现代设计方法、技术和设计科学体系的完善而有新的突破。 2现代设计法的主要内容 现代设计法是在总结传统设计的经验与教训、吸收国外各设计流派的先进内容的基础上,以形态学为分类手段,以方法学为思想指导,具体形成以下十一论: 功能论:现代设计法的宗旨。是保证设计要求功能实现的方法论。 突变论:现代设计法的基石。是设计创新的基础,如创造性设计。 系统论:现代设计工作的前提。进行系统辩识、系统分析,如系统分析法、人机工程等。 信息论:现代设计的依据。进行信号处理,如信息分析法、技术预测法等。 对应论:现代设计的捷径。采用相似、模拟,如相似设计等。 优化论:现代设计的目标。如优化设计等。 智能论;现代设计的核心。发挥人的主动性,使用人工智能,促进设计自动化,如CAD等。 离散论:现代设计的细解。连续体离散求数值解,如有限元和边界元方法。 控制论:现代设计的深化。如动态分析设计法等。 模糊论:现代设计的发展。模糊性定量描述,如模糊综合评判和决策等。 艺术论:现代设计的美感。如造型设计等。

中科院陈玉福计算机算法设计与分析期末简答题答案

1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法,均有局部最优解来推导全局最优解 区别:贪心算法中,作出的每步贪心决策都无法改变,每一步的最优解一定包含上一步的 最优解,而上一部之前的最优解则不作保留。 动态优化算法,全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解 动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式时间,从而获得较高的解题效率。但它需要计算之前所有情况花费,更加耗费空间。 贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编 码和执行过程中都有一定的速度优势。贪心算法是只是找局部最优解,不一定是全局最优解。 2. 试比较回溯法与分枝限界算法,分别谈谈这两个算法比较适合的问题? 二者都是在解空间树里搜索问题的可靠解或最优解,但是搜索的方式不同,回溯法采用深 度优先的方式,直到达到问题的一个可行解,或经判断沿此路径不会达到问题的可行解或最优解时,停止向前搜索,并沿原路返回到该路径上最后一个还可扩展的节点,然后,从该节点出发朝新的方向纵深搜索。分枝限界法采用的是宽度优先的方式,它将活节点存放在一个特殊的表中,其策略是,在扩展节点处,首先生成其所有的儿子节点,将那些导致不可行解或导致非最优解的儿子节点舍弃,其余儿子节点加入活节点表中,然后,从活节点中取出一个节点作为当前扩展节点,重复上述节点中扩展过程。可以看出,回溯法一般用于求问题的一个可行解,而分枝限界可以用于求出问题的所有可行解。 3. 何谓最优化原理?采用动态规划算法必须满足的条件是什么?动态规划算法是通过什 么问题的什么特性提高效率的? 一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。最优子结构性质,子问题重叠性质是计算模型采用动态规划算法求解的两个基本要素。 动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式时间,从而获得较高的解题效率 4. 什么是多项式时间算法? 若存在一个常数C,使得对于所有n>=0,都有|f(n)| <= C*|g(n)|,则称函数f(n)是O(g(n))。时间复杂度是O(p(n))的算法称为多项式时间算法,这里p(n)是关于n的多项式。 时间复杂度为O(nlog(n))、O(n^3)的算法都是多项式时间算法,时间复杂度为O(n^log(n))、O(n!)、O(2^n)的算法是指数时间算法。 一个优化问题如果已经找到了多项式时间算法,则称该问题为多项式时间可解问题,并 将这类问题的集合记为P,因此多项式时间可解问题就称为P类问题。。

算法设计和分析课程论文

理工学院课程论文 论文题目贪心法的应用 课程名称算法设计与分析 姓名学号 专业计算机科学与技术年级 学院计算机日期(2014年4月10日) 课程论文评价标准

贪心法的应用 摘要:在解决问题的过程中,通过逐步获得最优解从而获得整体最优解的策略就是贪心策略,在已经学会在解的围可以确定的情况下,可以采用枚举或递归策略,一一比较它们最后找到最优解;但当解的围非常大时,枚举和递归的效率会非常低。这时就可以考虑用贪心策略。贪心算法没有固定的框架,算法设计的关键是贪心策略的选择,贪心策略要具有无后向性,即某阶段状态一旦确定以后,不受这个状态以后的策略的影响。当一个问题有好几种解决方法时,贪心法应该是最好的选择之一。本文讲述了贪心算法的含义、基本思路以及贪心算法在实例中的应用。 关键词:贪心算法;删数问题;最小生成树 一、引言 在平时解决问题的过程中,当一个问题就有无后向性和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解。它所做的每一个选择都是当前状态下就有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化解为一个更小的与原问题具有相同形式的子问题。尽管贪心算法对于很多问题不能总是产生整体最优解,但对于最短路径、最小生成树问题,以及删数问题等却可以获得整体最优解,而且所给出的算法一般比动态规划算法更为简单、直观和高效。 二、贪心算法的含义和特点 (一)贪心算法的含义 贪心算法是通过一系列的选择来得到问题解的过程。贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最有的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。 (二)贪心算法的特点

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

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算法的思想。

现代设计方法3000字总结

现代设计方法 现代设计方法是随着当代科学技术的飞速发展和计算机技术的广泛应用而在设计领域发展起来的一门新兴的多元交叉学科。以满足市场产品的质量、性能、时间、成本、价格综合效益最优为目的,以计算机辅助设计技术为主体,以知识为依托,以多种科学方法及技术为手段,研究、改进、创造产品和工艺等活动过程所用到的技术和知识群体的总称。 现代设计方法有:并行设计、虚拟设计、绿色设计、可靠性设计、智能优化设计、计算机辅助设计、动态设计、模块化设计、计算机仿真设计、人机学设计、摩擦学设计、反求设计、疲劳设计。 一、并行设计 并行设计是一种对产品及其相关过程(包括设计制造过程和相关的支持过程)进行并行和集成设计的系统化工作模式。强调产品开发人员一开始就考虑产品从概念设计到消亡的整个生命周期里的所有相关因素的影响,把一切可能产生的错误、矛盾和冲突尽可能及早地发现和解决,以缩短产品开发周期、降低产品成本、提高产品质量。 二、虚拟设计 在达到产品并行的目的以后,为了使产品一次设计成功,减少反复,往往会采用仿真技术,而对机电产品模型的建立和仿真又属于是虚拟设计的范畴。所谓的虚拟制造(也叫拟实制造)指的是利用仿真技术、信息技术、计算机技术和现实制造活动中的人、物、信息及制造过程进行全面的仿真,发现制造过程中可能出现的问题,在真实制造以前,解决这些问题,以缩减产品上市的时间,降低产品开发、制造成本,并提高产品的市场竞争力。 三、绿色设计 绿色设计是指以环境资源保护为核心概念的设计过程,其基本思想就是在设计阶段就将环境因素和预防污染的措施纳人产品设计之中,将环境性能作为产品的设计目标和出发点,力求使产品对环境的影响为最小。 产品设计的基本流程为:市场调研--草图构思--方案设计。 四、可靠性设计 机电产品的可靠性设计可定义为:产品在规定的条件下和规定的时间内,完成规定功能的能力。可靠性设计是以概率论为数学基础,从统计学的角度去观察偶然事件,并从偶然事件中找出其某些必然发生的规律,而这些规律一般反映了在随机变量与随机变量发生的可能性(概率)之间的关系。用来描述这种关系的模型很多,如正态分布模型、指数分布模和威尔分布模型。 五、智能优化设计 随着与机电一体化相关技术不断的发展,以及机电一体化技术的广泛使用,我们面临的将是越来越复杂的机电系统。解决复杂系统的出路在于使用智能优化的设计手段。智能优化设计突破了传统的优化设计的局限,它更强调人工智能在优化设计中的作用。智能优化设计应该以计算机为实现手段,与控制论、信息论、决策论相结合,使现代机电产品具有自学习、自组织、自适应的能力,其创造性在于借助三维图形,智能化软件和多媒体工具等对产品进行开发设计。 六、计算机辅助设计 机械计算机辅助设计(机械CAD)技术,是在一定的计算机辅助设计平台上,对所设计的机械零、部件,输入要达到的技术参数,由计算机进行强度,刚度,稳定性校核,然后输出标准的机械图纸,简化了大量人工计算及绘图,效率比人工提高几十倍甚至更多。 七、动态设计 动态设计法是在计算参数难以准确确定、设计理论和方法带有经验性和类比性时,根据施工

算法设计与分析试卷(2010)

算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: B 、D A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? C 、D A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: ABCD A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: C A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

算法设计与分析试卷(2010)

内部资料,转载请注明出处,谢谢合作。 算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

现代设计理论与方法论文

现代设计理论与方法 班级:材控1031 姓名:黄加全 学号:201020607157

反求工程技术 20世纪以来,由于科学和技术的发展与进步,对设计的基础理论研究得到加强,对着设计经验的积累,以及设计和工艺的结合,已经形成了一套半经验半理论的设计方法。依据这套设计方法进行机电产品设计,称为传统设计。 限于历史和科学发展的原因,传统设计方法基本上是一种以静态分析、近似计算、经验设计、手工劳动为特征的设计方法。显然,随着现代科学技术的飞速发展,生产技术的需要和市场的激烈竞争,以及先进设计科学技术的手段的出现,这种传统设计方法已经很难满足当今时代的需要,从而迫使设计领域不断研究和发展新的设计方法和技术。 现代设计是过去长期的传统设计活动的延伸和发展,它继承了传统设计的精华,吸收了当代科技成果和计算机技术。与传统设计相比,它则是一种以动态分析、精确计算、优化设计和CAD为特征的设计方法。 从20世纪60年代末开始,设计领域中就开始相继出现一系列新兴理论与方法。为了区别过去常用的传统设计理论与方法,把这些新兴的理论与方法称之为现代设计。现代设计理论与方法的内容众多而丰富,它们是功能论、优化论、离散论、对应论、艺术论、系统论、信息论控制论、突变论、智能论和模糊论等方法学构成。 现代设计方法包括可靠性设计方法、化设计方法、并行设计、虚拟设计、绿色设计、动态设计等,这里重点介绍反求工程设计。 1.反求工程技术的基本概述 反求工程(Reverse Engineering,简称:ER) 也称逆向工程,就是针对消化吸收先进技术的系列分析方法和应用技术的综合的一项新技术。反求工程类似

计算机算法设计与分析期末考试复习题

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 )。

算法分析与设计论文[精品文档]

算法设计与分析论文 题目0-1背包问题的算法设计策略对比与分析专业 班级 学号 姓名

引言 对于计算机科学来说,算法(Algorithm)的概念是至关重要的。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。 一个算法应该具有以下五个重要的特征: 有穷性:一个算法必须保证执行有限步之后结束; 确切性:算法的每一步骤必须有确切的定义; 输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件; 输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 计算机科学家尼克劳斯-沃思曾著过一本著名的书《数据结构十算法= 程序》,可见算法在计算机科学界与计算机应用界的地位。

1 算法复杂性分析的方法介绍 算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。 计算机的资源,最重要的是时间和空间(即存储器)资源。因而,算法的复杂性有时间复杂性和空间复杂性之分。 不言而喻,对于任意给定的问题,设计出复杂性尽可能地的算法是我们在设计算法是追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。 关于算法的复杂性,有两个问题要弄清楚:用怎样的一个量来表达一个算法的复杂性;对于给定的一个算法,怎样具体计算它的复杂性。 让我们从比较两对具体算法的效率开始。 1.1比较两对算法的效率 考虑问题1:已知不重复且已经按从小到大排好的m个整数的数组A[1..m](为简单起见。还设m=2 k,k是一个确定的非负整数)。对于给定的整数c,要求寻找一个下标i,使得A[i]=c;若找不到,则返回一个0。 问题1的一个简单的算法是:从头到尾扫描数组A。照此,或者扫到A的第i个分量,经检测满足A[i]=c;或者扫到A的最后一个分量,经检测仍不满足A[i]=c。我们用一个函数Search来表达这个算法: Function Search (c:integer):integer; Var J:integer; Begin J:=1; {初始化} {在还没有到达A的最后一个分量且等于c的分量还没有找到时, 查找下一个分量并且进行检测} While (A[i]

算法设计与分析试卷及答案

湖南科技学院二○年学期期末考试 信息与计算科学专业年级《算法设计与分析》试题 考试类型:开卷试卷类型:C卷考试时量:120分钟 题号一二三四五总分统分人 得分 阅卷人 复查人 一、填空题(每小题3 分,共计30 分) 1、用O、Ω与θ表示函数f与g之间得关系______________________________。 2、算法得时间复杂性为,则算法得时间复杂性得阶为__________________________。 3、快速排序算法得性能取决于______________________________。 4、算法就是_______________________________________________________。 5、在对问题得解空间树进行搜索得方法中,一个活结点最多有一次机会成为活结点得就是_________________________。 6、在算法得三种情况下得复杂性中,可操作性最好且最有实际价值得就是_____情况下得时间复杂性。 7、大Ω符号用来描述增长率得下限,这个下限得阶越___________,结果就越有价值。。 8、____________________________就是问题能用动态规划算法求解得前提。 9、贪心选择性质就是指____________________________________________________________________________________________________________________。 10、回溯法在问题得解空间树中,按______________策略,从根结点出发搜索解空间树。 二、简答题(每小题10分,共计30分) 1、试述回溯法得基本思想及用回溯法解题得步骤。 2、有8个作业{1,2,…,8}要在由2台机器M1与M2组成得流水线上完成加工。每个作业加工得顺序都就是先在M1上加工,然后在M2上加工。M1与M2加工作业i所需得时间分别为: M110 2 8 12 6 9414

现代设计方法论文

直齿轮强度的模糊可靠性设计 课程名称:现代设计方法 姓名: 学号:sssss 班级:ffffff 指导老师:vfffff

齿轮传动的可靠性优化设计 摘要:本文介绍可靠性设计与优化设计有机结合的理论和方法。并对可靠性优化设计如何应用于齿轮传动设计中进行了较详细地讨论,最后通过一个实例说明其实现方 法。 关键词:齿轮传动可靠性设计优化设计 0引言: 作用在零部件上的载荷和材料性能等都不是定值,而是随机变量,具有明显的离散性质,在数学上必须用分布函数来描述,由于载荷和材料性能都是随机变量,所以必须用概率统计的方法求解,可靠性设计认为所设计的任何产品都存在一定的失效可能性,并且可以定量地回答产品在工作中的可靠程度。 传统的机械设计中,很早就存在着“选优”的思想。设计人员可以同时提出几种方案,通过分析评价后,选出较好的方案加以采用,这种选优方案在很大程度上带有经验性,也有他的一定的局限性。而现代设计方法中的优化设计则可以避免以上弊端,充分发挥计算机强大的运算和编程功能,使优化算法与计算机相结合运用于机械设计中。 常规齿轮传动的设计是将齿轮所受载荷、应力和强度都视为定量,按一定的强度条件进行设计或校核,这种常规设计安全系数一般比较保守,不仅造成材料的浪费增加成本,往往由于一个参数的改变,而影响其它参数的确定,并且由于考虑齿轮传动的应力、强度及各几何参数的不确定性,引起的误差与实际不符,也不能保证绝对安全,设计出的齿轮传动质量差、可靠性低、承载能力小。因此,为了使齿轮传动设计既贴近实际工况,又有最优方案,提出将优化设计和可靠性设计理论有机结合起来的设计方法,该方法无论对缩小尺寸、减轻重量提高承载能力和保证设计可靠性均有现实意义,可靠性优化设计能给程界带来了巨大经济效益,随着技术更新和产品竞争的加剧,可靠性优化设计的发展前景非常的广阔。

算法设计与分析课程论文

算法设计与分析课程论文 1.引言 算法设计与分析是数据结构的有力补充,从中可以了解到算法设计的奥妙以及对数据结构中的数据存储结构更深层次的运用。计算机算法设计与分析是面向设计的、处于核心地位的一门学科。算法是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。算法设计是一件非常困难的工作,常用的算法设计方法有:分治法、贪心方法、动态规划、回溯法、分枝-限界法、基本检索与周游方法、遗传算法等。 本文主要对算法设计与分析中的递归算法以及动态规划算法进行了总结、分析以及对具体问题的编程实现。 2.递归算法分析 2.1递归算法简介与特点 递归就是在函数或子过程的内部,直接或间接地调用自己的算法;递归算法是从下往上进行思维,需要对问题有全局的了解;在使用递归算法时,必须至少测试一个可以终止递归的条件,并且还必须对在合理的递归调用次数内未满足此类条件的情况进行处理,如果没有一个在正常情况下可以满足的条件,则过程将陷入执行无限循环的高度危险之中;递归算法的描述非常简洁而易于理解,但因重复计算和较大的堆栈消耗使递归算法的解题的运行效率较低;并不是所有的语言都支持递归,在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,递归次数过多容易造成栈溢出等不利编程的因素,所以一般不提倡用递归算法设计程序。 2.2递归过程 递归过程是直接调用自己或通过一系列的过程调用语句间接调用自己的过程。在一个过程的运行期间调用另一个过程时,在执行被调用过程之前,系统要先把所有的实在参数返回地址等信息传递给被调用的过程保存,为被调用过程的局部变量分配存储空间,将控制转移到被调用入口。接下来从被调过程返回调用过程要保存被调用过程的计算结果,释放被调用过程的数据区,依照被调过程保存的返回地址将控制转移到调用过程。该过程服从后调用先返回的原则。

现代设计方法 论文

现代设计方法论文 机电0902 093260206 赵学龙 摘要:随着以微电子技术为代表现代科学技术的发展,近30年来出现了一批新的设计学科和一系列新的设计理论和设计方法,诸如优化设计、可靠性设计、动态设计、计算机辅助设计,以及设计方法学和有限元分析等。这些方法的发展和应用,使得各个工程领域的设计工作从形式到效果都发生了根本性变化,产生了巨大的经济效益和社会效益。 关键词:微电子技术;设计方法;优化设计;可靠性设计; Abstract: with the development of microelectronics technology as the representative of the development of modern science and technology, for nearly 30 years there has been a number of new design discipline and a series of new design theory and design methods, such as the optimization design, reliability design, dynamic design, computer aided design, and the design method and the finite element analysis. Development and application of these methods, the various fields of engineering design work from the form to the effect produced essential sex to change, produced enormous economic benefits and social benefits. Key words: Microelectronics; design method; optimization design; reliability design; 工程设计和机电产品设计都需要经过调查分析、方案拟定、技术设计、结构设计、试制与实验后的修改完善等设计环节。在传统的设计中,这些环节的工作都是由设计者手工完成的,所用的设计方法大都是基于经验公式和实验数据的类比设计和经验设计。显然,这种设计方法不可能是设计质量有较大提高,而且设计周期一般较长。 现代商品经济的迅速发展,对于工程和产品的性能和质量的要求日益提高。一方面,工程和产品的结构日趋复杂和精密,功能日趋完备和通用;另一方面,工程和产品的更新周期日益缩短,工作可靠性要求日益提高。传统的设计方法已经不能完全满足这一发展的需要。因此这学期我们学习了优化设计和可靠性设计。 优化设计:所谓最优化设计,就是借助最优化数值计算方法和计算机技术,求取工程问题的最优设计方案。进行最优化设计时,首先必须将实际问题加以数学描述,形成一组数学表达式组成的最佳的设计参数。这组设计参数就是设计的最优解。数学模型是对实际问题的数学描述和概括,是进行优化设计的基础,因此,根据设计问题的具体要求和条件建立完备的数学模型是关系优化设计成败的关键。工程设计问题通常是相当复杂的,欲建立便于求解

算法设计与分析期末试题答案解析

1、用计算机求解问题的步骤: 1、问题分析 2、数学模型建立 3、算法设计与选择 4、算法指标 5、算法分析 6、算法实现 7、程序调试 8、结果整理文档编制 2、算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程 3、算法的三要素 1、操作 2、控制结构 3、数据结构 算法具有以下5个属性: 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。 确定性:算法中每一条指令必须有确切的含义。不存在二义性。只有一个入口和一个出口 可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。 输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。 输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。 算法设计的质量指标: 正确性:算法应满足具体问题的需求; 可读性:算法应该好读,以有利于读者对程序的理解;

健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。 效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般这两者与问题的规模有关。 经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法 迭代法 基本思想:迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。 解题步骤:1、确定迭代模型。根据问题描述,分析得出前一个(或几个)值与其下一个值的迭代关系数学模型。 2、建立迭代关系式。迭代关系式就是一个直接或间接地不断由旧值递推出新值的表达式,存储新值的变量称为迭代变量 3、对迭代过程进行控制。确定在什么时候结束迭代过程,这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一

计算机算法设计与分析小论文

计算机算法设计与分析小论文 摘要: 算法是一个系列解决问题的清晰指令,即在有限时间内能够对一定规范的输入,能够得到所需要的输出。如果一个算法本身是有缺陷的!那么他往往不是这个问题的最佳解决方法,可见一个算法的优劣是通过一定的准则来规定的。通过这学期的对《计算机算法分析设计》这门课程的学习让我们充分的了解到了计算机算法的多样性和复杂性,让我们更加细心和耐心的去对待这门课程。例如甲某要去某个地方旅游,他有很多种方案到旅游地,但是不见的每种方案都是合理最优的!这时就是需要考虑透过一定的算法来得到自己的最优路线。所以可见算法就是以最少的成本、最快的速度、最好的质量开发出合适各种各样应用需求的软件,必须遵循软件工程的原则,设计出高效率的程序。一个高效的程序不仅需要编程技巧,更需要合理的数据组织和清晰高效的算法。目前我们将进行常见的算法分析设计策略介绍: 1.递归算法 1.1递归算法介绍: 直接或间接的调用自身的算法称为递归算法。或者说就是用自己来定义自己,不断调用自己的某一种状态。 1.2递归算法满足的条件 (1)递归满足2个条件: 1)有反复执行的过程(调用自身) 2)有跳出反复执行过程的条件(递归出口) 1.3递归例子 递归例子:阶乘问题 n! = n * (n-1) * (n-2) * ...* 1(n>0) //阶乘 intresult(int i) { int sum = 0; if (0 == i) return (1); else sum = i * result(i-1); return sum; }

可见一个递归算法都有一个比较特殊的特点,那就是要先处理一些比较特殊的情况再处理递归关系。如上例中如果是0!的话!那么他的阶乘就是1,所以先处理0!这个特殊情况,然后再调用其他的递归关系得到自己想要的阶乘。比如当我们想要求出4!的结果那么我们就需要调用result(3)的结果而result(3)又要调用result(2)的结果!就这样直到得出答案为止。 在我们日常,递归算法的出现可以帮助我们解决很多问题,正因为它的:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。 2.分治算法 2.1分治算法介绍: 一个分治算法把问题实例划分成若干子实例(多数情况是分成两个),并分别递归地解决每个子实例,然后把这些子实例的解组合起来,得到原问题实例的解。 2.2 分治算法的特性 1)规模小,则很容易解决 2)大问题可以分为若干规模小的相同问题 3)利用子问题的解可以合并成该问题的解 2.3分治算法的遇到问题 为了阐明这个方法,考虑这样一问题:在一个整数组A[1...n]中,同时寻找最大值和最小值。下面我们来看一下用分治策略:将数组分割成两半,A[1...n/2]和A[(n/2)+1...n],在每一半中找到最大值和最小值,并返回这两个最小值中的最小值及这两个最大值中的最大值。 过程 Min-Max ⅰ输入 n个整数元素的数组A[1...n]n为2的幂 ⅱ输出 (x,y), A中的最大元素和最小元素

相关文档
最新文档