算法设计与分析期末备考知识点总结.docVIP

算法设计与分析期末备考知识点总结.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

通俗地讲,算法是解决问题的方法,严格地说,算法是对特定问题求解环节的一个描述,是指令的有限序列.

算法还必须满足一下五个重要特征:输入、输出、有穷性、拟定性、可行性.

程序(Program)是对一个算法使用某种程序设计语言的具体实现,原则上,算法可以用任何一个程序设计语言来实现。

什么是算法的计算复杂性?

算法分析指的是对算法所需要的两种计算机资源——时间和空间(时间复杂性和空间复杂性进行估算,所需要的资源越多,该算法的复杂性就越高.

表达计算复杂性的O你掌握了?

若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))(或称算法在O(f(n))中)。

我们重要简介了哪几种算法设计方法?

分治法:将一个难以直接解决的大问题,分割成某些规模较小的子问题,以便各个击破,分而治之。

减治法:减治法在将原问题分解为若干个子问题后,运用了规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间的关系,这种关系通常体现为:

(1)原问题的解只存在于其中一个较小规模的子问题中;

(2)原问题的解与其中一个较小规模的解之间存在某种相应关系。

因为原问题的解与较小规模的子问题的解之间存在这种关系,所以,只需求解其中一个较小规模的子问题就可以得到原问题的解.

动态规划法、贪心算法、回溯算法、概率

RAM程序

分治法——-—-—合并排序

设算法4。3对n个元素排序的时间复杂性为T(n),则该二路归并排序算法存在如下递推式:

二路归并排序的时间代价是O(nlog2n)。

所需空间只要O(m+n+min(m,n))的空间就够了(假设两个合并串的长度分别为m和n)。

分治法—-——--迅速排序

在最正确情况下在具备n个记录的序列中,一次划分需要对整个待划分序列扫描一遍,则所需时间为O(n).时间复杂度为O(nlog2n)。

在最坏情况下必须经过n—1次递归调用才能把全部记录定位,而且第i趟划分需要经过n—i次关键码的比较才能找到第i个记录的基准位置,所以,总的比较次数为:

时间复杂度为O(n2)

分治法-—--—-最大子段

递推式:算法时间复杂度:O(nlog2n)

分治法—-—--—棋盘覆盖问题

T(k)满足如下递推式:

分治法-—————循环赛曰安排问题

基本语句的执行次数是:

算法的其时间复杂性为O(4k)。

顺序记录问题:

算法1找出n个元素中的第k个最小元素

输入:从一个有线性序的集合中抽出的n个元素的序列S及一个整数k,1≤k≤n。

输出:S中的第k个最小元素

算法2

算法2的盼望时间是O(n).最坏情况O(n2)

减治——-—-插入排序(手工题)

堆的概念:

n个元素的序列{K1,K2,….。Kn},当且仅当满足

动态规划求解TSP问题

注:用动态规划解决TSP问题,算法的时间复杂性为O(n22n)。和蛮力法相比,动态规划法求解TSP问题,把原来的时间复杂性是O(n!)的排列问题,转化为组合问题,从而降低了算法的时间复杂性,但它仍需要指数时间.但遗憾的是这一动态规划算法需要O(n2n)的空间。当n较大时,空间难以满足.

多段图的最短途径算法:

1.For(i=1;i〈=n;i++)

COST[i]=0;初始化:数组cost[n]初始化为最大值,数组path[n]初始化为-1;

2.for(i=n—2;i>=0;i-—)

2.1对顶点i的每一个邻接点j,依照

cost[i]=min{cij+cost[j]}(i≤j≤n且顶点j是顶点i的邻接点)计算cost[i];

2.2依照path[i]=使cij+cost[j]最小的j计算path[i];

3.输出最短途径长度cost[0];

4。输出最短途径经过的顶点:

4。1i=0

4。2循环直到path[i]=n—1

4.2.1输出path[i];

4.2.2i=path[i];

最优二叉查找树算法:

最优二叉查找树是以这n个记录构成的二叉查找树中具备至少平均比较次数的二叉查找树,即最小,i=1n

回溯法—--—解空间树的动态搜索过程

注:搜索过程中,采取两种策略防止无效搜索:

用约束条件剪去得不到可行解的子树;

用目标函数剪去得不到最优解的子树。

例一:对于n=3的0/1背包问题,三个物品的重量为{20,15,10},价值为{20,30,25},背包容量为25,从图8。2所表达的解空间树的根结点开始搜索,搜索过程如下:

(注:树枝左侧为1,右侧为0,1代表装包,0代表不装包,从上到下每一层代表一个物体)

例二:对于n=4的TSP问题,解空间树如下:代价矩阵C如下:

目标函数初始化为∞;

从结点1选择第1棵子树到结点2,表达在图中从顶点1出发;

从结点2选择第1棵子树到达结点3,表

文档评论(0)

wind2013 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档