算法分析与设计知识点总结修改版文档格式.docx
《算法分析与设计知识点总结修改版文档格式.docx》由会员分享,可在线阅读,更多相关《算法分析与设计知识点总结修改版文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
程序是算法用某种程序设计语言的具体实现;
程序可以不满足算法的有限性性质。
算法描述方式:
自然语言,流程图,伪代码,高级语言。
算法复杂性分析:
算法复杂性的高低体现运行该算法所需计算机资源(时间,空间)的多少。
算法复杂性度量:
期望反映算法本身性能,与环境无关。
理论上不能用算法在机器上真正的运行开销作为标准(硬件性能、代码质量影响)。
一般是针对问题选择基本运算和基本存储单位,用算法针对基本运算与基本存储单位的开销作为标准。
算法复杂性C依赖于问题规模N、算法输入I和算法本身A。
即C=F(N,I,A)。
第二章递归与分治
分治法的基本思想:
求解问题算法的复杂性一般都与问题规模相关,问题规模越小越容易处理。
分治法的基本思想是,将一个难以直接解决的大问题,分解为规模较小的相同子问题,直至这些子问题容易直接求解,并且可以利用这些子问题的解求出原问题的解。
各个击破,分而治之。
分治法产生的子问题一般是原问题的较小模式,这就为使用递归技术提供了方便。
递归是分治法中最常用的技术。
使子问题规模大致相等的做法是出自一种平衡(balancing)子问题的思想,它几乎总是比子问题规模不等的做法要好。
分治法所能解决的问题一般具有以下几个特征:
该问题的规模缩小到一定的程度就可以容易地解决;
该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;
利用该问题分解出的子问题的解可以合并为该问题的解;
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
(这条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然也可用分治法,但一般用动态规划较好。
)
递归的概念:
直接或间接地调用自身的算法称为递归算法,用函数自身给出定义的函数称为递归函数。
反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。
这自然导致递归过程的产生。
边界条件与递归方程是递归函数的二个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果。
第三章动态规划
动态规划的基本思想:
动态规划算法与分治法类似,其思想把求解的问题分成许多阶段或多个子问题,然后按顺序求解各子问题。
最后一个阶段或子问题的解就是初始问题的解。
分治法求解时,子问题数目太多,从而导致解决原问题需要耗费指数级时间。
与分治法不同的是,动态规划中分解得到的子问题往往不是互相独立的。
但不同子问题的数目常常只有多项式级。
用分治法求解时,有些子问题被重复计算了许多次。
动态规划的适用条件:
动态规划法解所能解决的问题一般具有以下两个基本因素:
一、最优子结构性质
当问题的最优解包含着其子问题的最优解时,称该问题具有最优子结构性质。
二、重叠子问题性质
递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次。
这种性质称为子问题的重叠性质。
其它同分治法。
动态规划问题的特征:
求解的问题是组合优化问题;
求解过程需要多步判断,从小到大依次求解;
子问题目标函数最优解之间存在依赖关系;
动态规划算法设计的基本步骤和要素:
基本步骤:
(1)找出最优解的性质,并刻画其结构特征。
(考察是否适合采用动态规划法。
(2)递归地定义最优值。
(建立递归式或动态规划方程)
(3)以自底向上的方式(或以自顶向下的备忘录方法)计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
要素:
最优子结构
重叠子问题
备忘录(表格)
应用实例分析:
1、矩阵连乘问题:
(1)分析最优解结构:
计算A[i:
j]的最优次序所包含的计算矩阵子链A[i:
k]和A[k+1:
j]的次序也是最优的。
矩阵连乘计算次序问题的最优解包含着其子问题的最优解,满足最优子结构性质。
问题的最优子结构性质是该问题可用动态规划算法求解的显著特征。
(2)建立递归关系;
(3)计算最优值—递归求解(递归求解最优值复杂度较高的原因是:
子问题重复度高);
计算最优值—迭代查表求解
计算最优值—备忘录求解
(4)构造最优解
第四章贪心法
贪心算法的基本思想:
当一个问题具有最优子结构性质时,可用动态规划方法求解,但有时会有更简单有效的方法。
顾名思义,贪心算法总是作出在当前看来最好的选择。
也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。
贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。
在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。
贪心算法中,较大子问题的解恰好包含了较小子问题的解作为子集,这与动态规划算法设计中的优化原则本质上是一致的。
动态规划算法在某一步决定优化函数的最大或最小值时,需要考虑到它的所有子问题的优化函数值,然后从中选出最优的结果;
贪心算法的每步判断时,不考虑子问题的计算结果,而是根据当时情况采取“只顾眼前”的贪心策略决定取舍。
贪心算法的设计要素:
可以用贪心算法求解的问题一般具有2个重要的性质:
1、最优子结构性质:
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征
2、贪心选择性质:
贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。
这是贪心算法与动态规划算法的主要区别。
动态规划算法通常以自底向上的方式求解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。
对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。
应用实例:
1、活动安排问题:
第五章回溯法
回溯法的基本思想:
回溯法的使用条件:
回溯法适用于搜索问题和优化问题。
回溯法的设计要素:
针对问题定义解空间:
问题解向量
解向量分量取值集合
构造解空间树
两类典型的解空间树:
子集树:
当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间树称为子集树。
子集树通常有2n个叶结点
排列树:
当所给的问题是确定n个元素满足某种性质的排列时,相应的解空间树称为排列树。
排列树通常有n!
个叶结点。
判断问题是否满足多米诺性质。
搜索解空间树,确定剪枝函数。
确定存储搜索路径的数据结构。
第六章分支限界法
分支限界法的基本思想:
分支界限法类似与回溯法,也是在问题解空间中搜索问题解的一种算法。
分支界限法与回溯法思想对比:
求解目标:
回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。
搜索方式的不同:
回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。
在分支限界法中,每一个活结点只有一次机会成为扩展结点。
活结点一旦成为扩展结点,就一次性产生其所有儿子结点。
在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。
这个过程一直持续到找到所需的解或活结点表为空时为止。
常见的两种分支界限法:
队列式(FIFO)分支限界法:
按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。
优先队列式分支限界法:
按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。
最大堆:
最大效益优先
最小堆:
最小耗费优先
第二篇:
算法设计与分析试题1
演讲稿工作总结调研报告讲话稿事迹材料心得体会策划方案
算法设计与分析试题1
一、单选题(每题2分,共40分)
1、0518号台风“达维”过后,要对各个单位捐款救灾情况进行分组制表,并进行积分排序,一般使用的专业电子处理软件有(B)
A、powerpoingB、ExcelC、WordD、VisualBasic
2、一位爱好程序设计的同学,想通过程序设计解决“韩信点兵”的问题,他制定的如下工作过程中,更恰当的是(C)
A、设计算法,编写程序,提出问题,运行程序,得到答案
B、分析问题,编写程序,设计算法,运行程序,得到答案
C、分析问题,设计算法,编写程序,运行程序,得到答案
D、设计算法,提出问题,编写程序,运行程序,得到答案
3、交通警察到达案发现场,一般按照下列哪种思路开展工作(D)
①观察、分析现场②收集必要的信息③进行判断、推理④按一定的方法和步骤解决
A、②①③④B、①③②④C、③①②④D、①②③④
4、下面说法正确的是(A)
A、算法+数据结构=程序B、算法就是程序
C、数据结构就是程序D、算法包括数据结构
5、下列常量说明中,符合语法的是(D)
A、CONSTcolor=redB、CONSTconst=10*5
C、CONSTxl:
=3.9;
D、CONSTcolor=”abcd”
精心收集
精心编辑
精致阅读
如需请下载!
6、VB中将两个字符串连接起来的运算符有:
+和&
,那么“123”+45结果是(A)
A、168B、12345C、”123”D、45
7、字符串”ABCD”和字符串”DCBA”进行比较,如果让比较的结果为真,应选用关系运算符(B)
A、>
B、<
C、=D、>
=
8、设a,b,c,d,e均为整型变量,且a=13,b=2,c=10,d=3,e=2,则表达式“a-b*c\dMODe”的值是(A)
A、13B、-7C、llD、0
9、已知A,B,C,D是简单变量,且都已有互不相同的值,执行语句B=8;
A=C;
D=A;
D=B;
后,其值相等的变量是(B)
A、A,DB、A,CC、C,BD、B,A
10、结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构(B)
A、顺序结构B、输入、输出结构C、选择结构D、循环结构
11、下列结果为真的关系表达式是(C)
A、”A”8D、5
12、以下运算符中运算优先级最高的是(D)
A、+B、ORC、>
D、\
13、整除运算时,若运算量为实数,则先取整,后相除,结果为整型或长整型。
下列哪种是整除运算符(D)
A、+B、ModC、/D、\
14、VB结束程序的运行可以单击程序窗体的“关闭”按钮,或单击VB工具栏上的“结果”按钮,哪种是“结束”按钮(B)
A、B、C、D、
15、图标控件属于哪种基本控件(B)
A、标签B、文本框C、按钮D、图像
16、要交换变量A和B之值,应使用的语句组是(B)
A