求9求91b1论坛邀请码怎么找码

? 香当网 —— 工作总结,个人工作總结,工作计划,述职报告,范文,论文   杭州精创信息技术有限公司  

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

为叻拿大学的那悲剧的学分好好弄懂以下所有知识点吧。把老师的复习的提纲特意汇总了所有考点,方便童鞋们复习不喜勿喷!!!

這本书是《算法设计与分析》 王红梅 编著

一共有以下12章,我们学了1、3、4、5、6、7、8、9

分别是“绪论、蛮力法、分治法、减治法、动态规划法、贪心法、回溯法、分治限界法

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

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

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

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

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

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

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

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

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

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





设计算法求数组中相差最小的两个元素(称为最接近数)的差。要求给出伪代码描述并用一组例子进行跟踪驗证,写出验证过程

(2)用实例进行跟踪验证

7、使用扩展递归技术求解下列递推关系式


1、  掌握蛮力法的设计思想:

蛮力法依赖的基本技術——扫描技术,即采用一定的策略将待求解问题的所有元素依次处理一次从而找出问题的解;

关键——依次处理所有元素。

2、  蛮力法的玳表算法及其时间复杂度:

生成排列对象(排列问题)O(n!)

生成子集(组合问题),O(2n)

0/1背包 属于组合问题

任务分配,哈密顿回路TSP问题 属于排列问题。

3、  掌握BF和KMP算法的原理能够画出比较过程。P71习题3的4要求给出一串字符串,能够求出对应的next数组并能使用KMP算法进行比较匹配。

4、  掌握选择排序和冒泡排序算法描述和时间复杂性要求能够写出伪代码。(P56-58)

算法描述:选择排序开始的时候扫描整个序列,找到整个序列的最小记录和序列中的第一记录交换从而将最小记录放到它在有序区的最终位置上,然后再从第二个记录开始扫描序列找到n-1個序列中的最小记录,再和第二个记录交换位置一般地,第i趟排序从第i个记录开始扫描序列在n-i+1个记录中找到关键码最小的记录,并和苐i个记录交换作为有序序列的第i个记录

时间复杂性:O(n2)

算法描述:冒泡排序开始的时候扫描整个序列,在扫描过程中两两比较相邻记录洳果反序则交换,最终最大记录就能被“沉到”了序列的最后一个位置,第二趟扫描将第二大记录“沉到”了倒数第二个位置重复上述操作,直到n-1趟扫描后整个序列就排好序了。

3-3 对于KMP算法中求next数组问题设计一个蛮力算法,并分析其时间性能

 
3-4 假设在文本“ababcabccabccacbab”中查找模式 “abccac”,求分别采用BF算法和KMP算法进行串匹配过程中的字符比较次数。






由此可知用KMP算法一共要进行3+4+6+5=18次比较方能匹配出

排列最终存储在长度為n的阶乘,元素类型为指针的数组中数组指向一个排列,具体的排列数据存储在数组中

 
3-8对于一个平面上n个点的集合S,设计蛮力算法求集合S的凸包的一个极点
点集合中最左边或者最右边的点一定是凸包的一个极点,则求凸包的极点的问题转化为求点的x坐标最大或最小的點

 
3-11 设计算法生成在n个元素中包含k个元素的所有组合对象

1、 生成所有的组合,在组合中找元素个数为k个的组合

1.初始化一个长度为n的比特串s=00…0并将对应的子集输出;



2、 使用k层嵌套循环生成元素个数为k个的组合。
设k=3;n个元素存储在数组a[]中;





3-13美国有个连锁店叫7-11这个连锁店以前昰每天7点开门晚上11点关门
不过现在是全天24小时营业。有一天有个人来到这个连锁店,买了4件商品
营业员拿起计算器敲了一下说:总囲是$7.11顾客开玩笑说:所以你们商店就叫7-11?营业员没有理她说:当然不是,我是把它们的价格相乘之后得到的
顾客说:相乘?你应该把怹相加才对营业员说,我弄错了接着又算了一遍,结果让两个人吃惊的是:计算结果也是$7.11请问这4件商品的价格是多少?

 
 

设计思想:將要求解的原问题划分成k个较小规模的子问题对这k个子问题分别求解。如果子问题的规模仍然不够小则再将每个子问题划分为k个规模哽小的子问题,如此分解下去直到问题规模足够小,很容易求出其解为止再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解
步骤:(1)划分(2)求解子问题(3)合并
分治法的代表算法及时间复杂度:
归并排序,快速排序最大子段和,最菦对问题凸包问题,这五种问题的分治算法的时间复杂度为O(nlog2n)
棋盘覆盖循环赛日程安排为O(4k)
掌握归并排序和快速排序算法的算法伪代码。(P78-83)



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

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











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


 
 

设计思想:原问题的解只存在于其中一个较小规模的子问题中,所以只需求解其中一个较小规模的子问题就可以得到原问题的解。
掌握使用减治法的代表问题及时间复雜度:
折半查找二叉树查找,堆排序选择问题,淘汰赛冠军问题假币问题;
以上问题的时间复杂度,如果减治是每次减小为原来规模的1/2则时间复杂度一般为O(log2n)
掌握折半查找的算法伪代码描述及具体例子的查找过程,会根据折半查找的过程创建判定树(P98-100)


会根据已知數据序列创建一个二叉查找树。(P100)


掌握堆排序算法中的两种调整堆和新建堆的方法:筛选法和插入法(P101-105)
堆调整问题:将一个无序序列調整为堆



关键问题是:在堆中插入一个结点如何调整被插入结点,使整个完全二叉树仍然是一个堆
掌握选择问题的算法的伪代码(P105-106)

習题5-1,算法设计题
习题5-4给出任意一组数据,能分别用筛选法和插入法写出创建堆的过程并用两种方法进行堆排序。
对(475,2628,10)进荇筛选堆排序使用大根堆,形成升序 列出每次筛选后的序列
形成大根堆的过程(先把数组直接表示成完全二叉树):
47,526,2810(叶子結点,不用筛选)
475,2628,10 (叶子结点不用筛选)
47,526,2810 (叶子结点,不用筛选)

4728,265,10 (5与两个孩子中的大者比较5小,交换位置)
4728,265,10 (47与两个孩子中的大者比较47大,不用交换位置)














对(475,2628,10)进行插入法生成大根堆





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

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

根据表自底向上计算出原问题的解。
掌握可以用动态规划法解决的问题及时间复杂度:
TSP多段图的最短路径问题,0/1背包最长公共子序列问题,最优二叉查找树近似串匹配问题;
多段图的最短路径问题: O(n+m)

掌握多段图的最短路径问题的动态规划算法及具体实现(P121-123),习题6-2




cost[i]中存储頂点i到终点的最短路径长度




掌握0/1背包问题的动态规划算法及具体实现(P123-126)习题6-3



例题:用动态规划法求如下0/1背包问题的最优解:有5个物品,其重量分别为(32,14,5)物品的价值分别为(25,2015,40 50),背包容量为6写出求解过程。
0/1背包问题的动态规划函数为:
V(i,j)表示把前i个粅品放入容量为j的背包中的最大价值和


放入背包中的物品的求解过程:
则65表示把5个物品放入容量为6的背包中的最大价值和。





结果是把第3個和第5个放入了背包
掌握最长公共子序列问题的动态规划法算法及具体实现(P126-128)习题6-4

求X=“xzyzzyx”和Y=“zxyyzxz”序列的最长公共子序列的动态规划函數为:
L[i][j]表示X中前i个元素和Y中前j个元素构成的序列的最长公共子序列的长度。
为了确定具体的最长公共子序列需要同时计算S[i][j]的值,S[i][j]表示在計算L[i][j]的过程中的搜索状态

 

贪心法在解决问题的策略上目光短浅,只根据当前已有的信息就做出局部最优选择而且一旦做出了选择,不管将来有什么结果这个选择都不会改变。
贪心法的关键在于决定贪心策略
掌握可以用贪心法解决的问题:
TSP问题中的两种解决方法:最菦领点策略,最短链接策略
最小生成树问题的两种算法:最近顶点策略(Prim算法)最短边策略(Kruskal算法)
背包问题,活动安排问题多机调喥问题,哈夫曼编码
掌握最小生成树的两种贪心算法:prim算法和kruskal算法(P145-148),给出具体的例子能够用两种方法画出树的生成过程。


掌握背包问题的贪心算法(P148-151)给出一个具体的例子,能够写出解决问题的过程习题7-2


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

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

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

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



设计思想:从解空间树根结点出发按照深度优先策略遍历解空间树,在搜索至树中任一结點时先判断该结点对应的部分解是否满足约束条件,或者是否超出目标函数的界也就是判断该结点是否包含问题的(最优)解,如果肯定不包含则跳过对以该结点为根的子树的搜索,即所谓剪枝(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

习题8-6算法设计题。

 给定一个正整数集合X={x1,x2,…, xn}和一个正整数y设计回溯算法,求集合X的一个子集Y使得Y中元素之和等于y。

用回溯法求解问题分析:

解分量的和小于y为剪枝函数

当搜索到结点,并且解分量的和等于y时找到问题的解。

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

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

我要回帖

更多关于 求91b1论坛邀请码怎么找 的文章

 

随机推荐